Как с помощью Ansible создать базу данных для PostgreSQL с кодировкой ru_RU.UTF-8?
Насколько я знаю, для того, чтобы создать базу данных с кодировкой ru_RU.UTF-8, нужно пересоздать кластер с соответствующей кодировкой (иначе будет ошибка вида "Database query failed: invalid locale name"). Но при удалении существующего кластера удалятся и данные. Как сделать так, чтобы при запуске соответствующего плейбука, происходило это только тогда, когда кодировка не ru_RU.UTF-8 (чтобы базу с данными не удалить)?
MaxKozlov, за ссылку спасибо - как вариант, можно эту функцию использовать и сравнивать кодировку. Но что касается "то надо и удалять ведь" - да, но только тогда, когда кодировка базы не ru_RU.UTF-8 (нужно это условие проверять), либо при отсутствии базы. Иначе при запуске плейбука база будет пересоздаваться каждый раз, как я понимаю - соответственно данные удалятся.
MaxKozlov, я пришёл к выводу, что самый правильный способ - это сначала проверять наличие базы данных и, если её нет, пересоздавать кластер с нужной локалью - и после этого уже создавать базу. Тогда при последующих запусках плейбука база гарантированно не удалится, потому что кластер пересоздаваться уже не будет (т.к. база существует). Но вот как проверять существование PostgreSQL базы данных я пока не понял.
Спасибо. Это видел, но не очень представляю, как правильно применить. С помощью postgresql_info проверять наличие базы и, если её ещё нет, пересоздавать кластер с нужной локалью?
Может быть, кому-то поможет. Вопрос в итоге решился, но другим способом. Выяснилось, что пересоздавать кластер вовсе не нужно было. Просто после генерации локалей надо перезапустить PostgreSQL и только после этого создавать базу с кодировкой ru_RU.UTF-8. Причём почему-то в моём случае рестарт PostgreSQL через notify после генерации локалей почему-то не помог, и я сделал по-другому: сперва сгенерировал локали, а только потом установил PostgreSQL - и так всё получилось.