10

以下任务总是触发通知

第一次运行 ansible 时,应用了预期的更改,并更改了行。如果我再次运行它,ansible 将其视为“已更改”,即使正则表达式不可能匹配,因为该行已变为“bind-address = 0.0.0.0”

为什么 ?

  - name: Ensure MySQL will listen on all ip interfaces (bind to 0.0.0.0)
    lineinfile: dest=/etc/mysql/my.cnf
      regexp='bind-address\s*=\s*127\.0\.0\.1\s*'
      line='bind-address   = 0.0.0.0'
      state=present
      insertafter=EOF
    notify: restart mysql
4

1 回答 1

21

请参阅模块backrefs选项lineinfile具体来说,“如果正则表达式与文件中的任何位置都不匹配,则文件将保持不变。” 一个有效的游戏应该是这样的:

- name: Ensure MySQL will listen on all ip interfaces (bind to 0.0.0.0)
  lineinfile: dest=/etc/mysql/my.cnf
    regexp='bind-address\s*=\s*127\.0\.0\.1\s*'
    line='bind-address   = 0.0.0.0'
    state=present
    backrefs=yes
  notify: restart mysql
于 2014-02-15T22:37:52.123 回答