我想从主机中提取所有接口名称,然后打印该接口的所有信息。

--- # Fetches network interfaces with IPs
- hosts: hta
  gather_facts: yes
  become: yes
  tasks
- debug: msg=" {{ ansible_interfaces|length }}"
  register: num
- name: moving template over to server
  template: src=templates/network.j2 dest=/root/network_info.txt

以及network.j2文件
{% for int in ansible_interfaces %}
Interfaces: Interface-{{ int }}
Data: ansible_{{ int }}
{% endfor %}

到目前为止,我无法打印信息,ansibe将输入ansibe{{{int}作为文本。

最佳答案

我不太明白的是,你打电话给一个服务器是为了收集有关其接口的信息,并将一个文件发送回同一个服务器,其中包含你随时可以再次收集的信息。我真的不明白重点,但我们来了。
应用kiss原理:callifconfig将返回所有接口的详细信息,并将结果存储在远程主机上的文件中
剧本.yml

- name: Simple interface info dump on hosts
  hosts: whatevergroup_you_need
  become: true
  gather_facts: false

  tasks:
    - name: dump ifconfig result to /root/network_interface.txt
      shell: ifconfig > /root/network_interfaces.txt

笔记:
become: true是唯一需要的,因为您想在根目录的家中写入文件。如果您使用适当的权限在其他任何地方编写文件,ifconfig本身可由任何人执行
由于不需要从主机收集任何其他信息,gather_facts: false将为这项简单的任务加快playbook的速度。
shell模块对于文件的输出重定向是必需的。如果您关心安全性,则可以改用command模块(无需文件重定向),用register捕获输出并在下一个任务中将内容写入文件
我以为你在调用Linux主机,而ifconfig正在输出你需要的信息。如果不是这样的话,你需要重写你的问题,更准确地说明你正在努力实现的目标。

09-25 22:55