我有一个playbook,用于检查6个jenkins服务器的已安装插件列表。
这是主机文件:
[masters]
server1
server2
server3
server4
server5
server6
以下是playbook中处理获取已安装插件列表的任务:
- name: Obtaining a list of Jenkins Plugins
jenkins_script:
script: 'println(Jenkins.instance.pluginManager.plugins)'
url: "{{ item }}"
user: 'admin'
password: 'password'
with_items:
- 'url1'
- 'url2'
- 'url3'
- 'url4'
- 'url5'
- 'url6'
这样运行得非常好,但打印出36个已安装插件列表而不是6个。看来playbook正在为每个主机插入每个url,但是我对ansible很新,所以有人都知道如何解决这个问题?
答案 0 :(得分:1)
如果您有六台名为server1-server6的Jenkins服务器,则不需要进行循环。只需触发jenkins_script
任务并设置hosts
模式,即可在每台服务器上运行此任务:
---
- hosts: server*
tasks:
- name: Obtaining a list of Jenkins Plugins
jenkins_script:
script: 'println(Jenkins.instance.pluginManager.plugins)'
url: 'http://{{ inventory_hostname }}:8080/'
user: 'admin'
password: 'password'
这将在每个服务器上执行一次任务。