2014-02-15 1 views
5

Следующее задание всегда вызывает уведомлениеПочему эта непонятная задача lineinfile всегда вызывает уведомление?

При первом запуске ansible применяется ожидаемое изменение, и строка изменяется. Если я запустить его снова, анзибль рассматривает его как «изменилось», несмотря на то, регулярное выражение не может соответствовать, так как линия стала «связывать-адрес = 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 

ответ

13

Обратитесь к the backrefs option из lineinfile модуля. В частности, «, если regexp не соответствует нигде в файле, файл останется без изменений». Рабочая игра будет выглядеть так:

- 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 
Смежные вопросы