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