Главная
Главная Руководства Ansible › Установка Ansible на Ubuntu 18.04



Автор:

Статья опубликована: 2019-03-19 16:11:39
Последние правки: 2019-03-25 17:35:32

Установка и первоначальная настройка ansible на ubuntu 18.04.

  • Исходные данные
    # cat /etc/os-release
    Ubuntu 18.04 LTS
    # ansible --version
    ansible 2.7.9
    


  • Сервер управления.
    # apt-get update
    # apt-get install software-properties-common
    # apt-add-repository ppa:ansible/ansible
    # apt-get install ansible
    
    Диктовать свою непреклонную волю другим серверам будем из-под локального непривилегированного пользователя ansible. Генерируем пару ключей для ssh, если их нет. Во время генерации программа попросит задать пароль - оставляем его пустым.
    $ ssh-keygen -b 4028
    
    В итоге в /home/ansible/.ssh у нас появятся два файла с приватным (id_rsa) и публичным (id_rsa.pub) ключами. Публичный ключ надо добавить на все сервера, которыми планируется управлять.


  • Подчиненный сервер
    Хотя Ansible не использует агентов на подчиненных серверах, первоначальная настройка все же нужна:
    - добавляем содержимое /home/ansible/.ssh/id_rsa.pub с сервера управления в файл ~/.ssh/authorized_keys на подчиненном сервере тому пользователю, под которым будем управлять подчиненным сервером;
    - если пользователь не root, то делаем настройки, чтобы пользователь мог работать с sudo без пароля;
    - Устанавливаем python (пример для Ubuntu):
    # apt-get install python
    


  • Inventory
    Подчиненные сервера хранятся в /etc/ansible/hosts
    Формат файла довольно прост, например:
    [servers]
    server1 ansible_ssh_host=192.168.3.10
    server2 ansible_ssh_host=192.168.3.11
    server3 ansible_ssh_host=192.168.3.12
    
    [servers] - название группы серверов
    server1..server3 - alias-ы серверов

    Для каждого хоста можно указать индивидуальные имя пользователя и порт:
    server1 ansible_ssh_host=192.168.3.10 ansible_ssh_port=1122
    server2 ansible_ssh_host=192.168.3.11 ansible_ssh_user=root
    
    Можно указать индивидуальные настройки подключения для всей группы:
    [servers:vars]
    ansible_ssh_user: root
    ansible_ssh_port: 1122
    
    Или для всех серверов, что есть в hosts, записав настройки в системную группу all:
    [all:vars]
    ansible_ssh_user: root
    ansible_ssh_port: 1122
    
    Есть ещё одна системная группа, ungrouped, в ней содержатся все хосты, которые не числятся в других группах, кроме all.


  • Проверяем
    $ ansible -m ping servers
    server1 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    server2 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    server3 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    
    или
    $ ansible -m ping server1:server2
    server1 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    server2 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }