Ansible 从 hosts 文件获取主机名

Ansible 从 hosts 文件获取主机名

我希望能够从 hosts 文件中获取组中第一个主机的前 8 个字符。因此,在下面的示例中,我希望分配一个变量xx33sx01。我知道我可以使用 inventory_hostname 来获取主机,但它会返回所有 4 个,而我只需要第一个主机和前 8 个字符。

Ansible 示例清单(INI 样式):

[TEST1]
xx33sx0101.domain.com
xx33sx0102.domain.com
xx33sx0103.domain.com
xx33sx0104.domain.com

ansible-playbook /local_home/scripts/test.yml -i ~/hosts -e "target=TEST1" -K

答案1

要获取组中第一个主机名的前 8 个字符,请尝试

- debug:
    msg: "{{ groups[target_group][0][:8] }}"
  vars:
    target_group: TEST1

(未经测试)


  • 当然,要使调试任务正常工作,该组必须对剧本可用。例如
- hosts: all
  tasks:
    - debug:
        msg: "{{ groups[target_group][0][:8] }}"

相关内容