我有以下的劇本打印出已安裝在三個詹金斯服務器的插件列表:如何循環變量在ansible劇本
---
- 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'
但是,這顯然不是最有效的方法去做這個。我研究了可靠的劇本中的循環和變量 - 但我似乎在圈圈。以下是我迄今爲止:
- 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"}
我敢肯定,這是一個簡單的錯誤,但沒有人看到我錯了?
請更正您的示例中的縮進併發布Ansible給出的錯誤消息,這應該是有幫助的。 –
@KonstantinSuvorov進行了更改 –
奇怪的是,您應該通過未加引號的'{{item}}''語法錯誤''。但是,這個確切的消息是由錯誤的'with_items:'indentation引起的 - 應該與模塊名稱在同一級別。 –