Ansible mysqldb добавить строку базы данных
Можно ли добавить оператор базы данных add-drop в дамп, сгенерированный mysql_db?
Мой модуль работает нормально, и дамп хорошо сгенерирован, но я хочу добавить строку "-B --add-drop-database" (как в команде mysqldump), чтобы получить в начале дампа:
DROP DATABASE IF EXISTS `my_db`*/;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `my_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `my_db`;
2 ответа
Вы можете попробовать создать пользовательский my.cnf
с
[mysqldump]
add-drop-database
И пройти my.cnf
путь как config_file
параметр для модуля mysql_db.
Ансибльmysql_db
когда используешьstate=dump
на самом деле работаетmysqldump
на заднем фоне.
Таким образом, в Ansible вы можете передать любой аргумент, который вы можете найти при запуске.mysqldump --help
с опцией:dump_extra_args
Итак, в вашем случае playbook может выглядеть так:
- name: "Export databases to local file {{dump_prefix}}_*.sql"
mysql_db:
name : "{{ item }}"
state : dump
target: "{{dump_prefix}}_{{item}}.sql"
login_user : "{{ from_user }}"
login_password: "..."
login_host : "{{ from_server }}"
dump_extra_args: --column-statistics=0 --add-drop-database