Ansible:ansible_domain 或facter_domain - 如何获取清单文件中提到的主机名的域值

Aru*_*gal 4 domain-name ansible ansible-2.x ansible-facts

安塞布尔 1.9.2 / 1.9.4
CentOS 6.7

在我的库存文件中,我有:

[zabbix_server]
zabbix.dev-white.projectname.jenkins

[some_other_zabbix_server]
someotherzabbix.dev-blue.project.jenkins ansible_ssh_host=10.120.133.11
Run Code Online (Sandbox Code Playgroud)

当我跑步时:

ansible -m setup -i hosts zabbix.dev-white.projectname.jenkins 
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

zabbix.dev-white.projectname.jenkins | zabbix.dev-white.projectname.jenkins | zabbix.dev-white.projectname.jenkins FAILED => FAILED:没有可用的身份验证方法

在我的剧本中,我试图获取 zabbix 服务器的域值,即 dev-white.projectname.jenkins。我尝试了以下但用于显示域值的变量为空白/空,为什么?

注意: inventory_hostname 的值显示正确!但 ansible_domain /facter_domain 的域值作为空白/空值。

- debug: msg="My server is= {{ hostvars[groups['zabbix_server'][0]].inventory_hostname }} and domain is= {{ hostvars[groups['zabbix_server'][0]].ansible_domain }} --- {{ hostvars[groups['zabbix_server'][0]]['inventory_hostname'] }} -- {{ hostvars[groups['zabbix_server'][0]]['ansible_domain'] }} -- -- {{ hostvars[groups['zabbix_server'][0]]['facter_domain'] }}"
Run Code Online (Sandbox Code Playgroud)

尝试了 some_other_zabbix_server 组变量(其中设置了 ansible_ssh_host 变量)的上述代码,仍然没有值来显示其域。PS: ansible_ssh_host 属性将在较新的 Ansible 版本中被弃用

hel*_*loV 5

一种方法是拆分并连接除第一部分之外的所有部分。

  - debug: var="{{ groups['zabbix_server'][0].split('.')[1:] | join('.') }}"
Run Code Online (Sandbox Code Playgroud)

结果:

  "dev-white.projectname.jenkins"
Run Code Online (Sandbox Code Playgroud)

  • 不需要 join 只需使用 `.split('.', 1)[1]` (6认同)