Ansible заменить playbook - PullRequest
0 голосов
/ 04 июня 2018

Я недавно начал изучать ANSIBLE, и теперь у меня есть один вопрос:

вот моя книга игр:

    ---
- name: execute command with sudo
  hosts: all
  user: root
  become: yes
  tasks:
     - name: executing
       command: sed -i "s/print_thresholds($name,undef,undef,92,98);/#print_thresholds($name,undef,undef,92,98);/g" /etc/munin/plugins/df

она работала нормально, Sed заменил мне все, что мне нужно, ноя получил это предупреждение.

[ПРЕДУПРЕЖДЕНИЕ]: рассмотрите возможность использования модуля replace, lineinfile или template вместо использования sed.Если вам нужно использовать команду из-за того, что команды replace, lineinfile или template недостаточно, вы можете добавить к этой командной задаче warn = False или установить в ansible.cfg command_warnings = False, чтобы избавиться от этого сообщения.

такподскажите пожалуйста исправьте playbook?

1 Ответ

0 голосов
/ 04 июня 2018

Прежде всего вы должны прочитать о модуле lineinfile , как указано в предупреждении.

Тогда, хотя ваш код и использование sed правильные, это не самый безопасный способиспользуйте Ansible для редактирования файла, главным образом потому, что он не идемпотентен и устойчив к ошибкам, как при использовании модуля Ansible.

Этот код дает тот же (в некоторых случаях лучше) результат, что и команда sed, но с использованием lineinfileмодуль:

- name: executing
  lineinfile:
    path: /etc/munin/plugins/df
    regexp: 'print_thresholds($name,undef,undef,92,98)'
    line: '^#print_thresholds($name,undef,undef,92,98)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...