我想从主机上提取所有接口名称,然后打印该接口的所有信息。
--- # 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 %}
到目前为止,我无法打印信息,而Ansible将我的输入ansible _ {{int}}作为文字。
答案 0 :(得分:0)
下面的戏
@RestController
public class GreetingController {
@RequestMapping("/hello/{name}")
String hello(@PathVariable String name) {
return "Hello, " + name + "!";
}
@PostMapping(path = "/departments", produces = MediaType.APPLICATION_XML_VALUE, consumes = MediaType.APPLICATION_XML_VALUE)
@ResponseBody
Departments newEmployee(@RequestBody List<Department> departments) {
Departments departmentsObj = new Departments();
for(Department department : departments) {
System.out.println(department);
}
departmentsObj.setDepartment(departments);
return departmentsObj;
}
}
使用此模板
- command: "ifconfig {{ item }}"
register: result
loop: "{{ ansible_interfaces }}"
- template:
src: template.j2
dest: int.txt
delegate_to: localhost
在 localhost 中创建带有接口数据的文件 int.txt 。
答案 1 :(得分:0)
我真正不明白的是,您正在调用服务器来收集有关其接口的信息,并将文件发送回同一台服务器,其中包含您可以随时再次收集的信息。我看不出重点,但我们继续。
应用KISS原理:调用ifconfig
,它将返回所有接口的详细信息并将结果存储在远程主机上的文件中
playbook.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
是因为您要在root的主目录中写入文件。如果您在具有适当权限的其他任何地方写入文件,则ifconfig本身可由任何人执行gather_facts: false
将加快完成这一项简单任务的工作簿。shell
模块对于将输出重定向到文件是必需的。如果您担心安全性,则可以改用command
模块(无需文件重定向),使用register
捕获输出,然后在下一个任务中将内容写入文件中。ifconfig
正在输出您所需的信息。如果不是这种情况,则需要重写您的问题,并更准确地了解您要实现的目标。