使用 Molecule 进行 Ansible 配置的设置


当创建ansible role时,如果不放置ansible.cfg并保持默认设置,则无法自动执行become(sudo),或者在失败时创建playbook.retry文件。然而,由于每次都在执行时设置参数很麻烦,所以常常使用ansible.cfg来进行配置,如下所示。

[defaults]
retry_files_enabled = False

[privilege_escalation]
become              = True

当想要在Molecule1上执行该操作时,应该如何使用ansible来应用呢?

前提

    • molecule の driver を vagrant にしている

おそらく vagrant 以外は発生しない

不好的例子

将 molecule.yml 文件中的 provisioner 的 env 参数设置为 ANSIBLE_CONFIG 的方法如下:

provisioner:
  name: ansible
  env:
    ANSIBLE_CONFIG: PATH/TO/ansible.cfg

一开始看起来很好,但是当将 provisioner 改为 vagrant 时(比如在进行网络配置更改测试时),失败了。

分子将通过ansible在测试Vagrant上启动,但在此过程中也将应用上述的ansible.cfg,并且在执行环境中尝试使用sudo进行操作时,由于分子执行用户缺少sudo权限,因此provision会失败。

答案正确

provisioner:
  name: ansible
  options:
    become: True
  config_options:
    defaults:
      retry_files_enabled: False

当通过选项和配置选项将其指定给提供程序时,它不会在启动vagrant时应用,而仅在提供时生效。

顺便问一下,在config_options中是否可以进行所有的设置呢?我认为只有默认或特权提升这两个键可以设置。

分子的资料在这里: https://qiita.com/ysknkd/items/c738bb01f355dc378e94 ↩

https://github.com/metacloud/molecule/blob/6fabd378ed5cd8d9ec1803df2a777afd95e41037/molecule/model/schema_v2.py#L273-L296 ↩

广告
将在 10 秒后关闭
bannerAds