我有一台运行 Jenkins 的主机服务器。我希望 Jenkins 自动创建新容器并使用 SALT 准备这些容器。最终目的是使用这些容器来测试代码。
创建新容器、安装 salt-minion 并使用 salt 配置服务器的最佳方法是什么?
我尝试过类似的东西lxc-attach -n myContainer -- salt-call --local state.highstate
,但遇到了问题。如果我在命令行上手动运行 lxc-attach -n [name] -- [command] ,它就可以工作。但是,通过脚本执行此操作会出错。
lxc-start -n "$1" -d
lxc-attach -n "$1" -- apt-get update
...结果是...
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
... 还有其他多个错误。我以同一用户身份在命令行上手动运行脚本和命令。
我在这里可能做错了什么?
答案1
看来我apt-get update
在启动容器(在后台)后尝试运行得太快了。网络显然还没有准备好,所有命令(依赖于网络)都失败了。
我在配置脚本中添加了 sleep 5s,并且运行良好。
lxc-start -n "$1" -d
sleet 5
lxc-attach -n "$1" -- apt-get update