如何使用Ansible获取主机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

我正在尝试创建一个任务,该任务将获取资源清册中的主机目标IP地址和主机名,然后将其保存到本地目录中的文件中

希望按如下方式保存数据:

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。