[Системное администрирование, MySQL, Серверное администрирование, Администрирование баз данных] Создаем базу данных MySQL с Ansible (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Фото Courtesy Of Pexels.com
Ansible идеально подходит для деплоймента MySQL на сервере без лишних усилий с нашей стороны. Давайте вместе посмотрим, как это происходит. Даже если у вас пока нет опыта с Ansible, вы легко во всем разберетесь. Мы используем образ Docker с Ansible, как описано в этой статье.
Чтобы создать базу данных MySQL, мы выполним несколько действий:
- Создадим файл hosts (не так уж и нужен в таком простом примере, но всегда используется в реальных проектах).
- Создадим плейбук. Обычно это самая главная часть, так что мы изучим его построчно.
- Создадим файл SQL. Это необязательно, но с его помощью можно создать данные для базы данных, чтобы потом протестировать ее.
- Протестируем внесенные изменения.
Перейдем к делу.
1. Создаем файл hosts
Это не обязательный файл, но мы предпочитаем запускать плейбук с его помощью для тестов на localhost. Потом можно изменить IP-адрес, чтобы перенестись в другую среду. Здесь в файле hosts всего одна запись (можете скопировать ее): touch hosts
[mysql]
127.0.0.1
2. Создаем плейбук MySQL
Здесь происходит самое интересное: устанавливаются приложения, настраиваются так, как нам нужно, создается тестовая база данных и в нее добавляются данные. Все эти настройки нужно где-то хранить, так что начнем с создания файла db-server-playbook.yml:
touch db-server-playbook.yml
Открываем созданный файл в текстовом редакторе и для начала указываем хосты, куда будем деплоить ресурсы (в строке 2 нам как раз пригодится созданный файл hosts). Затем задаем переменную для mysql_root_password в строках 4 и 5. Здесь мы указываем пароль открытым текстом только для демонстрации. В реальном мире мы использовали бы, например, ansible-vault или переменную командной строки:
Примечание: Не добавляйте номера в начале каждой строки — мы пронумеровали их просто для ясности.
1 ---
2 - hosts: mysql
3
4 vars:
5 mysql_root_password: password
6
Настроив переменные, начинаем определять задачи. Для начала мы устанавливаем mysql с помощью apt для установки в образе Ubuntu Docker. Еще можно было бы использовать модуль package или yum, если бы у нас был образ Centos:
7 tasks:
8 - name: install mysql
9 apt:
10 name: mysql
11 update_cache: yes
12 cache_valid_time: 3600
13 state: present
Настроим задачи, чтобы убедиться, что сервис mysql работает и будет запущен при старте:
14 - name: start up the mysql service
15 shell: "service mysql start"
16 - name: ensure mysql is enabled to run on startup
17 service:
18 name:mysql
19 state:started
20 enabled:true
Теперь можно настроить пароль для всех корневых аккаунтов в установке mysql. Хотя mysql устанавливается только на одном хосте (образ Docker), на него ссылаются другие имена, включая localhost и 127.0.0.1. Для всех нужно указать модуль mysql_user и набор привилегий, как в примере ниже, где используется директива with_item:
21 - name: update mysql root password for all root accounts
22 mysql_user:
23 name: root
24 host: "{{ item }}"
25 password: "{{ mysql_root_password }}"
26 login_user: root
27 login_password: "{{ mysql_root_password }}"
28 check_implicit_admin: yes
29 priv: "*.*:ALL,GRANT"
30 with_items:
31 - "{{ ansible_hostname }}"
32 - 127.0.0.1
33 - ::1
34 - localhost
После настройки MySQL можем использовать модуль mysql_db, чтобы создать тестовую базу данных в строках 37-40, а затем в строках 46-51 импортируем в нее данные из файла SQL, который мы скоро создадим:
35 - name: create a new database
36 mysql_db:
37 name: testdb
38 state: present
39 login_user: root
40 login_password: "{{ mysql_root_password }}"
41 - name: add sample data to database
42 copy:
43 src:dump.sql
44 dest:/tmp/dump.sql
45 - name: insert sample data into database
46 mysql_db:
47 name: testdb
48 state: import
49 target: /tmp/dump.sql
50 login_user: root
51 login_password: "{{ mysql_root_password }}"
Сохраним плейбук и создадим файл SQL с тестовыми данными, которые можно импортировать в БД.
3. Создаем файл SQL
В нем содержатся данные для БД. Таблица очень простая, но можно получить представление о том, как это работает. Те же принципы вы сможете применять, чтобы создавать таблицы, схемы и данные.
Для начала создадим файл dump.sql:
touch dump.sql
Откроем файл в текстовом редакторе и добавим код, как показано ниже, чтобы создать новую таблицу test и добавить три строки INSERT:
CREATE TABLE IF NOT EXISTS test (
message varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO test(message) VALUES('Ansible To Do List');
INSERT INTO test(message) VALUES('Get ready');
INSERT INTO test(message) VALUES('Ansible is fun')
4. Запуск плейбука Ansible
Если мы все сделали правильно, можно запустить плейбук из командной строки командой ansible-playbook. Выполним следующую команду, чтобы запустить плейбук из каталога, где мы его создали:
ansible-playbook -i hosts db-server-playbook.yml
Это маленький плейбук всего с одним пакетом, а в базе данных мало данных, так что результаты работы плейбука очень скоро будут готовы для тестирования.
5. Тестируем внесенные изменения
Если все в порядке, тест с хоста пройдет успешно. Мы войдем в MySQL, перейдем в базу данных testdb, отобразим все таблицы в базе данных и, наконец, выведем все данные в таблице test, которую мы создали с Ansible:
mysql -u root -h localhost -p Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 8.0.22-0ubuntu0.20.04.3 (Ubuntu) mysql> use testdb;
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| test |
+------------------+
1 row in set (0.00 sec) mysql> select * from test;
+--------------------+
| message |
+--------------------+
| Ansible To Do List |
| Get ready |
| Ansible is fun |
+--------------------+
3 rows in set (0.00 sec)
Вот и все. Ничего особенного, правда? Всего несколько минут и несколько строк в Ansible — и у нас есть рабочая база данных.
В книге Practical Ansible: Configuration Management from Start to Finish подробно описывается, как оптимизировать управление конфигурацией с помощью Ansible.
===========
Источник:
habr.com
===========
===========
Автор оригинала: Vince Sesto
===========Похожие новости:
- [Серверное администрирование, Администрирование баз данных, Хранение данных, Хранилища данных] Автоматизация в центрах обработки данных
- [Системное администрирование, MySQL, IT-инфраструктура] Безотказный Zabbix: миграция с асинхронной на групповую репликацию
- [Системное администрирование, *nix, Разработка под Linux] Заметки о Unix: надёжная работа с API C-библиотеки Unix возможна только из программ, написанных на C (перевод)
- [PostgreSQL, Администрирование баз данных] Этюд — копированию баз данных PostgreSQL без использования pg_dump
- [Информационная безопасность, Системное администрирование, *nix] В bash безобидная с виду конструкция [[ $var -eq 42 ]] умеет выполнять и произвольный код (перевод)
- [Тестирование IT-систем, Администрирование баз данных] Типы угроз для базы данных (перевод)
- [Системное администрирование, Карьера в IT-индустрии, DevOps, Kubernetes] Как проходит DevOps-стажировка в Southbridge
- [Информационная безопасность, Системное администрирование, Антивирусная защита, Разработка под Windows, Софт] Бэкдор в Win 10 Tweaker, или современные методы борьбы с пиратством
- [Информационная безопасность, Системное администрирование, Сетевые технологии] 4. Континент 4 Getting Started. Веб-защита
- [Oracle, Администрирование баз данных, Хранение данных] Решение проблемы безопасности данных интегрированными средствами Oracle
Теги для поиска: #_sistemnoe_administrirovanie (Системное администрирование), #_mysql, #_servernoe_administrirovanie (Серверное администрирование), #_administrirovanie_baz_dannyh (Администрирование баз данных), #_ansible, #_mysql, #_ansible_playbook, #_blog_kompanii_southbridge (
Блог компании Southbridge
), #_sistemnoe_administrirovanie (
Системное администрирование
), #_mysql, #_servernoe_administrirovanie (
Серверное администрирование
), #_administrirovanie_baz_dannyh (
Администрирование баз данных
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:53
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Фото Courtesy Of Pexels.com Ansible идеально подходит для деплоймента MySQL на сервере без лишних усилий с нашей стороны. Давайте вместе посмотрим, как это происходит. Даже если у вас пока нет опыта с Ansible, вы легко во всем разберетесь. Мы используем образ Docker с Ansible, как описано в этой статье. Чтобы создать базу данных MySQL, мы выполним несколько действий:
Перейдем к делу. 1. Создаем файл hosts Это не обязательный файл, но мы предпочитаем запускать плейбук с его помощью для тестов на localhost. Потом можно изменить IP-адрес, чтобы перенестись в другую среду. Здесь в файле hosts всего одна запись (можете скопировать ее): touch hosts [mysql]
127.0.0.1 2. Создаем плейбук MySQL Здесь происходит самое интересное: устанавливаются приложения, настраиваются так, как нам нужно, создается тестовая база данных и в нее добавляются данные. Все эти настройки нужно где-то хранить, так что начнем с создания файла db-server-playbook.yml: touch db-server-playbook.yml
Открываем созданный файл в текстовом редакторе и для начала указываем хосты, куда будем деплоить ресурсы (в строке 2 нам как раз пригодится созданный файл hosts). Затем задаем переменную для mysql_root_password в строках 4 и 5. Здесь мы указываем пароль открытым текстом только для демонстрации. В реальном мире мы использовали бы, например, ansible-vault или переменную командной строки: Примечание: Не добавляйте номера в начале каждой строки — мы пронумеровали их просто для ясности. 1 ---
2 - hosts: mysql 3 4 vars: 5 mysql_root_password: password 6 Настроив переменные, начинаем определять задачи. Для начала мы устанавливаем mysql с помощью apt для установки в образе Ubuntu Docker. Еще можно было бы использовать модуль package или yum, если бы у нас был образ Centos: 7 tasks:
8 - name: install mysql 9 apt: 10 name: mysql 11 update_cache: yes 12 cache_valid_time: 3600 13 state: present Настроим задачи, чтобы убедиться, что сервис mysql работает и будет запущен при старте: 14 - name: start up the mysql service
15 shell: "service mysql start" 16 - name: ensure mysql is enabled to run on startup 17 service: 18 name:mysql 19 state:started 20 enabled:true Теперь можно настроить пароль для всех корневых аккаунтов в установке mysql. Хотя mysql устанавливается только на одном хосте (образ Docker), на него ссылаются другие имена, включая localhost и 127.0.0.1. Для всех нужно указать модуль mysql_user и набор привилегий, как в примере ниже, где используется директива with_item: 21 - name: update mysql root password for all root accounts
22 mysql_user: 23 name: root 24 host: "{{ item }}" 25 password: "{{ mysql_root_password }}" 26 login_user: root 27 login_password: "{{ mysql_root_password }}" 28 check_implicit_admin: yes 29 priv: "*.*:ALL,GRANT" 30 with_items: 31 - "{{ ansible_hostname }}" 32 - 127.0.0.1 33 - ::1 34 - localhost После настройки MySQL можем использовать модуль mysql_db, чтобы создать тестовую базу данных в строках 37-40, а затем в строках 46-51 импортируем в нее данные из файла SQL, который мы скоро создадим: 35 - name: create a new database
36 mysql_db: 37 name: testdb 38 state: present 39 login_user: root 40 login_password: "{{ mysql_root_password }}" 41 - name: add sample data to database 42 copy: 43 src:dump.sql 44 dest:/tmp/dump.sql 45 - name: insert sample data into database 46 mysql_db: 47 name: testdb 48 state: import 49 target: /tmp/dump.sql 50 login_user: root 51 login_password: "{{ mysql_root_password }}" Сохраним плейбук и создадим файл SQL с тестовыми данными, которые можно импортировать в БД. 3. Создаем файл SQL В нем содержатся данные для БД. Таблица очень простая, но можно получить представление о том, как это работает. Те же принципы вы сможете применять, чтобы создавать таблицы, схемы и данные. Для начала создадим файл dump.sql: touch dump.sql
Откроем файл в текстовом редакторе и добавим код, как показано ниже, чтобы создать новую таблицу test и добавить три строки INSERT: CREATE TABLE IF NOT EXISTS test (
message varchar(255) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO test(message) VALUES('Ansible To Do List'); INSERT INTO test(message) VALUES('Get ready'); INSERT INTO test(message) VALUES('Ansible is fun') 4. Запуск плейбука Ansible Если мы все сделали правильно, можно запустить плейбук из командной строки командой ansible-playbook. Выполним следующую команду, чтобы запустить плейбук из каталога, где мы его создали: ansible-playbook -i hosts db-server-playbook.yml
Это маленький плейбук всего с одним пакетом, а в базе данных мало данных, так что результаты работы плейбука очень скоро будут готовы для тестирования. 5. Тестируем внесенные изменения Если все в порядке, тест с хоста пройдет успешно. Мы войдем в MySQL, перейдем в базу данных testdb, отобразим все таблицы в базе данных и, наконец, выведем все данные в таблице test, которую мы создали с Ansible: mysql -u root -h localhost -p Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 17 Server version: 8.0.22-0ubuntu0.20.04.3 (Ubuntu) mysql> use testdb; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +------------------+ | Tables_in_testdb | +------------------+ | test | +------------------+ 1 row in set (0.00 sec) mysql> select * from test; +--------------------+ | message | +--------------------+ | Ansible To Do List | | Get ready | | Ansible is fun | +--------------------+ 3 rows in set (0.00 sec) Вот и все. Ничего особенного, правда? Всего несколько минут и несколько строк в Ansible — и у нас есть рабочая база данных. В книге Practical Ansible: Configuration Management from Start to Finish подробно описывается, как оптимизировать управление конфигурацией с помощью Ansible. =========== Источник: habr.com =========== =========== Автор оригинала: Vince Sesto ===========Похожие новости:
Блог компании Southbridge ), #_sistemnoe_administrirovanie ( Системное администрирование ), #_mysql, #_servernoe_administrirovanie ( Серверное администрирование ), #_administrirovanie_baz_dannyh ( Администрирование баз данных ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:53
Часовой пояс: UTC + 5