通过 Jenkins 进行盐态测试

rdo*_*dev 7 automated-testing continuous-integration saltstack

全部,

我们正在尝试在我们的 Jenkins 设置中进行自动化测试,以在我们的 salt 状态文件 ( .sls) 中运行“smoke”和“lint”类型的测试。到目前为止,所有 google-foo 都产生了很少的信息。有一种test=True在命令行中进行测试的方法,但这不适用于无外壳帐户(就像 Jenkin 的帐户通常那样)。

我还没有遇到过对 SaltStack 状态进行这种自动测试的人。所以:

1)有没有可能

2)任何人都知道我可以查看的好资源

TIA。

Dan*_*ite 7

码头工人。服务器配置的快速自动化测试是 docker 解决的一个不可否认的现实问题。它可以提供一台已经启动并在一秒钟内侦听网络的干净计算机。使用 /srv/salt bind-mounted 启动映像,您可以运行salt-call --local state.highstate -l debug到测试状态而无需大惊小怪salt-key

我知道 SaltStack, Inc 使用 LXC 的方式大致相同。他们可能仍然这样做。

至于测试 - 如果您对状态文件很聪明和小心,您可以将干净的第二次运行视为成功的标志。

这很难实现,因为某些状态将始终重新运行。Salt Stack 擅长修复这些被发现的状态。与此同时,你必须用内联 jinja 条件包围这些状态,这些条件在运行时在 minion 上执行命令:

{% if salt['cmd.retcode']('your test here') %} 
some-identifier:
  some.module:
    - name: some anme
{% endif %}'
Run Code Online (Sandbox Code Playgroud)

存在一个jenkins-docker 插件

docker 插件的目的是能够使用 docker 主机来动态配置从站,运行单个构建,然后拆除该从站。

或者,您可以通过新的 docker-ng salt 模块自动化整个过程:

salt dockhost docker-ng.create states-qa rm=True binds="/srv/salt:/srv/salt"
salt dockhost docker-ng.retcode states-qa 'salt-call --local state.highstate' # run 1
salt dockhost docker-ng.retcode states-qa 'salt-call --local state.highstate' # run 2
salt dockhost docker-ng.stop states-qa
Run Code Online (Sandbox Code Playgroud)