我有兩臺服務器(主機)Ansible增加全球變量在我的清單中的所有主機
[server]
10.23.12.33
10.23.12.40
和劇本(play.yml)
---
- hosts: all
roles:
web
裏面瓦爾目錄Web角色,我有主.yml
---
file_number : 0
裏面的任務目錄Web角色,我有main.yml
---
- name: Increment variable
set_fact: file_number={{ file_number | int + 1 }}
- name: create file
command: 'touch file{{ file_number }}'
現在我希望在第一臺機器,我將有文件1和第二臺機器,我將有文件2但在這兩種機器我有文件1
所以這個變量是本地爲每臺機器,我怎麼能使它成爲全球所有機器。
我的文件結構是:
hosts
play.yml
roles/
web/
tasks/
main.yml
vars/
main.yml
這是一個全局變量,但Ansible只評估'file_number'上一次'set_fact'任務,所以無論您運行多少個節點,它都只能設置爲'1'。你能解釋你的用例稍寬嗎?這可能是有更好的方式來做你想做的事情(看起來你想在所有主機上有一個唯一的文件名)? – ydaetskcoR
@ydaetskcoR我正在做的是改變文件中的配置行,在第一臺機器中它將具有'用戶名= client1',而在第二臺機器中它將具有'用戶名=客戶機2'等所有主機。因此我需要爲每臺機器增加變量。 – Nasr
但是您不知道該任務的運行順序。每次運行的主機順序可能不同。除非我錯過了關於你的用例的東西,否則你可能會更好地將它指定爲主變量 – ydaetskcoR