Ansible

Ansible 在任務名稱中使用 inventory_hostname 或 ansible_hostname

  • December 3, 2019

我正在編寫滾動升級手冊,並想列印出目前已升級主機的主機名。

我在任務名稱中輸入了inventory_hostnameandansible_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"
   }
}

那麼我應該怎麼做才能在任務名稱描述中使用這些變數。

謝謝

從 v2.0 開始,Ansible 支持在任務/處理程序名稱中進行變數替換:https ://github.com/ansible/ansible/issues/10347 ,因此這些範例將按預期工作:

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

我認為你應該在{{ ansible_hostname }}之後寫tasks:,因為在此之前它還沒有收集事實,所以它不能給出結果。我在這個概念上可能是錯誤的,但在實踐中它是成功的。

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

劇本

播放輸出

引用自:https://unix.stackexchange.com/questions/202161