1
0
Fork 0
This repository has been archived on 2023-03-28. You can view files and clone it, but cannot push or open issues or pull requests.
fedihub-ansible/README.md

115 lines
4.1 KiB
Markdown
Raw Permalink Normal View History

2020-01-25 01:58:57 +00:00
Конфигурация Ansible
====================
Конфигурация верхнего уровня для развёртывания инфраструктуры с помощью
[Ansible](https://www.ansible.com).
Содержание
----------
* [Обзор](#конфигурация-ansible)
* [Содержание](#содержание)
* [Подготовка серверов](#подготовка-серверов)
* [Подготовка конфигурации](#подготовка-конфигурации)
* [Использование конфигурации](#использование-конфигурации)
Подготовка серверов
-------------------
Необходимо создать на серверах пользователя, добавить его в группу `sudo`,
установить ему пароль и записать его в инвентарь конфигурации. Это можно
сделать, выполнив указанные далее команды на сервере. Имя пользователя
`kotovalexarian` замените на ваше.
```
adduser --gecos '' kotovalexarian
usermod -a -G sudo kotovalexarian
```
Также нужно будет разрешить этому пользователю подключаться по SSH с помощью
вашего публичного ключа. Текущая конфигурация отключает возможность
аутентификации по паролю. Убедитесь, что вы можете войти с помощью публичного
ключа, иначе вы рискуете потерять доступ к серверу.
Подготовка конфигурации
-----------------------
Для ускорения работы Ansible используется библиотека
[Mitogen](https://mitogen.networkgenomics.com/). Необходимо установить её
в директорию `vendor`:
```
wget -O vendor/mitogen-0.2.8.tar.gz https://networkgenomics.com/try/mitogen-0.2.8.tar.gz
tar -xzf vendor/mitogen-0.2.8.tar.gz -C vendor/
```
Конфигурация зависит от ролей [Ansible Galaxy](https://galaxy.ansible.com),
указанных в файле `requirements.yml`. Следующую команду нужно запускать
перед началом работы с конфигурацией, а также после добавления ролей
или изменения их версий:
```
ansible-galaxy install -r requirements.yml -f
```
2020-07-04 19:47:49 +00:00
В директорию `secrets` можно поместить файлы, имя которых соответствует
Ansible Vault ID, а содержимое является паролем от соответствующего Vault ID.
Тогда при использовании скриптов из директории `bin` не придётся указывать эти
Vault ID вручную.
2020-07-11 09:32:37 +00:00
В файл `admin` нужно поместить имя своего пользователя (например,
`kotovalexarian`).
2020-01-25 01:58:57 +00:00
Использование конфигурации
--------------------------
2020-03-15 21:52:19 +00:00
Проверка доступности всех серверов:
```
2020-07-04 19:47:49 +00:00
./bin/ansible all -m ping
2020-03-15 21:52:19 +00:00
```
2020-01-25 01:58:57 +00:00
Перезагрузка всех серверов:
```
2020-07-04 19:47:49 +00:00
./bin/ansible all -m reboot
2020-01-25 01:58:57 +00:00
```
Обновление системных пакетов на всех серверах:
```
2020-07-04 19:47:49 +00:00
./bin/ansible all -m apt -a 'update_cache=yes upgrade=yes'
2020-01-25 01:58:57 +00:00
```
Показать пароль пользователя для каждого сервера:
```
2020-07-04 19:47:49 +00:00
./bin/ansible all -m debug -a var=ansible_become_pass
2020-01-25 01:58:57 +00:00
```
Развёртывание всей инфраструктуры:
```
2020-07-04 19:47:49 +00:00
./bin/ansible-playbook playbooks/deploy/site.yml
2020-01-25 01:58:57 +00:00
```
Создание резервной копии всех данных:
```
./bin/ansible-playbook playbooks/backup/site.yml
2020-01-25 01:58:57 +00:00
```
2020-07-17 12:27:20 +00:00
Шифрование секретных данных (`somedata` и `somevault` замените):
```
ansible-vault encrypt_string 'somedata' --vault-id somevault@secrets/somevault
```