Предположим, у вас есть sql-файл database.sql, который создает схему базы данных, таблицу внутри нее и некоторую начальную заливку. Обычно я могу использовать эту возможность для создания этой базы данных:Как создать большую базу данных с Ansible
---
- name: copy database.sql to server
template: src=database.sql dest=/tmp/database.sql owner=root group=root
- name: sql the thing into MySQL
command: mysql "-u root -p{{ mysql_root_password }} < /tmp/database.sql"
- name: remove the sql file from the server
command: rm -f /tmp/database.sql
и это делает именно то, что говорит. Но когда database.sql большой (возможно, 2 TByte), вы действительно не хотите, чтобы действие копирования было первым. Есть ли способы ссылаться на файл database.sql в качестве файла на сервере-несущем сервере (откуда мы его выталкиваем), так что вы можете сделать «локальный файл» mysql -u root @ master -p ... < таким образом, чтобы копировать действие больше не нужно?
Спасибо за ваш ответ. Для centos/debian mysql_db отлично работает. Кажется, что в пакетах есть несоответствие, когда я устанавливаю доступный на RHEL 6 через epel. Начнем с того, что версия jinja на epel не является той, которая используется здесь (мне нужно было вручную загрузить rpm jinja2 python). Та же проблема с mysql_db. Тогда модуль python_mysqldb, необходимый для этого, не тот, что на epel. –
Я думаю, что это в базовых репозиториях (yum install MySQL-python). Для Jinja2 это странно, поскольку в файле спецификации RPM есть «Требуется: python-jinja2» (https://github.com/ansible/ansible/blob/devel/packaging/rpm/ansible.spec). Тем не менее, я не использую CentOS, поэтому я действительно мало знаю об этом, извините :( – leucos