我试图在任务循环中将多个词典输入with_dict。
---
ssh_users:
- "{{ server_admins }}"
- "{{ developers }}"
---
- name: create users
user: name={{ item.key }} {{ item.value }}
with_dict: "{{ ssh_users }}"
public class panel1 extends JPanel implements ActionListener(){
private panel2 p2=new panel2();
private JButton button;
public panel1(){
button=new JButton("open panel2");
add(button,BorderLayout.BEFORE_FIRST_LINE);
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent ae) {
add(p2);
}
});
}
如果我在{{ssh_users}}中只定义了一个字典,则任务按预期运行。但是当我添加第二个字典时,我得到" with_dict期望一个字典"。显然它并没有期待其中两个!
到目前为止,我的解决方法是为每组用户创建一个新角色,但这已经失控,并且看起来不是一个好的解决方案,因为我重复了每个角色都有相同的逻辑。
关于如何将多个字典传递或连接到with_dict,或以任务循环可以处理的方式构造数据的任何想法;一直保持单一角色?
答案 0 :(得分:2)
来自Ansible 2.0,有一个Jinja过滤器combine,为此:
---
- name: create users
user: name={{ item.key }} {{ item.value }}
with_dict: "{{ server_admins | combine(developers) }}"