簡體   English   中英

如何在ansible playbook中循環變量

[英]How to loop over variables in an ansible playbook

我有以下playbook打印出安裝在三個jenkins服務器上的插件列表:

---
- hosts: all
  remote_user: user
  tasks:
      - name: Obtaining a list of Jenkins Plugins
        jenkins_script:
          script: 'println(Jenkins.instance.pluginManager.plugins)'
          url: 'http://server1.usa.com:8080/'
          user: 'admin'
          password: 'password'

      - name: Obtaining a list of Jenkins Plugins
        jenkins_script:
          script: 'println(Jenkins.instance.pluginManager.plugins)'
          url: 'http://server2.usa.com:8080/'
          user: 'admin'
          password: 'password'

      - name: Obtaining a list of Jenkins Plugins
        jenkins_script:
          script: 'println(Jenkins.instance.pluginManager.plugins)'
          url: 'http://server3.usa.com:8080/'
          user: 'admin'
          password: 'password'

但是,這顯然不是最有效的方法。 我查看了ansible劇本中的循環和變量 - 但我似乎是在圈子里。 這是我到目前為止:

- name: Obtaining a list of Jenkins Plugins
  jenkins_script:
    script: 'println(Jenkins.instance.pluginManager.plugins)'
    url: {{ item  }}
    with_items:
      - 'http://server1.usa.com:8080/'
      - 'http://server2.usa.com:8080/'
      - 'http://server3.usa.com:8080/'
    user: 'admin'
    password: 'password'

這是錯誤消息:

fatal: [server]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'item' is undefined\n\nThe error appears to have been in '/home/user/varspb.yml': line 5, column 9, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n  tasks:\n      - name: Obtaining a list of Jenkins Plugins\n        ^ here\n"}

我確定這是一個簡單的錯誤,但有人看到我哪里錯了嗎?

如果您使用{{ item }}等變量開始使用值,則需要引用它以插入變量"{{ item }}" 此外,您的yaml和任務塊中存在各種格式問題。 我設法用這個來修復你的任務:

- name: Obtaining a list of Jenkins Plugins
  jenkins_script:
    script: 'println(Jenkins.instance.pluginManager.plugins)'
    url: "{{ item  }}"
    user: 'admin'
    password: 'password'
  with_items:
    - 'http://server1.usa.com:8080/'
    - 'http://server2.usa.com:8080/'
    - 'http://server3.usa.com:8080/'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM