从多个ansible角色更新同一文件的最佳方法

从多个ansible角色更新同一文件的最佳方法,ansible,ansible-role,Ansible,Ansible Role,我正试图写我的第一本ansible playbook来设置我的Arch Linux工作站和服务器。到目前为止,一切都很好,但现在我遇到了一个问题,我真的无法控制自己 我试图让多个角色需要更改mkinitcpio.conf文件,通常在同一行中 目前我有一个角色mkinitcpio,它根据模板生成/etc/mkinitcpio.conf文件 组变量/all.yml 角色/mkinitcpio/tasks/main.yml 角色/mkinitcpio/handlers/main.yml 角色/mkin

我正试图写我的第一本ansible playbook来设置我的Arch Linux工作站和服务器。到目前为止,一切都很好,但现在我遇到了一个问题,我真的无法控制自己

我试图让多个角色需要更改mkinitcpio.conf文件,通常在同一行中

目前我有一个角色mkinitcpio,它根据模板生成/etc/mkinitcpio.conf文件

组变量/all.yml

角色/mkinitcpio/tasks/main.yml

角色/mkinitcpio/handlers/main.yml

角色/mkinitcpio/templates/mkinitcpio.conf.j2

现在我有了第二个角色普利茅斯,它还必须更新mkinitcpio.conf,这取决于是否安装它。 它必须在systemd和autodetect之间添加sd plymouth,然后通知generate mkinitcpio

到目前为止,我提出的解决方案是: 1.) 使普利茅斯角色依赖于mkinitcpio角色。 普利茅斯角色安装普利茅斯,然后通过lineinfle模块修改钩子线。之后,如果需要,它会通知generate mkinitcpio

如果添加更多角色,此解决方案将变得非常复杂,这可能会更新mkinitcpio.conf文件

2.)向roles/mkinitcpio/templates/mkinitcpio.conf.j2添加另一个条件:

使mkinitcpio角色依赖于plymouth角色,以便它首先安装plymouth。之后,mkinitcpio角色将更新完整的mkinitcpio.conf文件,并在需要时通知generate mkinitcpio

这个解决方案在我看来并不正确,因为它具有“反向依赖性”

我希望我描述的问题是可以理解的,你可以给我一些最好的解决方法的建议。提前谢谢你

encryption
  enabled: true
- name: Generate mkinitcpio.conf
  template:
    src: mkinitcpio.conf.j2
    dest: /etc/mkinitcpio.conf
  notify:
    - generate mkinitcpio
- name: generate mkinitcpio
  comand: mkinitcpio -p linux
HOOKS=(base systemd autodetect keyboard sd-vconsole modconf block {% if encryption.enabled == true %}sdencrypt {% endif %}sd-lvm2 filesystems fsck)
HOOKS=(base systemd {% if plymouth == true %}sd-plymouth {% endif %}autodetect keyboard sd-vconsole modconf block {% if encryption.enabled == true %}sdencrypt {% endif %}sd-lvm2 filesystems fsck)