我想从主机中提取所有接口名称,然后打印该接口的所有信息。
--- # 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
正在输出你需要的信息。如果不是这样的话,你需要重写你的问题,更准确地说明你正在努力实现的目标。