Fornex
Европейский
хостинг

    file

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

    Установка
    Сначала обновите индекс пакетов:

    sudo apt update  
    

    Используйте для установки PPA-репозиторий. Установите software-properties-common, пакет, который упрощает управление независимыми программными репозиториями.

    sudo apt install software-properties-common  
    

    Затем добавьте репозиторий Ansible PPA с помощью следующей команды:

    sudo apt-add-repository ppa:ansible/ansible  
    

    Для присоединения нажмите клавишу Enter.

    Еще раз обновите базу пакетов и выполните установку Ansible:

    sudo apt update  
    sudo apt install ansible  
    

    После этого, на сервере будет установлено программное обеспечение Ansible, необходимое для администрирования ваших хостов.

    Настройка доступа к хостам по SSH

    С помощью следующей команды создайте SSH-ключ, который будет использоваться для подключения к хостам:

    ssh-keygen -t rsa -b 4096  
    

    На сервере Ansible используйте команду cat, чтобы отобразить открытые ключи SSH в терминале:

    cat ~/.ssh/id_rsa.pub  
    
    root@kvmde67:~# ssh-keygen -t rsa -b 4096  
    Generating public/private rsa key pair.  
    Enter file in which to save the key (/root/.ssh/id_rsa):  
    Enter passphrase (empty for no passphrase):  
    Enter same passphrase again:  
    Your identification has been saved in /root/.ssh/id_rsa.  
    Your public key has been saved in /root/.ssh/id_rsa.pub.  
    The key fingerprint is:  
    SHA256:Zvr1I9IfDK3wCK9K5h5KtWBtC0R2ppUtgQOB/fikhNE root@kvmde67.fornex.org  
    The key's randomart image is:  
    +---[RSA 4096]----+
    |+=o.=+           |
    |ooE=o .          |
    | oo+ .           |
    |..o.o      .     |
    | .+++ . S . .    |
    | ..=.o * + +     |
    |  . * . o.+ o    |
    | . = . o..o...   |
    |  ..+.. .. oo.   |
    +----[SHA256]-----+
    root@kvmde67:~# cat ~/.ssh/id_rsa.pub  
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQClTC6YhDZdHhiTj2UjDdOv5gpJufT0YKF6tnE1YwIFRrROBH8+hG7hyNlRtc7c5NGTp7fXXoVhnFRFe+thN/4ZDJ/1A44Pe91NldOBVovMlulk9RsRQqvLX8sZXLzY17i+2DINVF3aoOh6o3QEHrk3Axh+qz5DUYvJ70wM6GM40szUBf0wpA1GwoUaOmT4oZVDN6xRT05k++DGcik/EgwWy8hWK8hW8fmg5kXiWSvslLM8i/URaFFtTiFrna1NB75Rbl9brMLc3xMwUzqXRnohRBGbP/M7Js7HoaiS3yHqxIeo2JPVfdmxwpdCB2y14FTG0GU7gTeEOg6BUYNsSlU6IKv593RIGZ9hyPGnDiTZd3jgaOdOoYTKiHWj23zlrqqwSWbNQ== root@kvmde67.fornex.org  
    
    

    Скопируйте сгенерированный ключ на каждый хост, который будет обслуживаться Ansible:

    ssh-copy-id user_name@ip-address  
    

    Например: ssh-copy-id root@5.187.2.32

    С помощью текстового редактора откройте следующий файл конфигурации:

    sudo nano /etc/ansible/hosts  
    

    Используя следующий синтаксис, определяется группа [servers] с двумя разными серверами, каждый из которых имеет собственный индентификатор: server1, server2. Обязательно замените выделенные IP-адреса IP-адресами ваших хостов Ansible.

    [group_name] 
    server1 ansible_host=your_server_ip_1  
    server2 ansible_host=your_server_ip_2  
    
    [servers:vars]
    ansible_python_interpreter=/usr/bin/python3  
    

    Подгруппа servers:vars задает параметр хоста ansible_python_interpreter, который будет действителен для всех хостов в группе servers. С этим значением параметра удаленный сервер использует исполняемый файл Python 3 /usr/bin/python3, а не /usr/bin/python (Python 2.7)

    Например:

    [servers]
    server1 ansible_host=5.187.2.32  
    server2 ansible_host=5.187.5.236  
    
    [servers:vars]
    ansible_python_interpreter=/usr/bin/python3  
    

    Сохраните изменения и закройте файл (CTRL + X, Y, Enter).

    Важно!: на каждом хосте должен быть установлен язык python и пакет python-apt:

    apt-get install python python-apt  
    

    Проверка подключения

    По умолчанию Ansible выполняет подключение к удаленному хосту от имени пользователя root, если вы используете другого пользователя, то необходимо выполнить дополнительные настройки. Создайте каталог в структуре конфигурации, в котором будут находиться файлы в формате YAML для каждой группы:

    sudo mkdir /etc/ansible/group_vars  
    

    Создайте подкаталог с названием вашей группы:

    sudo nano /etc/ansible/group_vars/group_name  
    

    Например:

    sudo nano /etc/ansible/group_vars/servers  
    

    Вставьте следующую строку, вместо user_name указав имя вашего пользователя:

    ---
    ansible_user: user_name  
    

    Сохраните изменения.

    Примечание: отдельные хосты можно настроить, создав алиасы и файлы с именами в соответствии с их псевдонимом в каталоге /etc/ansible/host_vars

    Для проверки подключения выполните команду ping:

    ansible -m ping all  
    

    Результат:

    server1 | SUCCESS => {  
        "changed": false, 
        "ping": "pong"
    }
    server2 | SUCCESS => {  
        "changed": false, 
        "ping": "pong"
    }
    
    

    file