如何使用Ansible获取主机IP和主机名
我正在尝试创建一个任务,该任务将获取资源清册中的主机目标IP地址和主机名,然后将其保存到本地目录中的文件中 希望按如下方式保存数据:如何使用Ansible获取主机IP和主机名,ansible,ansible-inventory,ansible-facts,Ansible,Ansible Inventory,Ansible Facts,我正在尝试创建一个任务,该任务将获取资源清册中的主机目标IP地址和主机名,然后将其保存到本地目录中的文件中 希望按如下方式保存数据: hostname:ip-address 从哪里开始?我建议使用“delegate\u to”,我在我的电脑上试过,它工作正常。我把第一步删除文件,如果它存在,以便它可以执行多次。这是一个非常快速的示例,我建议使用变量作为路径等,但我认为您可以理解 --- - hosts: your_inventory tasks: - name: delete t
hostname:ip-address
从哪里开始?我建议使用“delegate\u to
”,我在我的电脑上试过,它工作正常。我把第一步删除文件,如果它存在,以便它可以执行多次。这是一个非常快速的示例,我建议使用变量作为路径等,但我认为您可以理解
---
- hosts: your_inventory
tasks:
- name: delete the file if exists
file:
path: /home/yourpath/host_ip.txt
state: absent
delegate_to: localhost
- name: get data to a file
lineinfile:
dest: /home/yourpath/host_ip.txt
create: yes
line: "{{hostvars[inventory_hostname].ansible_hostname}}:{{hostvars[inventory_hostname].ansible_default_ipv4.address}}"
delegate_to: localhost
在文档中,以及在“如果我理解正确”,我的答案符合他的问题。嘿,让我试一试,然后告诉你。我刚刚注意到我从代码中删除了清单(-hosts)让我添加它。非常感谢,它工作了很多,但是有人可以不添加localhost组吗??像在清单中一样,我有两个组,本地组是本地主机,服务器组是服务器的多个ip地址。因此,我希望指定只选择服务器组中主机的主机名和ip。