Eu tenho um servidor host que executa o Jenkins. Eu gostaria que Jenkins criasse automaticamente novos contêineres e preparasse esses contêineres com SALT. O objetivo final é usar esses contêineres para testar o código.
Qual é a melhor maneira de criar um novo contêiner, instalar o salt-minion e, em seguida, provisionar o servidor com salt?
Eu tentei algo parecido com, lxc-attach -n myContainer -- salt-call --local state.highstate
mas estou tendo problemas para fazer isso. Se eu executar lxc-attach -n [name] -- [command] manualmente na linha de comando, ele funcionará. No entanto, fazer isso a partir de um script me dá erros.
lxc-start -n "$1" -d
lxc-attach -n "$1" -- apt-get update
...resulta em...
Starting the container 'test2'...
Err http://archive.ubuntu.com trusty InRelease
Err http://archive.ubuntu.com trusty-updates InRelease
Err http://archive.ubuntu.com trusty Release.gpg
Could not resolve 'archive.ubuntu.com'
Err http://security.ubuntu.com trusty-security InRelease
Err http://security.ubuntu.com trusty-security Release.gpg
Could not resolve 'security.ubuntu.com'
Err http://archive.ubuntu.com trusty-updates Release.gpg
Could not resolve 'archive.ubuntu.com'
Reading package lists... Done
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/InRelease
... e vários outros erros. Estou executando o script e os comandos manualmente na linha de comando como o mesmo usuário.
O que eu poderia estar fazendo de errado aqui?
Parece que tentei executar
apt-get update
muito rapidamente depois de iniciar o contêiner (em segundo plano). A rede aparentemente não está pronta e todos os comandos (que dependiam da rede) falharam.Adicionei sleep 5s ao script de provisionamento e funcionou bem.