15.05.2015

Ansible установка Ubuntu/CentOS

Install Ansible on Ubuntu 10.04 / 12.10 / 13.04, Debian 7
Install via source

These are the instructions for Ubuntu 12.10, Ubuntu 13.04, and Debian 7. See note below for Ubuntu 10.04.
> apt-get update
> apt-get install python-pip python-dev git -y
> pip install PyYAML jinja2 paramiko
> git clone https://github.com/ansible/ansible.git
> cd ansible
> make install
> mkdir /etc/ansible
> cp ~/ansible/examples/hosts /etc/ansible/
Install Ansible on CentOS 5.8 / 6.4, Fedora 17 / 19
CentOS 6.4
> rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
> yum install ansible -y
Fedora 17 /19
> yum install ansible -y




Ansible: Post-Install Setup
Inventory hosts file After you've installed Ansible, then you'll want Ansible to know which servers to connect to and manage. Ansible's inventory hosts file is used to list and group your servers. Its default location is /etc/ansible/hosts. If you want to have your Ansible hosts file in another location, then you can set this environment variable:
> export ANSIBLE_HOSTS=/root/ansible_hosts Or you can specify the Ansible hosts location when running commands with the --inventory-file= (or -i) flag:
> ansible all --inventory-file=/root/ansible_hosts -m ping For more on the inventory hosts file, see:http://docs.ansible.com/intro_inventory.html Set up connectivity to the servers For this example, I'll assume you have servers with the hostnames child1.dev and child2.dev. When doing your own install, replace those hostnames with your own. Your /etc/ansible/hosts file would look like this: child1.dev child2.dev You want to be able to connect to your servers without having to enter a password every time. If you don't already have ssh key authentication set up to your children nodes, then do the following... Generate the ssh key on the master node:

root@master:~# ssh-keygen -t rsa -C "name@example.org"
Then copy your public key to the servers with ssh-copy-id:

root@master:~# ssh-copy-id user@child1.dev

root@master:~# ssh-copy-id user@child2.dev
Now you can test the connectivity:

root@master:~# ansible all -m ping
child1.dev | success >> {
    "changed": false, 
    "ping": "pong"
}

child2.dev | success >> {
    "changed": false, 
    "ping": "pong"
}
├── production                # инвентарный файл для продакшн-серверов
├── stage                     # инвентарный файл для stage-окружения
│
├── group_vars/
│   ├── group1                # здесь назначаются переменные для
│   └── group2                # конкретных групп
├── host_vars/
│   ├── hostname1             # специфические переменные для хостов в
│   └── hostname2             # случае необходимости прописываются здесь
│
├── site.yml                  # основной сценарий
├── webservers.yml            # сценарий для веб-сервера
├── dbservers.yml             # сценарий для сервера базы данных
│
└── roles/
    ├── common/               # здесь описываются роли
    │   ├── tasks/            #
    │   │   └── main.yml      # - файл задач роли, может включать файлы
    │   │                     #   меньшего размера
    │   ├── handlers/         #
    │   │   └── main.yml      # - файл с обработчиками (handlers)
    │   ├── templates/        # - директория для шаблонов, в данном
    │   │   └── ntp.conf.j2   #   случае - для конфига ntp
    │   ├── files/            #
    │   │   ├── bar.txt       # - файл-ресурс для копирования на хост
    │   │   └── foo.sh        # - скрипт для выполнения на удалённом хосте
    │   └── vars/             #
    │       └── main.yml      # - ассоциированные с ролью переменные
    │
    ├── pgsql/                # такая же структура, как выше, для роли pgsql
    └── fooapp/               # такая же структура, как выше, для роли fooapp