no puedo empezar este post de otra forma
ODIO lxc
en realidad no lo odio, pero las diferencias entre la version 2.x y la 3.x (en produccion 2.x y en mi lab 3.x) me dan mas de un dolor de cabeza
Para esta ocasion haremos la configuracion con un ubuntu 18.04 LTS como sistema base, LXC 3.0.3 y netplan (que tambien lo odie xD)
Round 1 yo v/s netplan
Empezaremos por la configuracion de netplan la cual se almacena en el directorio /etc/netplan/*.yaml
(como consejo cuidado con los espacios, muuuuucho cuidado)
Una cosa que me gusto de netplan es que todas las configuraciones las puedo separar por interfaz, por lo que en mi caso quedo de esta forma
pueden obtener ejemplos de este link
y la documentacion completa aca
root@ubuntu01:~# ls /etc/netplan/
50-ens18.yaml 60-br0.yaml
los archivos de configuracion se van cargando de menor a mayor por lo que si invertimos la numeracion (50-br0.yaml 60-ens18.yaml) nos va a entregar un error ya que aun no conoce la configuracion de la interfaz ens18 (un error asi)
Error in network definition /etc/netplan/50-br0.yaml line 9 column 16: br0: interface ens18 is not defined
root@ubuntu01:/etc/netplan# more 50-ens18.yaml
network:
version: 2
ethernets:
ens18:
dhcp4: true
root@ubuntu01:/etc/netplan# more 60-br0.yaml
network:
version: 2
bridges:
br0:
interfaces: [ens18]
addresses: [192.168.55.201/24]
gateway4: 192.168.55.1
nameservers:
addresses: [208.67.222.222,8.8.8.8]
Tambien sera valido de esta otra forma:
root@ubuntu01:/etc/netplan# cat 61-br0.yaml
network:
version: 2
bridges:
br0:
interfaces:
– ens18
addresses:
– 192.168.55.201/24
gateway4: 192.168.55.1
nameservers:
addresses:
– 208.67.222.222
– 8.8.8.8
una vez con los 2 archivos usamos el comando netplan generate el cual nos dira si hay algun error y «donde» (la verdad rara vez me funciono que me haya mostrado la linea correcta), esta es la parte mas critica del proceso ya que puede ser muy dificil encontrar el error, a veces siendo tema solo de un espacio mal colocado.
ya superando esta traba basta aplicar un
netplan apply
para tener lista la nueva configuracion y podemos verificarla con el clasico ifconfig o el nuevo ip addr show o ip link show
Ahora la segunda pelea, LXC
Aca la cosa se vuelve mas simple tenemos que editar el archivo de configuracion del contenedor que se encuentra en /var/lib/lxc/»nombre container»/config
para mi caso /var/lib/lxc/frontend/config (nombre del contenedor frontend)
y agregar
«lxc.net.X.type = veth
lxc.net.X.link = Y
lxc.net.X.flags = up
lxc.net.X.hwaddr = <mac>
lxc.start.auto = 1″
reemplazar la «X» por el numero de interfaz a añadir (en mi caso 1, ya que la 0 es la que trae por defecto), la «Y» por la interfaz que hayan usado y la <mac> por una de su agrado
en mi caso queda asi
lxc.net.1.type = veth
lxc.net.1.link = br0
lxc.net.1.flags = up
lxc.net.1.hwaddr = 00:16:33:94:4d:39
lxc.start.auto = 1
finalmente para que los cambios surtan efecto realice un reinicio del contenedor en cuestion
root@ubuntu01:/etc/netplan# lxc-stop frontend
root@ubuntu01:/etc/netplan# lxc-start frontend
ya con eso tenemos disponible la nueva interfaz en el contenedor, es muy probable que haya que configurarla en el contenedor para que solicite IP