Статьи

Руководство по Ansible Galaxy

Прошло много времени с тех пор, как я написал Части  1 , 2 , 3 , 4  в своей серии Ansible Tutorial, но недавно я несколько изменил свой подход при использовании Ansible и, конечно, когда я опираюсь на Parallax.  

Я начал использовать все больше и больше от Ansible Galaxy. Для тех из вас, кто не знает, Galaxy — это сообщество, похожее на магазин приложений, для обмена повторно используемыми ролями Ansible.  

https://galaxy.ansible.com/

Давайте представим, что мы хотим развернуть промежуточный сервер для приложения Python / Django, используя Postgres в качестве серверной базы данных на одном сервере с Ubuntu 14.04 Trusty.

Я недавно сделал нечто подобное, поэтому я примерно знаю, какие роли мне нужно включить. YMMV.  

Начиная с основных вещей. Давайте найдем роль для установки / настройки Postgres.  

https://galaxy.ansible.com/explore#/

Нажмите на категорию «база данных».  

Я предпочитаю сортировать по среднему баллу в обратном порядке, чтобы вы получили самые высокие оценки в верхней части.

Роль Postgres с самым высоким рейтингом принадлежит ANXS  https://galaxy.ansible.com/list#/roles/512

На этой странице есть куча полезных ссылок, одна на источник github роли и средство отслеживания проблем.

Ниже приведен список поддерживаемых платформ (взят из файла метаданных роли yml).

Просто проверьте, что ваша целевая ОС указана там, и все, вероятно, будет работать нормально.

Также стоит проверить, что ваша установленная версия ansible, по крайней мере, так же нова, как минимальная версия Ansible.

Начиная с базовой точки параллакса (потому что в нем все еще есть несколько действительно полезных битов и бобов — например, «обычный») .. 

cd  ./playbooks/part5_galaxy  (или как вы называете свой набор playbook).

Если вы хотите установить роль непосредственно в каталог role /, вам нужно добавить флаг -p и путь (относительный или абсолютный) к каталогу ролей вашего проекта. В противном случае они, как правило, устанавливаются в глобальном местоположении (что немного неприятно, если вы не root).

Итак, когда вы бежите:

ansible-galaxy install -p roles ANXS.postgresql
downloading role 'postgresql', owned by ANXS
 no version specified, installing v1.0.3
 - downloading role from https://github.com/ANXS/postgresql/archive/v1.0.3.tar.gz
 - extracting ANXS.postgresql to roles/ANXS.postgresql
ANXS.postgresql was installed successfully

Вы должны иметь вывод, который похож на это, или что-то неопределенно похожее.

Следующее, что нужно сделать, это интегрировать эту роль в нашу пьесу.  

В  tutorial.yml вы можете видеть, что в определении play есть раздел vars :, а также некоторые переменные, включаемые при перечислении роли.

Это также вводит немного другой способ задания роли в книге игр, где вы можете отслеживать каждую роль с необходимыми опциями.

В  ANXS.postgresql есть  возможность использовать monit, чтобы гарантировать, что сервер postgresql всегда работает. Если вы хотите включить это, вам также необходимо установить   роль ANXS.monit .

В способе, не совсем отличающемся от замораживания пунктов, и файла требований, вы можете запустить

ansible-galaxy list -p roles/ >> galaxy-roles.txt 

и затем сможете повторно импортировать всю полезную роль одной командой:

ansible-galaxy install -r galaxy-roles.txt -p roles

Из прошлого опыта я определил, что следующие роли Галактики, как правило, прекрасно сочетаются друг с другом, и приступим к их установке в учебном пособии, чтобы вы могли получить представление о том, как полный рабочий процесс развертывания может выглядеть для простого приложения.

Это роли, которые я использовал .. 

ANXS.apt, v1.0.2
 ANXS.build-essential, v1.0.1
 ANXS.fail2ban, v1.0.1
 ANXS.hostname, v1.0.4
 ANXS.monit, v1.0.1
 ANXS.nginx, v1.0.2
 ANXS.perl, v1.0.2
 ANXS.postgresql, v1.0.3
 ANXS.python, v1.0.1
 brisho.sSMTP, master
 EDITD.supervisor_task, v0.8
 EDITD.virtualenv, v0.0.2
 f500.project_deploy, v1.0.0
 joshualund.ufw, master

ANXS обеспечивают очень много ролей, которые все играют хорошо. Некоторые из них включены, поскольку они являются зависимостями других ролей. Я склонен использовать sSMTP для пересылки локальной почты в Sendgrid, потому что я ненавижу работать с почтовыми серверами. 

f500.project_deploy — это капистрано-подобная роль развертывания для Ansible, которая поддерживает создание символических ссылок на текущую развернутую версию (которая впоследствии позволяет выполнять откат).

Я не хочу углубляться в процесс объяснения того, как изменить это для развертывания приложения Django, я собираюсь предположить, что у вас есть достаточно информации, чтобы понять это для себя.  

Я также добавил роль ufw, которая настраивает пакет ufw Ubuntu, удобный интерфейс для IPTables.  

По сути, должно быть довольно легко увидеть, как можно построить сборник пьес, без необходимости писать так много в виде новых заданий / модулей.

ДРУГИЕ ПОЛЕЗНЫЕ КОМАНДЫ:

ansible-galaxy init 

Это создаст роль в формате, готовом для представления сообществу Galaxy.

ansible-galaxy list

Показать установленные роли.

ansible-galaxy remove [role name] 

Удаляет текущую установленную роль.

Сноска

Когда вы смотрите на список доступных ролей, вы поразите, что вы могли бы интегрировать, без необходимости делать слишком много кода самостоятельно.

Это невероятно. На момент написания этой статьи было 7880 пользователей и всего 1392 роли. Это также быстро растет день ото дня.

На вводной странице Galaxy вы найдете гораздо больше информации о том  , как делиться своими ролями.