Ansible playbook循环控制流

Ansible playbook循环控制流,ansible,Ansible,我有一个剧本,检查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)

我有一个剧本,检查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是个新手,所以有人知道如何解决这个问题吗?

如果您有六台名为server1-server6的Jenkins服务器,则无需进行循环。只需启动jenkins_脚本任务,并设置主机模式以在每台服务器上运行此任务:

---
- 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'
这将在每台服务器上执行一次任务