Ansible использовать имя_хоста или ansible_hostname в имени задачи

19

Я пишу текущее обновление и хочу напечатать имя хоста текущего хоста, который был обновлен.

Я поставил inventory_hostnameи ansible_hostnameв именах задач, но это не сработало

- name: upgrade softare on {{inventory_hostname}}
- name: current host is {{ansible_hostname}}

отладка работает нормально

- name: Test a variable
  debug: var=inventory_hostname

TASK: [Test a variable] ******************************************************* 
ok: [SERV14] => {
    "var": {
        "inventory_hostname": "SERV14"
    }
}

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

Благодарность

Спрашивай и учись
источник
4
В настоящее время подстановка переменных не может быть выполнена по имени. Смотрите здесь
cuonglm

Ответы:

27

Начиная с версии 2.0 Ansible поддерживает подстановку переменных в именах задач / обработчиков: https://github.com/ansible/ansible/issues/10347 , поэтому эти примеры будут работать, как и ожидалось:

- name: upgrade software on {{inventory_hostname}}
- name: current host is {{ansible_hostname}}
anlar
источник
0

Я думаю, что вы должны написать {{ ansible_hostname }}после tasks:, потому что до этого он еще не собрал факты, поэтому он не может дать результат. Я могу ошибаться в концепции, но на практике она была успешной.

tasks:
  - name: Install the httpd on {{ ansible_hostname }}
    yum: 
      name: httpd 
      state: latest

сборник пьес

воспроизвести вывод

Пранав Кумар
источник