у меня есть файл со строкой:
MYAPP.db.username.DEV=MYUSERNAME
Куда:
MYAPP mean name of applications
DEV means environment
MYUSERNAME means name of user for connection to db
Мне нужно заменить эти переменные в соответствии с переменными, которые у меня есть в каком-то скрипте. Я использую это:
- name: Replace line
shell: sed -i "/{{ name_of_app }}.db.username.{{ name_of_environment }}/c\\{{ name_of_app }}.db.username.{{ name_of_environment }}={{ name_of_user_to_db }}" /path/to/my/apps/{{ name_of_app }}/config/{{ name_of_app }}.config
Он работает нормально, но я вижу предупреждения в выводе ansible
[WARNING]: Consider using the replace, lineinfile or template module rather
than running sed. If you need to use command because replace, lineinfile or
template is insufficient you can add warn=False to this command task or set
command_warnings=False in ansible.cfg to get rid of this message.
changed:
Я пробовал это
- name: Replace line via replace method
replace:
dest: "/path/to/my/apps/{{ name_of_app }}/config/{{ name_of_app }}.config"
regexp: "{{ name_of_app }}.db.username.{{ name_of_environment }}"
replace: "{{ name_of_app }}.db.username.{{ name_of_environment }}={{ name_of_user_to_db }}"
и это
- name: Replace line via lineinfile method
lineinfile:
dest: "/path/to/my/apps/{{ name_of_app }}/config/{{ name_of_app }}.config"
regexp: "{{ name_of_app }}.db.username.{{ name_of_environment }}"
line: "{{ name_of_app }}.db.username.{{ name_of_environment }}={{ name_of_user_to_db }}"
backrefs: yes
каждый раз я получаю результат с ошибкой:
FAILED! => {"changed": false, "msg": "Unsupported parameters for (replace) module: when Supported parameters include: after, attributes, backup, before, content, delimiter, directory_mode, encoding, follow, force, group, mode, owner, path, regexp, remote_src, replace, selevel, serole, setype, seuser, src, unsafe_writes, validate"}
Можете ли вы мне помочь, где у меня ошибка в моей пьесе?
В replace
и lineinfile
использовать path
параметр для отметки
Файл, который нужно изменить.
lineinfile
модуль используется дляубедитесь, что [s] определенная строка находится в файле, или [чтобы] заменить существующую строку, используя регулярное выражение с обратной ссылкой.
Использовать
модуль замены, если вы хотите изменить несколько похожих строк
Я верю dest
параметр используется для модулей, создающих новые файлы, например template
или copy
.
Просто замените dest
с участием path
и оба предоставленных примера должны работать должным образом.