Home

Awesome

Attention

This repository don't supported.

I recommend to follow in https://github.com/viasite-ansible and use roles with test badges.

New ansible-server will be available at https://github.com/viasite-ansible/ansible-server, but at this time I cannot share it in open source.

This repository worked well at begin of 2016, but it have many limitations:

Install

cd /usr/local/src
git clone https://github.com/popstas/ansible-server
cd /usr/local/src/ansible-server
git submodule update --init --recursive

or

git clone --recursive https://github.com/popstas/ansible-server /usr/local/src/ansible-server

Update submodule

pushd roles/rolename
git pull origin master
popd
git commit -m "update roles/rolename fork"

Remove submodule

git rm path/to/submodule
git commit
rm -rf .git/modules/path/to/submodule

Playbooks

Vars

Files

Lint rules

Directory rules contains some custom ansible-lint rules. Command for apply rules:

ansible-lint -r rules server.yml

Зашифровать файл:

cp vars/private.yml vars/crypted.yml && ansible-vault encrypt --vault-password-file .vault_pass.txt vars/crypted.yml

Подробнее о работе с зашифрованным файлом - http://docs.ansible.com/ansible/playbooks_vault.html

Tests

test.sh - предназначен для запуска тестов на чистой машине, vagrant или docker.

Как тестировать

  1. Пишем роль
  2. Запускаем инициализацию машины, tests/docker-init.sh или tests/vagrant-init.sh рекомендуется в vagrant
  3. Запускаем тесты в машине
tests/test.sh --tags имя_роли
  1. Если есть ошибки, исправляем

Vagrant

tests/vagrant-init.sh - инициализирует vagrant box и готовит конфиги для запуска в нем ansible

tests/vagrant-init.sh
VM_IP=192.168.1.100 VM_NAME=ansible-server-public tests/vagrant-init.sh

Docker

tests/docker-init.sh - создание/запуск докера с --name ansible_server (можно передать имя параметром), Прописывание данных докера в build/hosts_docker

tests/docker-init.sh
tests/docker-tests.sh ansible-server-2

Teamcity

На Teamcity делается то же самое, что и в test.sh, но в шагах teamcity, чтобы собрался красивый ansible log. Для удобной сводки написан скрипт tests/teamcity_ansible_report.sh, он запускается последним шагом, переключает статус сборки в зависимости от результатов последнего прогона ansible-playbook. ansible-lint в данный момент (22.11.2015) отключен, до тех пор, пока не будут поправлены зависимые репозитории.

Ссылки

https://github.com/willthames/ansible-lint - линтер, обязательно пользоваться! https://github.com/nickjj/rolespec - RoleSpec, фреймворк для автотестов ansible ролей, заточен под DebOps, предполагается, что тесты - отдельный репозиторий https://github.com/debops/test-suite - RoleSpec тесты от DebOps https://github.com/ansible/ansible/issues/12817 - ansible & vagrant ssh connection

Новые роли и правка существующих

В начале смотреть похожее в ansible galaxy и на github. Хорошие примеры:

Roles

apache-php

Install apache2 and php5 with modules

common

Install common packages

mysql

nginx

Связан с ролями apache-php, site В /etc/nginx/conf.server.d/000-settings-upstream прописывается путь к apache Также в /etc/nginx/conf.server.d/ лежат все инклюды для каждого хоста, они прописаны в /roles/site/templates/nginx.conf.j2

TODO

nginx role issues