Ansible 在任务名称中使用 inventory_hostname 或 ansible_hostname

Ansible 在任务名称中使用 inventory_hostname 或 ansible_hostname

我正在编写滚动升级手册,并想打印出当前已升级主机的主机名。

我将inventory_hostnameansible_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

我认为你应该在 the{{ ansible_hostname }}之后写tasks:,因为在此之前它还没有收集事实,所以它无法给出结果。我的概念可能是错误的,但实际上它是成功的。

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

剧本

播放输出

相关内容