Ansible użyj nazwy hosta inwentarzowego lub nazwy hosta ansible w nazwie zadania


19

Piszę poradnik dotyczący aktualizacji kroczącej i chciałbym wydrukować nazwę hosta aktualnego hosta, który został zaktualizowany.

Włożyłem inventory_hostnamei ansible_hostnamew nazwach zadanie, ale to nie pomogło

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

debugowanie działa dobrze

- name: Test a variable
  debug: var=inventory_hostname

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

Co powinienem zrobić, aby móc używać tych zmiennych w opisach nazw zadań.

Dzięki


4
Obecnie podstawienia zmiennych nie można wykonywać z nazwy. Zobacz tutaj
cuonglm

Odpowiedzi:


27

Począwszy od wersji 2.0 Ansible obsługuje podstawianie zmiennych w nazwach zadań / procedur obsługi: https://github.com/ansible/ansible/issues/10347 , więc te przykłady będą działać zgodnie z oczekiwaniami:

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

0

Myślę, że powinieneś napisać {{ ansible_hostname }}po tasks:, ponieważ wcześniej nie zebrał jeszcze faktów, więc nie może dać rezultatu. Mogę się mylić co do koncepcji, ale w praktyce okazała się skuteczna.

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

poradnik

odtwarzać wyjście

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.