小编Tom*_*Tom的帖子

是否可以使用Ansible/Jinja2压缩列表列表?

我的基本问题是,在创建一组aws服务器时,我想配置它们以了解彼此.

创建每个服务器后,它们的详细信息将保存在已注册的"服务器"var中(如下所示).我真正希望在创建之后能够执行的任务是这样的:

- name: Add servers details to all other servers
  lineinfile:
    dest: /path/to/configfile
    line: "servername={{ item.1.private_ip }}"
  delegate_to: "{{ item.0.public_dns_name }}"
  with_nested:
    - list_of_servers
    - list_of_servers
Run Code Online (Sandbox Code Playgroud)

将列表提供两次到'with_nested'是必不可少的.

获取列表清单很容易:

"{{ servers.results | map(attribute='tagged_instances') | list }}"
Run Code Online (Sandbox Code Playgroud)

返回:

[ 
  [ { "private_ip": "ip1", "public_dns_name": "dns1" } , { ... }],
  [ { ... }, { ... } ]
]
Run Code Online (Sandbox Code Playgroud)

但你怎么会把它变成:

[
  { "private_ip": "ip1", "public_dns_name": "dns1" },
  { ... },
  { ... }, 
  { ... }
]
Run Code Online (Sandbox Code Playgroud)

'servers'注册的var看起来像:

"servers": {
    "changed": …
Run Code Online (Sandbox Code Playgroud)

jinja2 ansible ansible-playbook

19
推荐指数
3
解决办法
1万
查看次数

标签 统计

ansible ×1

ansible-playbook ×1

jinja2 ×1