Ansible: динамический поиск переменных в v2.3 - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть набор переменных и задача следующим образом.Мое намерение состоит в том, чтобы динамически выполнить проверку работоспособности на основе URL-адреса, выбранного пользователем.

vars:
  current_hostname: "{{ ansible_hostname }}"
  hc_url1: "https://blah1.com/healthcheck"
  hc_url2: "https://blah2.com/healthcheck"

tasks:
- name: Notification Msg For Healthcheck
  shell: "echo 'Performing healthcheck at the URL {{ lookup('vars', component) }} on host {{ current_hostname }}'"

Запуск playbook в Ansible 2.3

ansible-playbook ansible_playbook.yml -i inventory -k -v --extra-vars "component=hc_url1"

Ошибка

fatal: [hostname]: FAILED! => {"failed": true, "msg": "lookup plugin (vars) not found"}

Я знаю, это происходит потому, что поисковый плагин "var" был введен в Ansible v2.5,Есть ли способ сделать это в Ansible 2.3?Я хочу получить значение {{component}}, а затем значение {{hc_url1}}

PS - обновление до 2.5 не является вариантом из-за ограничений org

1 Ответ

0 голосов
/ 11 декабря 2018

В качестве альтернативы, возможно, вы можете сделать это, используя словарь.

Например,

vars:
  current_hostname: "{{ ansible_hostname }}"
  urls:
    hc_url1: "https://blah1.com/healthcheck"
    hc_url2: "https://blah2.com/healthcheck"

tasks:
- name: Notification Msg For Healthcheck
  shell: "echo 'Performing healthcheck at the URL {{ urls[component] }} on host {{ current_hostname }}'"

Таким образом, предоставленное пользователем значение component будет просто выглядеть каквведите словарь.

...