Я пытаюсь использовать следующую игру Ansible, чтобы изменить слабый пароль по умолчанию для ряда сценариев SQL:
- name: amend SQL User Passwords
sudo: yes
lineinfile: dest=/path/to/script/{{ item.file }} state=present backup=yes
regexp="CREATE USER (.*) PASSWORD 'password';$" line='CREATE USER \1 PASSWORD ''strongpassword'';' backrefs=yes
with_items:
- { file: create_db1_users_tables.sql }
- { file: create_db2_users_tables.sql }
- ...
- { file: create_dbNN_users_tables.sql }
Хотя спецификация YAML предполагает, что так и должно быть,
Внутри одинарных кавычек вы можете представить одинарную кавычку в своей строке, используя две одинарные кавычки рядом друг с другом.
двойная одинарная кавычка не действует как escape-символ; вместо этого они полностью удаляются из строки вывода:
CREATE USER user1 PASSWORD stR0ngP@55w0rD
вместо
CREATE USER user1 PASSWORD 'stR0ngP@55w0rD'
До сих пор я пробовал:
- Использование двойных кавычек — позволяет заключать пароль в одинарные кавычки, однако обратная ссылка больше не анализируется и просто выводится как \1. Попытка избежать этого, поскольку \\1, похоже, не имеет никакого эффекта.
- Различные способы экранирования одинарной кавычки - обратная косая черта, галочки. Большинство из них выдают синтаксические ошибки или просто ничего не выводят.
- Окружение всех аргументов lineinfile в двойных кавычках (и соответствующее экранирование всего внутри)
- Я не могу использовать модули базы данных Ansible
- Я не могу использовать шаблоны, сценарии создают и заполняют ряд таблиц и могут меняться между версиями продукта — поддерживать шаблоны в актуальном состоянии было бы слишком дорого.
Я нашел аналогичный вопрос Ansible, Quotes in ansible lineinfile, но решения не помогли .
Есть ли у кого-нибудь дополнительные предложения?
conf.d
, что даже лучше. - person tedder42   schedule 21.04.2015