2017-02-27 85 views
0

我有一個劇本,用於檢查6個jenkins服務器的安裝插件列表。Ansible劇本循環控制流程

這裏是HOSTFILE:

[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.看來,劇本是插入每個主機的每個網址,但我是相當新的理性,所以有人知道如何解決這個問題?

回答

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' 

這將執行任務的每個服務器上一次。