Ansible - Невозможно добавить префикс 'ansible_hostname' к каждому элементу в массиве, если в массиве уже есть переменные - PullRequest
1 голос
/ 16 июня 2020

Я пытаюсь добавить 'ansible_hostname' в качестве префикса к каждому элементу в массиве, но получаю два разных результата.

  • когда массив stati c без каких-либо переменных, тогда имя хоста получает добавлено.
  • когда в массиве объявлена ​​переменная, то факт 'ansible_hostname' не разрешается и передается в виде строки.

Я объявил массив с переменной, нужна помощь в передаче имени хоста без использования циклов.

Сценарий 1:

  - name: test_array
    set_fact:
     test_array: ["This is test1 {{ansible_hostname}}", "This is test2"]     
  - set_fact: 
      test_fact: "{{ test_array | map('regex_replace', '^(.*)$', ' {{ansible_hostname}}, \\1') | join('\n') }}" 

output:
"test_fact": " {{ansible_hostname}}, This is test1 control\n {{ansible_hostname}}, This is test2"

Сценарий 2:

 - name: test_array
    set_fact:
     test_array: ["This is test1", "This is test2"]    
  - set_fact: 
      test_fact: "{{ test_array | map('regex_replace', '^(.*)$', ' {{ansible_hostname}}, \\1') | join('\n') }}" 

output:
"test_fact": " host, This is test1 control\n host, This is test2"

1 Ответ

2 голосов
/ 16 июня 2020

Вы не можете использовать расширение jinja2 внутри расширения jinja2. Вы должны объединить имя хоста с остальной частью вашей замены регулярного выражения с помощью оператора +:

- set_fact: 
    test_fact: "{{ test_array | map('regex_replace', '^(.*)$', ansible_hostname + ', \\1') | join('\n') }}"

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