lxd-type container IP estático no perfil

3

Estou tentando definir um endereço IP estático em um contêiner lxd. O contêiner é feito com:

nonroot $ lxc launch images:centos/7/amd64 my_centos

em um ambiente bonito do bogstandard lxd (apenas o padrão do apt-get install lxd; serviço lxd start). Agora eu quero dar a essa coisa um IP estático 10.0.3.50 (digamos).

Depois de alguns googling (por que isso não está claro na documentação do site ainda não está claro para mim), descobri que as informações do perfil, que eu tenho que hackear para fazer isso, estavam em um banco de dados sqlite . Ok:

lxc profile copy default my_centos
lxc profile edit my_centos
...
name: my_centos 
  config: {} 
  description: "" 
  devices:   
    eth0:
      name: eth0
      nictype: bridged
      parent: lxcbr0
      type: nic

e não me permite alterá-lo para:

name: my_centos
config: 
  raw.lxc: 
    lxc.network.type = veth
    lxc.network.name = eth0
    lxc.network.link = lxcbr0
    lxc.network.ipv4 = 10.0.3.50/24
    lxc.network.ipv4.gateway = 10.0.3.1
    lxc.network.flags = up

description: ""
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: lxcbr0
    type: nic

O erro é: Erro de análise de configuração: somente são permitidas chaves ipv4 / ipv6 lxc.network específicas da interface

Isso provavelmente tem a ver com o nictype e o tipo de eth0, mas remover o dispositivo tem o mesmo efeito.

Alguém pode me esclarecer sobre o caminho certo para fazer isso?

Isso é meio relacionado com contêineres LXD e redes com IP estático , mas eu quero configurar isso com lxd (assim, com perfis em vez de arquivos de configuração).

    
por Willem 05.03.2016 / 16:05

2 respostas

3

Eu tive um problema semelhante em que queria contêineres com IPs estáticos e queria que eles fossem visíveis em minha rede local.

Não descobri como fazer isso via perfis lxd. Mas abaixo estão as etapas para criar um único contêiner com um IP estático. Em seguida, você pode escrever um script que clona o contêiner e simplesmente altera seu IP no arquivo / etc / network / interfaces, o que permite a criação de contêineres com IPs estáticos.

Aqui estão os passos:

Crie uma ponte na máquina host.

edite: / etc / network / interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0
#iface eth0 inet dhcp

auto br0
iface br0 inet static
    address 172.16.115.208
    broadcast 172.16.119.255
    netmask 255.255.248.0
    gateway 172.16.112.1
    bridge_ports eth0
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp off

Substitua os endereços IP pelos seus valores.

Observe que "bridge_ports" adiciona sua eth0 à ponte.

Reinicie a rede:

sudo /etc/init.d/networking restart

Chame a nova ponte:

sudo ifup br0

Neste ponto, você deve garantir se ainda tem conectividade de rede por meio da ponte recém-criada.

Edite seu perfil lxc e defina pai como a ponte recém-criada.

lxc profile edit default<or your container's profile name>

-       parent: lxcbr0
+       parent: br0

Acesse o contêiner e defina o endereço IP estático.

lxc exec my-container-name /bin/bash
sudo vim /etc/network/interfaces

    #auto eth0
    #iface eth0 inet dhcp

    auto eth0
    iface eth0 inet static
    address 172.16.115.252
    broadcast 172.16.119.255
    netmask 255.255.248.0
    gateway 172.16.112.1

Novamente, altere os endereços IP de acordo. Reinicie seu contêiner e verifique se ele foi atribuído ao novo IP.

lxc info my-container-name

Agora, seu contêiner tem um IP estático e é visível na rede. Agora você pode escrever um script que clona e altera o valor de IP no arquivo de interfaces para obter vários contêineres com diferentes IPs estáticos.

    
por 15.03.2016 / 15:32
2

Você pode fazer com que o lxd-bridge atribua endereços IP estáticos adicionando um arquivo de configuração externo do dnsmasq.

Abra / etc / default / lxd-bridge e você encontrará um local para adicioná-lo.

LXD_CONFILE=""

Insira um nome de arquivo lá. Algo como lxd_dnsmasq.conf. Você pode nomear tudo o que quiser.

Em seguida, crie o arquivo e adicione uma entrada como essa para cada contêiner.

dhcp-host = containername, ipaddress

Aqui está um link para instruções detalhadas para configuração: endereços IP estáticos lxd

    
por 03.08.2016 / 20:16