Вы можете использовать фильтр 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