如何 运行 多个虚拟服务器上的 Jenkins 作业?
How to run a Jenkins job on multiple virtual servers?
我已经在一台服务器上安装了 Jenkins,默认情况下,该作业将 运行 仅在该服务器上。我的要求来自我的 Jenkins,我如何才能 运行 在多个服务器上执行相同的作业?如何通过 ssh 连接到其他服务器?我是 Jenkins 的新手,请帮忙。基本上我的目标是将应用程序部署到多个服务器上。
我认为通过使用具有 post 个构建步骤的单个作业,您可以在多个服务器上部署。
如果有任何更正请告诉我
可以使用主从概念。在所有其他机器上安装 jenkins slave,即在您的情况下是其他应用程序服务器。您可以从 here 找到更多关于 Jenkins 主从概念的信息。
然后您可以在其他应用程序服务器上使用相同的作业 运行。
Ansible 是最好的方法。
Ansible :
在安装 Jenkins 的同一台服务器上安装 Ansible。
在主机文件中以单一名称配置多个服务器详细信息。
提及 Ansible-playbook 中的作业,这些作业将在所有提及的服务器中执行。
internal process: it will run the job in the multiple servers by ssh
in to it
或
在 Jenkins 安装的服务器中使用 shell 脚本并使用 shell 命令和 ssh username@ip "#cmd" //mulitple server ip
您可以将任何配置管理工具(如 ansible、chef 或 capistrano)用作 jenkins 作业,以便它们可以使用 jenkins 完成您的工作。您可以在 capistrano cookbook 下提及服务器的数量,并且无论何时构建作业,它都会 运行 在所有服务器上执行您的任务。
还有pssh(parallel ssh)之类的工具,如果你想使用ssh。
使用Master-Slave的概念,可以在多个slave节点上添加Jenkins slave agent,这样就可以在它们上面部署了。
您可以通过两种方式部署,使用 Jenkins 节点管道语法,或通过构建脚本使用 Ansible-Playbook:
Jenkinsfile 中的第一种方式如下:
node('node1') {
// Building Stages on node 1
}
node('node2') {
// Building Stages node 2
}
第二种方式在 Jenkinsfile 中如下所示:
node('master_node'){
// master node has the ansible-playbook
ansiblePlaybook credentialsId: 'ansible_ssh_user', inventory: 'path_to_inventory_file', playbook: 'path_to_playbook', sudo: true, sudoUser: 'sudo_user_name'
}
这种方式需要在Jenkins Master节点上安装Ansible-plugin。
你可以把你想要的所有节点都放在清单文件中。
这两种方式的主要区别除了幂等性之外,第一种方式将提供顺序执行,而第二种方式将使用Ansible提供并行执行。
我已经在一台服务器上安装了 Jenkins,默认情况下,该作业将 运行 仅在该服务器上。我的要求来自我的 Jenkins,我如何才能 运行 在多个服务器上执行相同的作业?如何通过 ssh 连接到其他服务器?我是 Jenkins 的新手,请帮忙。基本上我的目标是将应用程序部署到多个服务器上。
我认为通过使用具有 post 个构建步骤的单个作业,您可以在多个服务器上部署。
如果有任何更正请告诉我
可以使用主从概念。在所有其他机器上安装 jenkins slave,即在您的情况下是其他应用程序服务器。您可以从 here 找到更多关于 Jenkins 主从概念的信息。
然后您可以在其他应用程序服务器上使用相同的作业 运行。
Ansible 是最好的方法。 Ansible :
在安装 Jenkins 的同一台服务器上安装 Ansible。
在主机文件中以单一名称配置多个服务器详细信息。
提及 Ansible-playbook 中的作业,这些作业将在所有提及的服务器中执行。
internal process: it will run the job in the multiple servers by ssh in to it
或
在 Jenkins 安装的服务器中使用 shell 脚本并使用 shell 命令和 ssh username@ip "#cmd" //mulitple server ip
您可以将任何配置管理工具(如 ansible、chef 或 capistrano)用作 jenkins 作业,以便它们可以使用 jenkins 完成您的工作。您可以在 capistrano cookbook 下提及服务器的数量,并且无论何时构建作业,它都会 运行 在所有服务器上执行您的任务。
还有pssh(parallel ssh)之类的工具,如果你想使用ssh。
使用Master-Slave的概念,可以在多个slave节点上添加Jenkins slave agent,这样就可以在它们上面部署了。
您可以通过两种方式部署,使用 Jenkins 节点管道语法,或通过构建脚本使用 Ansible-Playbook:
Jenkinsfile 中的第一种方式如下:
node('node1') {
// Building Stages on node 1
}
node('node2') {
// Building Stages node 2
}
第二种方式在 Jenkinsfile 中如下所示:
node('master_node'){
// master node has the ansible-playbook
ansiblePlaybook credentialsId: 'ansible_ssh_user', inventory: 'path_to_inventory_file', playbook: 'path_to_playbook', sudo: true, sudoUser: 'sudo_user_name'
}
这种方式需要在Jenkins Master节点上安装Ansible-plugin。 你可以把你想要的所有节点都放在清单文件中。
这两种方式的主要区别除了幂等性之外,第一种方式将提供顺序执行,而第二种方式将使用Ansible提供并行执行。