Especificamente, com as ferramentas da CLI - não com o openstack.
Estou vendo como pode ser uma configuração de desenvolvedor local com o lxd, mas estou chegando de mãos vazias quando se trata de configurar novos contêineres.
Existem maneiras idiomáticas (ou não) de configurar contêineres lxd? Devo estar olhando para algo mais imutável, como imagens de janela de encaixe?
Obrigado. Quaisquer recursos ou indicadores serão apreciados.
Um revestimento que acompanhei hoje, este o define no perfil padrão para novos contêineres:
echo -e "#cloud-config\nssh_authorized_keys:\n - $(cat ~/.ssh/id_rsa.pub)" | lxc profile set default user.user-data -
Este o define em um contêiner existente, mas cuidado, ele não funcionará em contêineres que já foram inicializados, pois o material da chave SSH é feito apenas na primeira inicialização:
echo -e "#cloud-config\nssh_authorized_keys:\n - $(cat ~/.ssh/id_rsa.pub)" | lxc config set CONTAINER_NAME user.user-data -
fonte
Eu tinha uma pergunta um pouco mais específica do que o OP, mas levei um tempo para entender o que estava fazendo de errado. Eu pensei em publicá-lo aqui para ajudar alguém a ficar igualmente perplexo.
Eu queria configurações de rede estáticas para um contêiner LXC / LXD Ubuntu 16.04 hospedado no Ubuntu 16.04. Comecei tentando o que Stéphane escreveu, mas não estava funcionando. Acabei com o contêiner de tentativa de DHCP padrão com um link IPv6 local, pois não há DHCP sendo servido na minha configuração.
Meu YAML inicial parecia (algo) o seguinte (extraído dos documentos de inicialização em nuvem ).
E eu estava carregando isso
user.user-data
como descrito acima.Não foi até encontrar a documentação de Stéphane na fonte LXC / LXD que percebi que precisava carregar esse valor
user.network-config
.Então meu YAML final ficou assim (algo).
Então eu carreguei isso no
user.network-config
lugar.Parece que vou precisar manter dois arquivos diferentes por contêiner: um para carregar as configurações de rede
user.network-config
; e um para outra configuração carregar, auser.user-data
menos que eu possa encontrar uma maneira de usar um único arquivo para tudo.Outro problema que achei que não era óbvio para mim foi tentar configurar componentes não pertencentes à rede automaticamente.
O YAML a seguir aplicado com o comando acima (apesar de parecer correto
lxc config show CONTAINER
) não criou nada dentro do meu contêiner.A pista escondida em Formatos de entrada de dados do usuário, item 5: Dados de configuração da nuvem, lê:
Não acredito que esta documentação seja muito clara. Não consegui que nada funcionasse usando o formulário "Tipo de conteúdo: texto / configuração da nuvem", mas descobri que, se você colocar
#cloud-config
na primeira linha, o YAML é analisado. Só posso supor que algo não está certo, tanto no meu entendimento quanto na programação de alguém. Não faz sentido para mim que o YAML que você carregou explicitamente como o valor da chaveuser.user-data
deva ser usado como algo diferente de dados de configuração da nuvem. Por que outra razão que alguém faria isso se não era para ser configuração de nuvem, e, portanto, por que um comentário (que nem sequer usar a sintaxe shebang normal) ser necessário ?Portanto, sem sentido, a sintaxe para a qual trabalhou
user.user-data
é:fonte