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

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

У меня есть файл all.yml в каталоге group_vars, который содержит следующие переменные:

device_name: nycisco
remote_site: sydney
nycisco_ipsec_sydney: 10.10.10.10

В моей книге воспроизведения я хотел бы иметь возможность отображать переменную nycisco_ipsec_sydney , используя переменную имя_устройства и remote_site переменную.

Я пробовал следующее:

- name: Display remote peer IP address
  debug: msg="{{ device_name + '_ipsec_' + remote_site }}" 

но он возвращает «nycisco_ipsec_sydney» вместо ожидаемого значения переменной 10.10.10.10 Я хочу отображаться.

Я не понимаю, потому что, когда я пытаюсь:

- name: Display remote peer IP address
  debug: msg="{{ nycisco_ipsec_sydney }}" 

возвращается правильно 10.10.10.10.

Заранее спасибо за помощь;)

Ответы [ 3 ]

0 голосов
/ 02 июля 2019

Я смог решить проблему с помощью модуля поиска.Следующий код возвращает корректно nycisco_ipsec_sydney значение переменной, равное 10.10.10.10.

msg="{{ lookup('vars', device_name + '_ipsec_remote_' + remote_site) }}"
0 голосов
/ 02 июля 2019

Мне удалось решить по приведенному ниже коду

  vars:
    app: xxx
    xxx_header: this is a new variable

  - debug:
    msg: "{{vars[app + '_header']}}"
0 голосов
/ 02 июля 2019

попробуйте определить временную переменную, присвоив ей следующее значение

var="{{ device_name }}_ipsec_{{ remote_site }}"

, затем распечатайте сообщение следующим образом:

msg="{{ var }}"

это может быть, что вы должны поставитьотличается {{}} в кавычках, я не уверен на 100% в этом.

другим примером из нашего проекта будет:

remote_home: "{{ansible_env.HOME}}"
jboss_home: "{{remote_home}}/example/jboss-project"

надеюсь, что это поможет.

редактировать: другое решение

...