【问题标题】:Ansible playbook looping control flowAnsible playbook 循环控制流
【发布时间】:2017-02-27 18:51:53
【问题描述】:

我有一本手册,可以检查 6 个 jenkins 服务器的已安装插件列表。

这是主机文件:

[masters]
server1
server2
server3
server4
server5
server6

这是剧本中处理获取已安装插件列表的任务:

 - 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 个。看来剧本正在为每个主机插入每个 url,但是我对 ansible 相当陌生,所以有人知道吗如何解决这个问题?

【问题讨论】:

    标签: ansible


    【解决方案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'
    

    这将在每台服务器上执行一次任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多