Требуемые условия завершения
Задание:
Установить Ansible.
Подготовить Cloud-ADM для работы с Ansible.
Основные моменты на что стоит обратить внимание перед написанием скрипта с использованием Ansible:
Основные моменты (подготовка):
- Поскольку Топология L3 включает в себя статическую IP-адресацию, значит нет смысла напрягать Terraform для создания динамического инвентаря Ansible:
- можно воспользоваться файлом /etc/hosts на инстансе Cloud-ADM, например:
-
- в дополнении можно воспользоваться файлом ~/.ssh/config на инстансе Cloud-ADM, например:
- В результате инвентарный файл может выглядеть следующим образом:
all:
children:
ha:
hosts:
Cloud-HA01:
Cloud-HA02:
web:
hosts:
Cloud-WEB01:
Cloud-WEB02:
db:
hosts:
Cloud-DB01:
Cloud-DB02:
-
- при указании параметров для подключения, например group_vars/all.yml, работоспособность:
[altlinux@cloud-adm ansible]$ ansible -m ping all
Cloud-HA01 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Cloud-HA02 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Cloud-WEB02 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Cloud-WEB01 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Cloud-DB01 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Cloud-DB02 | SUCCESS => {
"changed": false,
"ping": "pong"
}
- Поскольку Cloud-ADM должен иметь корректное доверие к сертификатам для доступа по HTTPS, можно реализовать на нём CA
-
выпустить необходимые сертификаты;
-
используя ansible передать соответствующие сертификаты на соответствующие инстансы;
-
Вариант реализации:
Cloud-ADM:
- Установка ansible средствами pip:
pip3 install ansible
- Добавляем путь в переменную окружения PATH:
export PATH=/home/altlinux/.local/bin:$PATH
-
- Проверяем работоспособность ansible:
- Перейдём в директорию /home/altlinux/bin:
cd /home/altlinux/bin
- Создадим директорию ansible и перейдём в неё:
mkdir ansible && cd ansible
- Создадим файл инвентаря 'inventory.yml':
vim inventory.yml
-
- поместим в него следующее содержимое:
- объявив:
- 3 группы устройств: ha, web, db
- по 2 устройства в каждой группе:
- ha: Cloud-HA01 и Cloud-HA02;
- web: Cloud-WEB01 и Cloud-WEB02;
- db: Cloud-DB01 и Cloud-DB02;
all:
children:
ha:
hosts:
Cloud-HA01:
Cloud-HA02:
web:
hosts:
Cloud-WEB01:
Cloud-WEB02:
db:
hosts:
Cloud-DB01:
Cloud-DB02:
- Создадим файл конфигурации для ansible 'ansible.cfg':
vim ansible.cfg
-
- поместим в него следующее содержимое:
[defaults]
inventory = ./inventory.yml
host_key_checking = False
callback_enabled = profile_tasks
callback_whitelist = profile_tasks
deprecation_warnings = False
- Создадим директорию group_vars где будем создавать файлы с переменными для групп хостов:
mkdir group_vars
- Создадим файл 'all.yml' в директории group_vars:
vim group_vars/all.yml
-
- и поместим следующее содержимое:
- указав те переменных, которые будут одинаковыми для всех групп хостов;
- и поместим следующее содержимое:
---
ansible_python_interpreter: /usr/bin/python3
ansible_ssh_user: altlinux
ansible_ssh_private_key_file: ~/.ssh/id_rsa
- Поскольку Топология L3 включает в себя статическую IP-адресацию, значит нет смысла напрягать Terraform для создания динамического инвентаря Ansible:
- можно воспользоваться файлом /etc/hosts на инстансе Cloud-ADM, например:
-
- в дополнении можно воспользоваться файлом ~/.ssh/config на инстансе Cloud-ADM, например:
- Проверяем возможность ansible подключиться к инстансам описанным в инвентарном файле:
ansible -m ping all
-
- Результат:
Последнее изменение: вторник, 24 июня 2025, 12:56