额外步骤

额外步骤

尝试弄清楚如何使用我的 ssh-key 连接在多台服务器上运行 Jenkins 构建。

目前我使用 SSH 远程主机插件,但该插件适用于 1、2、3、4……台服务器,而不适用于 100+ 台服务器。

我用 googleit 查找,发现很多人都提供了使用 Ansible 的解决方案,但我没有使用 ansible 的经验,所以如果有人有使用 ansible 或任何其他方式在多台服务器上运行构建的这个过程的示例,我会很高兴听到。

我在 Windows 上运行 Jenkins-Master,在 Linux(ubuntu)上运行 Jenkins-Slave。

谢谢。

答案1

这是一个非常简单的例子,但对于自由式工作,我认为它可以分为以下步骤:

  1. 在 jenkins-agent 上安装 ansible。pip install ansible或者apt install ansible

  2. 将您的 ssh 密钥加载到 Jenkins 凭证存储中。我假设您使用凭证存储插件(但您也可以将其加载到 ssh-agent 中,或使用其他方法在 jenkins-agents 上公开密钥。)

i)管理詹金斯 - >管理凭证
ii)添加凭证 - >“带有私钥的 SSH 用户名”
iii)粘贴密钥并赋予其名称,如“SSH_KEY_ANSIBLE”

  1. 创建一个新的 Jenkins 自由式作业并添加凭证(SSH_KEY_ANSIBLE)

i) 进入作业配置的构建环境部分
ii) 勾选“使用秘密文本或文件”
iii) 添加绑定项“SSH 用户私钥” SSH_KEY_ANSIBLE
iv) 将用户名变量设置为SSH_USER,将密钥文件设置为SSH_KEY

  1. 将主机列表添加到 jenkins-agent 上的 ansible 清单文件中:/etc/ansible/hosts
 [jenkins_job_hosts]  
 myhost1  
 myhost2  
 ...  
 myhost101
  1. 在詹金斯代理上创建一个剧本,例如/home/jenkins/ansible/my_first_playbook.yml
---
- hosts: jenkins_job_hosts
  tasks:
    - command: date

    - debug:
        msg: add other ansible tasks here....
  1. 转到詹金斯作业中的构建部分。

i)添加“执行 shell”构建步骤。ii
)使用以下命令针对所有主机运行 ansible

ansible-playbook --private-key ${SSH_KEY} \
          -u ${SSH_USER} \
          -i /etc/ansible/hosts \
           /home/jenkins/ansible/my_first_playbook.yml

额外步骤

  1. 你可以将你的库存文件和剧本放入 git,然后将它们签出到作业中

  2. 您还可以在 Jenkinsfile 中以 groovy 语法查看管道作业,从而简化作业管理。

相关内容