尝试弄清楚如何使用我的 ssh-key 连接在多台服务器上运行 Jenkins 构建。
目前我使用 SSH 远程主机插件,但该插件适用于 1、2、3、4……台服务器,而不适用于 100+ 台服务器。
我用 googleit 查找,发现很多人都提供了使用 Ansible 的解决方案,但我没有使用 ansible 的经验,所以如果有人有使用 ansible 或任何其他方式在多台服务器上运行构建的这个过程的示例,我会很高兴听到。
我在 Windows 上运行 Jenkins-Master,在 Linux(ubuntu)上运行 Jenkins-Slave。
谢谢。
答案1
这是一个非常简单的例子,但对于自由式工作,我认为它可以分为以下步骤:
在 jenkins-agent 上安装 ansible。
pip install ansible
或者apt install ansible
将您的 ssh 密钥加载到 Jenkins 凭证存储中。我假设您使用凭证存储插件(但您也可以将其加载到 ssh-agent 中,或使用其他方法在 jenkins-agents 上公开密钥。)
i)管理詹金斯 - >管理凭证
ii)添加凭证 - >“带有私钥的 SSH 用户名”
iii)粘贴密钥并赋予其名称,如“SSH_KEY_ANSIBLE”
- 创建一个新的 Jenkins 自由式作业并添加凭证(SSH_KEY_ANSIBLE)
i) 进入作业配置的构建环境部分
ii) 勾选“使用秘密文本或文件”
iii) 添加绑定项“SSH 用户私钥” SSH_KEY_ANSIBLE
iv) 将用户名变量设置为SSH_USER
,将密钥文件设置为SSH_KEY
- 将主机列表添加到 jenkins-agent 上的 ansible 清单文件中:/etc/ansible/hosts
[jenkins_job_hosts] myhost1 myhost2 ... myhost101
- 在詹金斯代理上创建一个剧本,例如
/home/jenkins/ansible/my_first_playbook.yml
:
--- - hosts: jenkins_job_hosts tasks: - command: date - debug: msg: add other ansible tasks here....
- 转到詹金斯作业中的构建部分。
i)添加“执行 shell”构建步骤。ii
)使用以下命令针对所有主机运行 ansible
ansible-playbook --private-key ${SSH_KEY} \
-u ${SSH_USER} \
-i /etc/ansible/hosts \
/home/jenkins/ansible/my_first_playbook.yml
额外步骤
你可以将你的库存文件和剧本放入 git,然后将它们签出到作业中
您还可以在 Jenkinsfile 中以 groovy 语法查看管道作业,从而简化作业管理。