Процитируем википедию:
Система управления конфигурациями, написанная на Python, с использованием декларативного языка разметки для описания конфигураций
Используется для автоматизации настройки и развертывания программного обеспечения
Обычно используется для управления Linux-узлами, но Windows также поддерживается
Поддерживает работу с сетевыми устройствами, на которых установлен Python версии 2.4 и выше по SSH или WinRM соединению
Процитируем описание с одного из форумов:
К примеру у вас есть 100 серверов и вам нужно установить одинаковую конфигурацию (debian 9, postgres, redis, mongodb).
С помощью этого инструмента это занимает очень мало времени. Не надо подключаться к каждому серверу, инсталировать и настраивать
конфиг для каждой программы. Достаточно написать скрипт и он все сделает за вас, на всех серверах.
Дано Сервер с ansible: bsd1 - 10.0.2.5 Нода: bsd2 - 10.0.2.8
На bsd1 сделаем алиас bsd2 на ip 10.0.2.8
vi /etc/hosts 10.0.2.8 bsd2
Установка ansible для питона версии 3.6 (только на сервере, на клиенте не нужно)
Скопируйте открытый ключ сервера с ansible на все узлы, к которым будут идти обращения
cat ~/.ssh/id_rsa.pub
По путям на нодах в файл
~/.ssh/authorized_keys
Можно с сервера дать такую команду
scp /root/.ssh/id_rsa.pub 10.0.2.8:/root/.ssh/authorized_keys
На ноде разрешите доступ для root
vi /etc/ssh/sshd_config PermitRootLogin yes
/etc/rc.d/sshd restart
И проверьте доступ, ввода палоя не должно потребоваться
ssh root@10.0.2.8
Настройка ansible
Ansible ищет Python в /usr/bin/, но присутствует в /usr/bin/local, создадим мягкую ссылку для Python
pkg install python36
ln -s /usr/local/bin/python3.6 /usr/bin/python
Не запрашивать подтверждение ssh ключей (этот шаг я не делал, но возможность такая - есть)
vi /usr/local/etc/ansible/ansible.cfg host_key_checking = False
Установка переменной для всех групп и указание хоста и его ip
vi /usr/local/etc/ansible/hosts
Проверьте доступность этих узлов с помощью следующей команды
ansible-3.6 -m ping all
Мы можем использовать другие команды для проверки определенного узла
ansible-3.6 -m ping bsd2
ansible-3.6 -m raw -a 'df' bsd2
При получении ошибки типа bsd2 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: @@@@@ WARNING: UNPROTECTED PRIVATE KEY FILE!
@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa.pub' are too open.
is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key \"/root/.ssh/id_rsa.pub\": bad permissions\r\nPermission denied (publickey,keyboard-interactive).",
"unreachable": true
Делаем права на сервере
chmod 600 /root/.ssh/id_rsa.pub
Теперь создадим конфигурацию для хоста bsd2
Будет устанавливаться и стартовать nginx
Обратите внимание на цикл перебора, можно было указать имя пакета в команде, но завели их в item
Т.е. типа того `pkg: ['nginx', 'py36-certbot-nginx']` (цикл - устаревшая команда)
Тут используется модуль pkgng для freebsd (yum например для centos или apt для debian)
cd /usr/local/etc/ansible/
vi bsd2_web.yml
Запускаем выполнение задач для хоста bsd2
ansible-playbook-3.6 bsd2_web.yml
Проверяем
curl http://10.0.2.8 Thank you for using nginx.
Комментарии пользователей
Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!