程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Ansible 输出到文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Ansible 输出到文件?

开发过程中遇到Ansible 输出到文件的问题如何解决?下面主要结合日常开发的经验,给出你关于Ansible 输出到文件的解决方法建议,希望对你解决Ansible 输出到文件有所启发或帮助;

我想使用以下语法将每个 ansbile 主机的 mac 和 nics 获取到特定的 txt 文件:@H_301_1@

nic:XXXXX,MAC:XXXXXX
nic:XXXXX,MAC:XXXXXX

这样做的正确方法是什么?@H_301_1@

此时我只能将其作为我创建的剧本的输出:@H_301_1@

  - deBUG:
      msg: "nic:{{ (lookup('vars',concat)).device }},mac:{{ (lookup('vars',concat)).macaddress }}"
    vars:
      concat: "ansible_{{ item }}"
    loop: "{{ ansible_interfaces | difference(['lo']) }}"

剩下要做的就是使用上述语法将内容输出到文本文件。 我该怎么做?@H_301_1@

谢谢。@H_301_1@

解决方法

这是现场编写的,未经测试:您可能需要为未定义的变量添加一些测试和默认值。我还从您的问题中猜到您在某个时候需要文件中的主机名。如果我错了,请删除它。简而言之:

templates/nic_mac.txt.j2

{% for h in group['all'] %}
{% for i in (hostvars[h].ansible_interfaces | difference(['lo']) %}
host:{{ hostvars[h].inventory_hostname }},nic:{{ hostvars[h]['ansible_'+i].device }},MAC:{{ hostvars[h]['ansible_'+i].macaddress }}
{% endfor %}
{% endfor %}

playbook.yml

---
- name: Make sure we have facts for all hosts
  hosts: all
  # This play will only trigger facts gathering,nothing else

- name: Write nic and mac info to a file on controller
  hosts: localhost
  gather_facts: false

  tasks:
    - name: Write the file from template
      template:
        src: nic_mac.txt.j2
        dest: /tmp/nic_mac.txt

大佬总结

以上是大佬教程为你收集整理的Ansible 输出到文件全部内容,希望文章能够帮你解决Ansible 输出到文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。