2017-04-27 30 views
1

具有相同名稱的多個變量在我~/ip_vars_file,我有Ansible讀取vars_file

ip : 10.20.30 
ip : 10.20.31 
ip : 10.20.32 

這與lineinfile創建,

lineinfile: line="ip{{':'}} {{item.public_ip}}" 
       dest="{{ansible_env.HOME}}/ip_vars_file}}" 
with_items: servers.tagged_instances #servers is registered in previous task 

我無法讀取所有三個IPS作爲with_items。我只獲得了我劇本中的最後一個IP。

--- 
- hosts: localhost 
    tasks: 
    - name: print ips 
    debug: 
     var: item 
    with_items: "{{ ip }}" 

    vars_files: 
    - ~/ip_vars_file 

我得到的輸出,

TASK [print ips] *************************************************************** 
ok: [localhost] => (item=10.20.32) => { 
    "item": "10.20.32" 
} 

我想輸出是這樣的

TASK [print ips] *************************************************************** 
ok: [localhost] => (item=10.20.32) => { 
    "item": "10.20.30" 
    "item": "10.20.31" 
    "item": "10.20.32" 
} 

我想遍歷IPS一個接一個。我如何實現這一目標?

基本上,我想在啓動時存儲實例的ips並在部署期間稍後使用它們。但我堅持,當我啓動多個實例具有相同名稱的

回答

3

你要定義一個列表:

--- 
ip: 
    - 10.20.30 
    - 10.20.31 
    - 10.20.32 
+0

我使用ansible lineinfile創建文件,所以我不能改變我的定義文件的方式。 – Charan

+0

我編輯了這個問題。基本上,我想在啓動時存儲實例的ips,並在部署期間稍後使用它們。但是當我啓動具有相同名稱的多個實例時,我被卡住了。 – Charan

+1

使用Jinja2模板並將其保存爲答案中的列表。 – techraf