Ansible 最佳实践 - 何时使用 "ini_file"模块而不是 "copy"

标签 ansible

我努力寻找最佳实践或约定,使其更易于维护并让其他人阅读我的 Ansible 剧本/角色。假设我正在创建一个 ini 文件:

[drinks]
fav=lemonade
在 Ansible 中有多种方法可以做到这一点,我将提到两种:
  • 使用ini_file模块
  • 使用 copy 复制具有相同内容的文件模块

  • 哪种方法更可取?
    谢谢。

    最佳答案

    这取决于数据的来源。数据从何而来?

  • 如果文件可以从任何来源获得,请使用 copy模块。
  • 如果您想将该部分添加到现有文件中,请使用 ini_file模块。
  • 如果数据是结构化的,请使用 template模块。例如

  • my_ini_data:
      drinks:
        - key: fav
          val: lemonade
    
    shell> cat conf.ini.j2
    {% for section in my_ini_data.items() %}
    [{{ section.0 }}]
    {% for item in section.1 %}
    {{ item.key }}={{ item.val }}
    {% endfor %}
    {% endfor %}
    
        - template:
            src: conf.ini.j2
            dest: conf.ini
    

    shell> cat conf.ini
    [drinks]
    fav=lemonade
    
    除此之外,看看该模块的作者是个好主意。 templatecopy由 Ansible 核心团队维护。如果您有问题,请查看 open issues第一的。

    关于Ansible 最佳实践 - 何时使用 "ini_file"模块而不是 "copy",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64586710/

    相关文章:

    ansible - 自动运行剧本

    loops - 如何在 Ansible 中打破循环?

    shell - 如何在ansible shell任务中正确使用jq

    ansible - 如何在 Ansible 中取消服务的屏蔽?

    azure - 登录 Azure cli 以获取服务主体

    git - Vagrant ansible git clone 权限错误

    linux - Ansible权限问题

    linux - Ansible 条件基于结果的标准输出?

    ansible - 将文件的行转换为项目列表

    ansible - 可能以某种方式在剧本中使用通配符(或任何解决方法)?