【问题标题】:Ansible - Access inventory aliasAnsible - 访问库存别名
【发布时间】:2014-05-23 21:22:56
【问题描述】:

有一个清单文件,例如:

[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 别名不同。

【问题讨论】:

  • 请注意,ansible_ssh_host 在 v2.0 中已被弃用,取而代之的是 ansible_host。 (docs)。同样ansible_ssh_useransible_ssh_port 变成ansible_useransible_port。在旧版本的 Ansible 中,这些较短的变量会在没有警告的情况下被忽略。

标签: ansible


【解决方案1】:

我正在搜索的变量是一个内置功能: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

【讨论】:

  • 很棒的发现...我错过了那个。
【解决方案2】:

您可以简单地使用{{ 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

【讨论】:

  • 谢谢,但我想获取别名(所以输出应该是 'my_host')而不是 IP 地址。背景是:我正在尝试将现有基础架构与 ansible 集成,但我只获得了 IP 地址。在某些任务中,我正在收集有关服务器的信息(将统计信息写入模板),因此我想将别名放入模板
  • 谢谢,这个解决方案的问题是它的冗余:我定义了两次别名(这就是为什么我想知道别名是否有内置的 ansible 变量,但似乎没有东西)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-12
  • 2013-12-18
  • 1970-01-01
相关资源
最近更新 更多