2016-05-19 68 views
0

我有以下劇本:可變變量:你可以動態創建它們,然後通過它們循環?

--- 
- hosts: lxc_hosts 
    name: get list of lxc containers on lxc host 
    tasks: 
    - name: get list of containers 
    shell: > 
     lxc-ls | awk -vRS= -vFS="\n" '//' 
    register: containers 
    - debug: msg="{{containers.stdout}}" 

調試返回值是這樣的:

TASK [debug] ******************************************************************* 
ok: [10.1.1.1] => { 
    "msg": "container1\ncontainer2\ncontainer3" 
} 
ok: [10.1.1.2] => { 
    "msg": "container22\ncontainer23\ncontainer24" 
} 

我希望有一種方法來解析結果我回來到像這樣的列表:

container1 
container2 
container3 

和/或

container22 
container23 
container24 

然後以某種方式我想能夠循環這些列表並運行另一個對他們的遊戲。事情是這樣的:

shell: lxc-attach --name={{item}} 
register: attach_results 
with_items: <list of containers> 

我怎麼會去這樣做呢?

+0

不回答這個問題,但你在LXC模塊看着使用shell的呢? http://docs.ansible.com/ansible/lxc_container_module.html – smiller171

+0

我認爲最好的解決方案是編寫小型過濾器插件 –

+0

@arbabnazar我不知道你的意思是什麼。我剛剛開始與理性。你能指出我可以解釋一個文檔/鏈接嗎? – Happydevdays

回答

0

這是結束了工作:

- debug: msg="{{containers.stdout}}" 
    with_items: 
    - "{{ containers.stdout.split(',')|select('match', 'container*')|list }}" 
+0

我不知道你的確切情況,但很高興我的榜樣幫助你實現你的目標。 –

0

你可以嘗試這樣的:

- debug: 
     msg: "{{ containers.stdout | select("match", ". container*") | list }}" 
+0

你可以給我多一點關於聲明的上下文,所以我知道把它放在哪裏?謝謝! – Happydevdays

+0

只是在調試任務中使用它,發現它會給你所需的結果,那麼你可以把它放在你想要的地方。我已經更新了這個問題 –

+0

不幸的是,這是行不通的。你必須首先分割輸出...然後嘗試反對選擇。 – Happydevdays

相關問題