這不能在庫存文件中完成。我認爲set_fact
是您以編程方式建立一個簡單清單的最佳選擇。
---
- hosts: all
tasks:
- add_host:
name: "host{{ item }}"
ansible_ssh_host: "127.0.0.1"
ansible_connection: "local"
group: "new"
id: "{{ item }}"
with_sequence: count=3
delegate_to: localhost
run_once: yes
- hosts: new
tasks:
- debug:
msg: "{{ id }}"
如果我沒有記錯,神社能力已經從每一個他們不應該過的地方,如在YML文件when:
即外引號,括號,特殊情況下刪除。
當我以編程方式說,雖然,我們正在談論Ansible ..地球上最後的候選人之一通用腳本。動態庫存腳本是解決這些問題的更好方法,除非我們正確地談論三臺服務器。
最簡單的庫存腳本來完成,這將是(在你的hosts
目錄或由-i
開關指出:
#!/usr/bin/env python
import json
inv = {}
for i in range(3):
inv[i] = {"hosts":["host%s" % i],"vars":{"id":i,"ansible_ssh_host":"127.0.0.1", "ansible_connection":"local"}}
print json.dumps(inv)
同樣,恐怕沒有什麼比「漂亮」爲你」重新尋找。如果你的使用情況變得更復雜,那麼set_fact
,set_host
和group_by
可以派上用場,或庫存腳本,或group_vars
(我目前使用group_vars
文件服務器的數量)。
因此,將主機「注入」附加到依賴它的劇本中?這似乎是一種ewww。你知道有樣品的動態庫存腳本的好資源嗎? – Shark 2015-02-10 21:40:19
股票文檔在這個話題上很不錯:http://docs.ansible.com/developing_inventory.html和http://docs.ansible.com/intro_dynamic_inventory.html。修改或解構_ec2_ one是一個好開始 – 2015-02-10 22:16:52
@Shark我使用動態庫存的「hello world」進行編輯。 – 2015-02-10 22:27:47