“的变体;Ansible LINEINFLE添加重复行“;

“的变体;Ansible LINEINFLE添加重复行“;,ansible,Ansible,我试图让ansible在ubuntu中配置无人值守的升级。不幸的是,在多次运行角色时,我会得到重复的行 这是我的密码: - name: apt | Configure unattended-upgrades lineinfile: dest: /etc/apt/apt.conf.d/50unattended-upgrades regexp: "{{ item }}" line: "{{ harden_linux_unattended_up

我试图让ansible在ubuntu中配置无人值守的升级。不幸的是,在多次运行角色时,我会得到重复的行

这是我的密码:

- name: apt | Configure unattended-upgrades
  lineinfile:
    dest: /etc/apt/apt.conf.d/50unattended-upgrades
    regexp: "{{ item }}"
    line: "{{ harden_linux_unattended_upgrades_settings[item] }}"
    state: present
  with_items:
      - "{{ harden_linux_unattended_upgrades_settings | list }}"

运行它的结果是,它第一次工作正常。每次之后,我都会得到这个结果,并且(奇怪的是只有一些)重复行:

changed: [cloud-host] => (item=^Unattended-Upgrade::Mail)
changed: [cloud-host] => (item=^Unattended-Upgrade::MailReport)
ok: [cloud-host] => (item=^Unattended-Upgrade::Remove-Unused-Kernel-Packages)
ok: [cloud-host] => (item=^Unattended-Upgrade::Remove-Unused-Dependencies)
changed: [cloud-host] => (item=^Unattended-Upgrade::Automatic-Reboot)
changed: [cloud-host] => (item=^Unattended-Upgrade::Automatic-Reboot-Time)
在文件末尾显示以下内容:

Unattended-Upgrade::Mail "john@doe.com";
Unattended-Upgrade::Mail "john@doe.com";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Mail "john@doe.com";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Mail "john@doe.com";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Mail "john@doe.com";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::MailReport "on-change";
Unattended-Upgrade::Automatic-Reboot-Time "2:50";
我看到很多线程都有重复行的问题,但我无法确定我的问题。特别是,我不明白为什么这似乎与

Unattended-Upgrade::Remove-Unused-Kernel-Packages

我只是看不出和其他线路有什么区别


编辑: 谢谢你非常有用的回答!这就是我的结局(我也改变了其他部分):

你有:

    "^Unattended-Upgrade::Automatic-Reboot": 'Unattended-Upgrade::Automatic-Reboot "true";'
    "^Unattended-Upgrade::Automatic-Reboot-Time": 'Unattended-Upgrade::Automatic-Reboot-Time "2:50";'
第一个正则表达式
^无人值守升级::自动重新启动
同时匹配:
无人值守升级::自动重新启动
无人值守升级::自动重新启动时间

因此,第二次,它执行以下操作:

  • 匹配无人值守升级::自动重新启动,不执行任何操作
  • 匹配
    无人值守升级::自动重新启动时间
    并将其替换为
    无人值守升级::自动重新启动
  • 由于不再有
    无人值守升级::自动重新启动时间
    ,它会将其添加回去
现在,您有2个
自动重新启动
和1个
自动重新启动时间

对于
无人值守升级::邮件
无人值守升级::邮件报告

您可以通过匹配以下

Unattended-Upgrade::Remove-Unused-Dependencies
- name: apt | Configure unattended-upgrades
  lineinfile:
    dest: /etc/apt/apt.conf.d/50unattended-upgrades
    regexp: "^{{ item }}\\s"
    line: '{{ item }} "{{ harden_linux_unattended_upgrades_settings[item] }}";'
    state: present
  with_items:
      - "{{ harden_linux_unattended_upgrades_settings | list }}"
harden_linux_unattended_upgrades_settings:
    "Unattended-Upgrade::Mail": "{{ ubuntu_common_email }}"
    "Unattended-Upgrade::MailReport": "on-change" # later if working set to "only-on-error"
    "Unattended-Upgrade::Remove-Unused-Kernel-Packages": "true"
    "Unattended-Upgrade::Remove-Unused-Dependencies": "true"
    "Unattended-Upgrade::Automatic-Reboot": "true"
    "Unattended-Upgrade::Automatic-Reboot-Time": "2:50"
    "^Unattended-Upgrade::Automatic-Reboot": 'Unattended-Upgrade::Automatic-Reboot "true";'
    "^Unattended-Upgrade::Automatic-Reboot-Time": 'Unattended-Upgrade::Automatic-Reboot-Time "2:50";'