До сих пор мы использовали Geerlingguy Ansible роль для всех наших развертываний баз данных, но теперь я расширяю их использование для нового проекта, и мне кажется, что установка плагинов не поддерживается. Команда, которую мне нужно так или иначе выполнить в MySQL, это
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
Я сомневаюсь, что было бы неплохо даже подумать о сборе фактов и использовании модуля оболочки для непосредственного выполнения команд, но пока я не вижу других вариантов. Есть ли что-нибудь существенное, что я не заметил? Заранее спасибо.
Решается путем получения недостающего файла group_replication.so (я получил его из MySQL Community Edition), а затем его подготовки и включения с помощью этих двух задач Ansible:
- name: Provision the MySQL group_replication plugin
copy:
src: group_replication.so
dest: /usr/lib/mysql/plugin/group_replication.so
mode: 0644
- name: Install MySQL plugin group_replication
shell: >
mysql -u root -e "SHOW PLUGINS\G" | grep -q group_replication
&& echo -n FOUND
|| mysql -u root -e "INSTALL PLUGIN group_replication SONAME 'group_replication.so';"
register: plugin_state
changed_when: plugin_state.stdout != 'FOUND'
Сам плагин я поместил в локальную папку с файлами / файлами, чтобы Ansible мог найти.
Я думаю, вы могли бы создать файл sql с УСТАНОВИТЬ ПЛАГИН строку и используйте MySQL функция импорта модуля Ansible mysql_db запустить его.
Это может быть лучше, чем использование оболочки.
- name: Import sql similar to mysql -u <username> -p <password> < file.sql
mysql_db:
state: import
name: DATABASE-NAME
target: /path/to/import/file.sql