如何使用 saltstack 配置新的 LXC 容器?

如何使用 saltstack 配置新的 LXC 容器?

我有一台运行 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

相关内容