ansible: получить личный адрес всей машины и использовать его в цикле шаблона jinja - PullRequest
0 голосов
/ 13 марта 2020

Необходимо собрать весь частный адрес экземпляра EC2 с помощью Ansible, принять значение и l oop в шаблоне jinja

for...
    node {
        name "O=texas,L=Huston,C=USA"
        p2pPort 10008
        rpcSettings {
            address("{{public_ip}}:10009")
            adminAddress("{{public_ip}}:10010")
        }
        rpcUsers = [[user: "user1", "password": "test", "permissions": ["ALL"]]]
    }

1 Ответ

0 голосов
/ 14 марта 2020

Я думаю, вы можете сгенерировать свой список через модуль ec2_instance_info, а затем l oop через этот список в шаблоне. Таким образом, задачи будут:

- name: grab private ip from ec2
  ec2_instance_info:
    filter:
      "tag:some_tag_key": "some_tag_value"
  register: ec2_instance_info

- name:
  set_fact:
    public_ip_addresses: "{{ ec2_instnace_info | json_query('instances[].public_ip_address') }}"

- name: loop though private ips in template 
  template: 
    src: template_file.j2
    dest: destination

Шаблон jinja будет:

{% for public_ip_address in public_ip_addresses %}
    node {
        name "O=texas,L=Huston,C=USA"
        p2pPort 10008
        rpcSettings {
            address("{{ public_ip_address }}:10009")
            adminAddress("{{ public_ip_address }}:10010")
        }
        rpcUsers = [[user: "user1", "password": "test", "permissions": ["ALL"]]]
    }
{% endfor %}

Я не проверял, но теоретически я думаю, что он будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...