Ansible это система управления конфигурациями, которая была написана на Python и использует язык разметки yaml, для описания конфигураций. Основное предназначение это автоматизация настройки и массового развёртывания программного обеспечения.
Для установки данного пакета выполняем команду:
apt install ansible
Так же не забываем, что данная программа использует для подключения и управления SSH, его необходимо установить и добавить в автозапуск на все ПК которыми собираетесь управлять.
Делается это просто:
Apt install ssh – команда установки
Systemctl start ssh – команда запуска ssh
Systemctl enable ssh – команда добавления в автозапуск ssh
Systemctl status ssh – проверка статуса работы ssh, должен быть active (running).
Я рекомендую использовать для работы с ansible – VisualStudioCode. Настройка и работа в данном текстовом редакторе, это одно удовольствие.
PS. Если нужен данный софт, пишите в комментариях, я обязательно выложу ссылку, на открытый источник и последней версией софта. Данное ПО является бесплатным и находится в открытом доступе.
После начинаем настройку:
1. Создаем папочку inf в домашней директории и подключаем VC code к данной папке. Далее работаем с помощью данной программы.
Создаем в данной директории файл ansible.cfg и начинаем заполнять данный файл:
[defaults]
Inventory = inventory
На этом настройка файла закончена.
Далее создаем файл inventory. В данном файле мы описываем все ПК, которыми собираемся управлять. Причем управление может происходить как по ip-адресу так и по имени ПК.
Пример заполнения файла:
#астра – комментарий
Test ansible_host=192.168.0.1
Или можно так
Test ansible_host=astra
Где: test – имя по которому вы будите обращаться к машине через ansible
ansible_host – переменная присваивающая ip адрес или dns к вашему имени.
Если данных хостов много то мы их можем определять в группы. Название групп прописывается в “[]” например:
[test]
Test ansible_host=192.168.0.1
Test2 ansible_host=192.168.0.2
Test3 ansible_host=192.168.0.3
Но при одном небольшом условии, подгруппы в группах не делаются. Проше и лучше создать несколько групп.
На этом первоначальная настройка закончена. Теперь открываем в этом же редакторе терминал:
Terminal>New Terminal
И дальше продолжаем работать в нем.
Первоначально создаем открытый ключ ssh и отправляем на тот узел (узлы) с которыми необходимо работать. Делается это так:
Ssh keygen
После выполнения данной команды, пропускаем все вопросы клавишей “enter”
Ssh-copy-id <имя машины в dns или ip адрес машины>
Данная команда копирует Ваш открытый ключ на выбранный Вами хост.
Далее проверяем командой
ansible -m ping all
в ответ мы получаем "ping:pong":
192.168.0.1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
192.168.0.2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
192.168.0.3 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Значит мы настроили все верно и можем приступить к написанию первого сценария, но для этого необходимо использовать язык разметки YAML.
YAML — это язык для хранения информации в формате понятном человеку. Его название расшифровывается как, «Ещё один язык разметки». Однако, позже расшифровку изменили на — «YAML не язык разметки», чтобы отличать его от настоящих языков разметки.
Синтаксис довольно прост. Все файлы YAML (независимо от их связи с Ansible или нет) могут при желании начинаться "---" и заканчиваться на "...". Это часть формата YAML, обозначающая начало и конец документа.
Все члены списка — это строки, начинающиеся с одного уровня отступа и начинающиеся с (дефис и пробел):"- "
--- # A list of tasty fruits
- Apple
- Orange
- Strawberry
- Mango
...
Словарь представляется в простой форме (за двоеточием должен следовать пробел): key: value
# An employee record
martin:
name: Martin D'vloper
job: Developer
skill: Elite
Возможны более сложные структуры данных, такие как списки словарей, словари, значениями которых являются списки, или сочетание того и другого:
# Employee records
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
Словари и списки также могут быть представлены в сокращенном виде, если вы действительно хотите:
---
martin: {name: Martin D'vloper, job: Developer, skill: Elite}
fruits: ['Apple', 'Orange', 'Strawberry', 'Mango']
Они называются «потоковыми коллекциями».
Ansible не использует их слишком часто, но вы также можете указать логическое значение (true/false) в нескольких формах:
create_key: yes
needs_agent: no
knows_oop: True
likes_emacs: TRUE
uses_cvs: false
Используйте нижний регистр «true» или «false» для логических значений в словарях, если вы хотите быть совместимым с параметрами yamllint по умолчанию.
Думаю для общего понимания достаточно. В следующих статьях будут подробнее описаны модули Ansible и сценарии YAML для их выполнения. Подписывайтесь на канал, чтобы не пропустить следующую статью.