Как создать модифицированный список через запятую, используя Ansible и группу Ansible в качестве входных данных - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь создать список IP-адресов, разделенных запятыми, из группы Ansible. Пока у меня есть чтение группы и создание списка. Мой код задачи на данный момент:

  - name: Add IP address of coordinating hosts
    lineinfile:
      dest: /etc/kibana/kibana.yml
      regexp: '^(.*)elasticsearch.hosts:(.*)$' 
      line: "elasticsearch.hosts: [{{ groups['coordinating_nodes'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | join(',') }}]"
      state: present

Это дает вывод:

elasticsearch.hosts: [192.168.1.1, 192.168.1.2, 192.168.1.3, 192.168.1.4]

Есть ли способ изменить каждое отдельное значение карты так, чтобы оно походило на:

elasticsearch.hosts: ["https://192.168.1.1:9200", "https://192.168.1.2:9200", "https://192.168.1.3:9200", "https://192.168.1.4:9200"]

1 Ответ

0 голосов
/ 17 января 2020

Вы можете использовать фильтр regex_replace, чтобы получить то, что вы хотите. Используйте map, чтобы применить его к вашему списку адресов, заменив каждый адрес на https://<the address>:9200:

map('regex_replace', '^(.*)$', 'https://\\1:9200')

Например, следующий playbook:

---
- gather_facts: false
  hosts: localhost
  vars:
    fake_hostvars:
      foo:
        ansible_default_ipv4:
          address: 1.1.1.1
      bar:
        ansible_default_ipv4:
          address: 2.2.2.2
      baz:
        ansible_default_ipv4:
          address: 3.3.3.3

    coordinating_nodes:
      - foo
      - bar
      - baz

  tasks:
    - debug:
        msg: "{{ coordinating_nodes | map('extract', fake_hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^(.*)$', 'https://\\1:9200') | list }}]"

будет производить:


PLAY [localhost] *****************************************************************************

TASK [debug] *********************************************************************************
ok: [localhost] => {
    "msg": "['https://1.1.1.1:9200', 'https://2.2.2.2:9200', 'https://3.3.3.3:9200']]"
}

PLAY RECAP ***********************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

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