(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Установка Ansible AWX на Debian 7.1

Источник: habrahabr
nefformat

Решили мы как то упростить администрирование небольшой группы серверов на FreeBSD. Серверов этих самых, вроде бы и не много, но всё же часто бывает нужно выполнить ряд однотипных задач на всех разом.
Долго думали, выбирали, сравнивали, и всё же пришли к варианту установить систему Ansible. А для наглядности к ней прикрутить web-мордочку с названием AWX.
Но вот незадача, сервера у нас на FreeBSD, а в качестве "рабочего" Linux"а выбран Debian. Ansible AWX поддерживает в качестве официальных RHEL/Fedora и Ubuntu.
Как мы все помним, Ubuntu вышла из Debian, а значит должна помнить о предке. Будем разбираться как поставить AWX на Debian.
Исходные данные: свежеустановленный Debian 7.1 Wheezy с включенной вариантами конфигурации "SSH сервер" и "Системные утилиты".

Инсталятор AWX представляет собой sh скрипт (чуть подробнее об этом ниже), но единственное что делает этот скрипт - запускает playbook для ansible, из чего следует, что перед запуском этого скрипта следует установить сам ansible.
root@awx:~# apt-get install ansible Чтение списков пакетов… Готово Построение дерева зависимостей Чтение информации о состоянии… Готово E: Не удалось найти пакет ansible

Но тут ждёт неожиданность в wheezy его нет, так что придётся подключать репозитарий testing. Я использую зеркала яндекса, так что в свой файл /etc/apt/sources.list я добавил строку:
deb http://mirror.yandex.ru/debian/ testing main contrib non-free

Далее, обновляем списки пакетов:
root@awx:~# apt-get update

И ставим сам ansible с необходимыми зависимостями:
root@awx:~# apt-get install ansible

Соглашаемся со всем, что нам вменяют и ждём завершения установки. После чего скачиваем awx, его к сожалению в пакетах нет.
wget http://ansibleworks.com/releases/awx/setup/awx-setup-latest.tar.gz

Распаковываем
root@awx:~# tar xzvf awx-setup-latest.tar.gz

Смотрим, с чем нам предстоит иметь дело.
root@awx:~/awx-setup-1.3.1# ls group_vars myhosts README.md roles setup.sh site.yml

Прочитав файл README.md мы узнаем, что нам необходимо изменить данные аутентификации для PostgreSQL в файле group_vars/all, а так же предупреждение о том, что pg_hba.conf и supervisord.conf будут перезаписаны. Так, что если ставите не на чистую систему, следует сделать соответствующие бейкапы.

Пока всё понятно, теперь рассмотрим из чего состоит инсталятор про который уже упоминалось выше:
root@awx:~/awx-setup-1.3.1# cat setup.sh #!/bin/bash getopts "e:" EXTRA_ARGS if [ "$OPTARG" != "" ]; then echo "Running with extra args: ${OPTARG}" sudo ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -v -e "$OPTARG" site.yml else sudo ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -v site.yml fi

Из содержимого видно, что главная и единственная задача этого файла запустить playbook site.yml на группу узлов указанных в файле myhosts (в котором только 127.0.0.1) из этой же директории. Следующий параметр -c local указывает механизм доставки команд на целевую машину, в нашем случае ansible и целевая машина это одно и тоже.

Так же из любопытного, можно заметить, что предлагается использовать sudo. Но так как у нас чистая установка Debian в неё это самое sudo, в отличии от Ubuntu, не входит. Значит либо удаляем команду, либо доставляем sudo.
Я удалил вызов sudo, а так же добавил для более подробной отладки ещё две буквы "v".
Вид файла после моего редактирования:
getopts "e:" EXTRA_ARGS if [ "$OPTARG" != "" ]; then echo "Running with extra args: ${OPTARG}" ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -vvv -e "$OPTARG" site.yml else ANSIBLE_ERROR_ON_UNDEFINED_VARS=True ansible-playbook -i myhosts -c local -vvv site.yml fi

Теперь перейдём к самому интересному, файлу site.yml
root@awx:~/awx-setup-1.3.1# cat site.yml --- # This playbook deploys the AWX application (database, web and worker) to a # single server. - hosts: all tasks: - name: group hosts by distribution group_by: key="{{ ansible_distribution }}-{{ ansible_distribution_version }}" - hosts: RedHat-6*:CentOS-6*:SL-6* user: root roles: - { role: packages_el6 } - { role: postgres, pg_hba_location: "/var/lib/pgsql/data/pg_hba.conf" } - { role: awx_install } - { role: supervisor, sup_init_name: "supervisord", sup_conf_location: "/etc/supervisord.conf" } - { role: httpd, httpd_init_name: "httpd" } - { role: iptables } - { role: misc } - hosts: Ubuntu-12*:Ubuntu-13* user: root roles: - { role: packages_ubuntu } - { role: postgres, pg_hba_location: "/etc/postgresql/9.1/main/pg_hba.conf" } - { role: awx_install } - { role: supervisor, sup_init_name: "supervisor", sup_conf_location: "/etc/supervisor/conf.d/awx.conf" } - { role: httpd, httpd_init_name: "apache2" } - { role: misc }

Варианта для Debian"а не видно, но тут уже видно 2 готовых варианта сценария, для основанных на RHEL и для Ubuntu, а как известно Ubuntu является прямым потомком Debian'a. Ставить будем именно по убунтовскому варианту установки, для этого добавим упоминание о нашей ОС в этот playbook:
- hosts: Ubuntu-12*:Ubuntu-13*:Debian*

Так как postgresql мы будем ставить версии 9.3 немного исправим путь до его конфигурационных файлов
- { role: postgres, pg_hba_location: "/etc/postgresql/9.3/main/pg_hba.conf" }

В остальном, для нас тут больше ничего интересного.
Пройдёмся по отдельным ролям, и первой будет packages_ubuntu
root@awx:~/awx-setup-1.3.1# cat roles/packages_ubuntu/tasks/main.yml --- # Tasks to install required packages for awx - name: install ubuntu awx apt repository template: src=awx_repo.j2 dest=/etc/apt/sources.list.d/awx_repo.list - name: install python-pip package for ubuntu 12.04 apt: name=python-pip when: ansible_lsb.codename == "precise" - name: install django 1.5.4 via pip for ubuntu 12.04 pip: name=django version=1.5.4 when: ansible_lsb.codename == "precise" - name: install django via apt for ubuntu 12.10 or later apt: name=python-django when: ansible_lsb.codename != "precise" - name: install required packages via apt apt: name={{ item }} with_items: - apache2 - libapache2-mod-wsgi - postgresql - python-psycopg2 - python-setuptools - python-ldap - supervisor - git - subversion - mercurial - name: install awx package via apt apt: name=awx update_cache=yes force=yes state=latest

Первая интересная нам строка template: src=awx_repo.j2 dest=/etc/apt/sources.list.d/awx_repo.list - подключения репозитария, смотрим в файл:
root@awx:~/awx-setup-1.3.1# cat roles/packages_ubuntu/templates/awx_repo.j2 deb {{ aw_repo_url }}/deb {{ansible_lsb.codename}} non-free

Вроде всё ясно, 2 переменные, в первом случае URL репозитария указанного в файле group_vars/all, во втором случае кодовое имя операционной системы, у нас это whezzy, но так как в репозитарии для wheezy ничего нет, мы будем маскироваться под Ubuntu Raring Ringtail.
После "маскировки" файл принимает следующий вид.
root@awx:~/awx-setup-1.3.1# cat roles/packages_ubuntu/templates/awx_repo.j2 deb {{ aw_repo_url }}/deb raring non-free

В следующей части проверяется, не Precise Pangolin ли у нас:
- name: install python-pip package for ubuntu 12.04 apt: name=python-pip when: ansible_lsb.codename == "precise" - name: install django 1.5.4 via pip for ubuntu 12.04 pip: name=django version=1.5.4 when: ansible_lsb.codename == "precise" - name: install django via apt for ubuntu 12.10 or later apt: name=python-django when: ansible_lsb.codename != "precise"

Так как у него (Precise Pangolin) в репозитарии Django старой версии, и авторы AWX ставят более новую (1.5.4) альтернативным путём. Нам эта проблема не грозит, так что можно ничего не менять. Так же меняем условие в файле обработчика для httpd, c Ubunu на Debian:
root@awx:~/awx-setup-1.3.1# cat roles/httpd/handlers/main.yml --- # Handlers for common notifications. - name: restart httpd service: name=httpd state=restarted when: ansible_distribution in ["CentOS","RedHat"] - name: restart apache2 service: name=apache2 state=restarted when: ansible_distribution in ["Ubuntu"]

В последней строчке Ubuntu меняем на Debian.
Аналогичные действия нужно произвести и для следующей роли postgres:
root@awx:~/awx-setup-1.3.1# cat roles/postgres/tasks/main.yml # Tasks for configuring PostgreSQL server. - name: init postgresql command: service postgresql initdb creates=/var/lib/pgsql/data/PG_VERSION when: ansible_distribution != "Ubuntu" tags: postgresql

Скрещиваем пальцы и запускаем
root@awx:~/awx-setup-1.3.1# ./setup.sh PLAY RECAP ******************************************************************** 127.0.0.1 : ok=30 changed=12 unreachable=0 failed=0

Инсталятор настройки apache помещает в папку
root@awx:~/awx-setup-1.3.1# ls /etc/apache2/conf.d awx.conf awx-plain.conf

Содержимое данной папки не включается в основной конфиг апача, так что нам нужно их переместить:
mv /etc/apache2/conf.d/awx* /etc/apache2/sites-enabled/

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

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 07.02.2014 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
VMware Horizon Apps Standard, v7 : 10 Pack (Named User)
ZBrush 4R6 Win Commercial Single License ESD
Quest Software. Toad for SQL Server Development Suite
Quest Software. SQL Navigator for Oracle
Bamboo
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Реестр Windows. Секреты работы на компьютере
Новые материалы
Один день системного администратора
Компьютерная библиотека: книги, статьи, полезные ссылки
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100