我们计划使用 jenkins 和 ansible 来管理我们的环境:一个 jenkins 主服务器和多个 jenkins 从服务器。从服务器有 ansible deployt。
Ansible 剧本和角色是从中央源生成的 - 与 jenkins 管道作业相同。我们生成所有内容的发布:Jenkins 管道和 Ansible 剧本和角色。通常我们在 Nexus 或 Subversion 中生成发布工件(作为标签)。
将管道传送到詹金斯很容易(JOB-DSL 或来自 SCM)。
我的问题:如何将发布剧本和角色发布到需要它们的詹金斯从属服务器。
我们考虑过的选项:
在发布时检查所有从属服务器并安装新版本。缺点:从属服务器可能是动态的;需要确保所有从属服务器都具有正确的版本。
每次调用剧本时都获取资源。缺点:即使是小事也需要下载 ansible 剧本和角色。
您对此有何看法?
答案1
将剧本发送给从属服务器的常用方法是使用 SCM。由于剧本很容易依赖于特定的 Ansible 版本,因此我建议运行 Ansible 剧本在 Docker 容器内在 Jenkins 从属服务器上,而不是尝试维护 Ansible 可执行文件和依赖项。这样,您可以固定剧本的 Ansible 版本并管理 Ansible 的其他运行时依赖项。