Ansible은 작업 이름에 Inventory_hostname 또는 ansible_hostname을 사용합니다.

Ansible은 작업 이름에 Inventory_hostname 또는 ansible_hostname을 사용합니다.

롤링 업그레이드 플레이북을 작성 중이며 현재 업그레이드된 호스트의 호스트 이름을 인쇄하고 싶습니다.

작업 이름에 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"
    }
}

그러면 작업 이름 설명에 이러한 변수를 사용하려면 어떻게 해야 합니까?

감사해요

답변1

v2.0부터 Ansible은 작업/핸들러 이름에서 변수 대체를 지원합니다.https://github.com/ansible/ansible/issues/10347이므로 다음 예제는 예상대로 작동합니다.

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

답변2

그 전에는 사실을 수집하지 않아서 결과를 줄 수 없기 때문에 {{ ansible_hostname }}뒤에 써야 한다고 생각합니다 . tasks:내 개념이 틀렸을 수도 있지만 실제로는 작동합니다.

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

스크립트

출력 재생

관련 정보