Ansible - 访问库存别名

时间:2014-04-10 09:06:04

标签: ansible

有一个库存文件,如:

[my_hosts]
my_host ansible_ssh_host=123.123.123.123
my_host2 ansible_ssh_host=234.234.234.234

我想在模板中收集一些调试信息。

  • 如何在剧本/模板中访问别名变量? 即:

    debug: msg=Myhost is {{ ansible_host_alias }} 
    # Myhost is my_host
    # Myhost is myhost2
    

我尝试使用ansible -m setup my_host收集事实。变量ansible_hostnameHOSTNAMEHOST包含计算机的主机名,即echo $HOSTNAME,它与我的ansible别名不同。

2 个答案:

答案 0 :(得分:61)

我正在搜索的变量是内置功能:inventory_hostname

有关inventory_hostnameinventory_hostname_short的Ansible文档可在第Magic Variables, and How To Access Information About Other Hosts章中找到。

原始问题:https://groups.google.com/forum/#!topic/ansible-project/Oa5YXjHecIw

答案 1 :(得分:14)

您只需使用{{ ansible_ssh_host }}例如:

清单:

[my_hosts]
my_host ansible_ssh_host=127.0.0.1 my_host_alias=my_host

剧本:

---
- name: My Good playbook
  user: ubuntu
  hosts: all

  tasks:
    - name: My message
      debug: msg="Myhost is {{ ansible_ssh_host }}"

    - name: My message bogus
      debug: msg="My host alias is {{ my_host_alias }}"

执行:

$ ansible-playbook -i inventory play.yml

PLAY [My Good playbook] *******************************************************

GATHERING FACTS ***************************************************************
ok: [my_host]

TASK: [My message] ************************************************************
ok: [my_host] => {
    "msg": "Myhost is 127.0.0.1"
}

TASK: [My message bogus] ******************************************************
ok: [my_host] => {
    "msg": "My host alias is my_host"
}

PLAY RECAP ********************************************************************
my_host                    : ok=3    changed=0    unreachable=0    failed=0