如何在多个虚拟服务器上运行Jenkins作业?

时间:2017-06-12 02:34:48

标签: jenkins devops

我已经在服务器上安装了Jenkins,默认情况下该作业只能在该服务器上运行。我的需求来自我的Jenkins如何在同一个作业上运行到多个服务器?它将如何ssh到其他服务器?我是Jenkins的新手,请帮助。基本上我的目标是将应用程序部署到多个服务器上。

5 个答案:

答案 0 :(得分:3)

Ansible 是最好的方法。 Ansible :

在安装Jenkins的服务器上安装Ansible

在单个名称下配置主机文件中的多个服务器详细信息。

提及Ansible-playbook中将在所有提到的服务器中执行的作业。

  

内部流程:它将通过ssh在多个服务器中运行作业   在它

在Jenkins安装的服务器中使用shell脚本,并使用shell命令和ssh username @ ip" #cmd" // mulitple server ip

答案 1 :(得分:2)

您可以使用任何配置管理工具,如ansible,chef或capistrano作为jenkins工作,以便他们可以使用jenkins进行工作。您可以提及capistrano cookbook下的服务器数量,无论何时构建作业,它都将在所有服务器上运行您的任务。

还有像pssh(parallel ssh)这样的工具,如果你想使用ssh。

答案 2 :(得分:1)

您可以使用主从概念。在所有其他计算机上安装jenkins slave,例如在其他应用程序服务器中。您可以从here找到有关Jenkins主从概念的更多信息。

然后,您可以使用相同的作业在其他应用程序服务器上运行。

答案 3 :(得分:0)

我认为通过使用单个作业和后期构建步骤,您可以在多个服务器上进行部署。

如果有任何更正,请告诉我

答案 4 :(得分:0)

使用Master-Slave概念,您可以在多个从属节点上添加Jenkins从属代理,以便您可以在它们上进行部署。

您可以通过两种方式进行部署:使用Jenkins节点管道语法,或通过构建脚本使用Ansible-Playbook:

第一种方式在Jenkins文件中如下:

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主节点上安装Ansible-plugin。 并且您可以将所需的所有节点放在库存文件中。

除了Idempotence之外,两种方式的主要区别在于,第一种方式将提供顺序执行,而第二种方式将使用Ansible提供并行执行。