2017-11-11 101 views
1

我想将两个字符串组合在一起。一个从set_facts中提取,另一个在playbook中定义为变量。但是,当我运行调试。我得到额外的字符,如[u''] 但没有得到干净的输出。Ansible - 结合两个变量将[u ...]添加到其中之一

这是我想要的结果:

final_list: usera,userb,userc,userd,usere,userf 

但是,这是我得到的结果是:

ok: [localhost] => { 
    "final_list": "[u'usera,userb,userc'],userd,usere,userf" 
} 

这里是我的剧本:

- vars: 
     list_2: "userd,usere,userf" 
    - set_fact: 
     list_1="{{ parent_hgdata.json|json_query("parameters[?name=='usernames'].value") }}" 

- name: verify list 1 output 
     debug: 
     var: list_1 

### The above task gives me the right output for list_1 

    - name: Combining list _1 and list_2 
     set_fact: 
     final_list: "{{ list_1 }},{{ list_2 }}" 

    - name: Now verify the final_list 
     debug: 
     var: final_list 

现在,当我调试final_list。它红粉我不洁净的输出

"final_list": "[u'usera,userb,userc'],userd,usere,userf" 

回答

1

list_1是一个列表对象,list_2是一个字符串。

如果你想在年底的字符串,则需要先使用join filter列表转换为字符串,然后连接具有其余部分:

set_fact: 
    final_list: "{{ list_1 | join(‘,’) }},{{ list_2 }}" 
+0

真棒。有效。好极了!。 techraf,你真了不起。感谢您的解释以及:) – sherri