в предыдущая статья из этой серии Ansible, мы объяснили, что Ansible - это безагентный инструмент, который позволяет быстро и эффективно управлять несколько машин (также называемых узлами - и выполняющих развертывание на них) с одного система.
После установки программного обеспечения на машине контроллера, создание ключи для входа без пароля и копируя их на узлы, пора узнать, как оптимизировать процесс управления такими удаленными системами с помощью Ansible.
В этой и следующей статье мы будем использовать следующую тестовую среду. Все хозяева CentOS 7 коробки:
Машина-контроллер (на которой установлен Ansible): 192.168.0.19 Узел 1: 192.168.0.29 Узел 2: 192.168.0.30
Кроме того, обратите внимание, что оба узла были добавлены в раздел веб-серверов локального /etc/ansible/hosts файл:
Тем не менее, давайте начнем с рассматриваемой темы.
Как описано в предыдущем руководстве, вы можете использовать
анзибль утилита для запуска команд на удаленных узлах следующим образом:# ansible -a "/ bin / hostnamectl --static" веб-серверы.
В приведенном выше примере мы запустили hostnamectl --static
на узел1 и узел2. Не нужно много времени, чтобы понять, что этот метод запуска задач на удаленных компьютерах отлично подходит для коротких команд, но может быстро становятся обременительными или запутанными для более сложных задач, требующих дополнительных хорошо структурированных параметров конфигурации или взаимодействия с другими Сервисы
Например, установка и настройка WordPress на нескольких хостах - о чем мы поговорим в следующей статье этой серии). Это где Учебники выйти на сцену.
Проще говоря, Учебники это простые текстовые файлы, написанные в YAML формат и содержат список с элементами с одной или несколькими парами ключ / значение (также известный как «хэш"Или"толковый словарь”).
Внутри каждого пособия вы найдете одну или несколько групп хостов (каждая из этих групп также называется играть), где должны быть выполнены желаемые задачи.
Пример из официальных документов поможет нам проиллюстрировать:
1.хозяева: это список машин (согласно /etc/ansible/hosts), где будут выполняться следующие задачи.
2.удаленный_пользователь: удаленная учетная запись, которая будет использоваться для выполнения задач.
3.варс: переменные, используемые для изменения поведения удаленных систем.
4. задачи выполняются по очереди на всех машинах, соответствующих хостам. В рамках игры все хосты получат одинаковые директивы задач.
Если вам нужно выполнить другой набор связанных задач для определенного хоста, создайте еще одну игру в текущем Пособие (другими словами, цель игры - сопоставить определенный набор хостов с четко определенными задачами).
В этом случае начните новую игру, добавив директиву hosts внизу и начав сначала:
- hosts: webservers remote_user: root vars: variable1: value1 variable2: value2 remote_user: root tasks: - name: описание для задача1 задача1: параметр1 = значение_для_параметра1 параметр2 = значение_для_параметра2 - имя: описание для задачи1 задача2: параметр1 = значение_для_параметра1 параметр2 = значение_для_параметра2 обработчики: - имя: описание для службы обработчика 1: name = name_of_service state = service_status. - hosts: dbservers remote_user: root vars: variable1: value1 variable2: value2. …
5. обработчики - это действия, которые запускаются в конце раздела задач в каждом воспроизведении и в основном используются для перезапуска служб или запуска перезагрузок в удаленных системах.
# mkdir / etc / ansible / playbooks.
И файл с именем apache.yml внутри там со следующим содержимым:
- hosts: webservers vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: убедитесь, что apache последней версии yum: pkg = httpd state = latest - name: заменить копию файла index.html по умолчанию: src = / static_files / index.html dest = / var / www / html / mode = 0644 notify: - перезапустить apache - name: убедитесь, что apache запущен (и включите его при загрузке) service: name = httpd state = start enabled = yes handlers: - name: перезапустить службу apache: name = httpd состояние = перезапущено.
Во-вторых, создайте каталог / static_files:
# mkdir / static_files.
где вы будете хранить обычай index.html файл:
Apache был запущен на этом хосте через Ansible
Принесено вам Tecmint.com
Тем не менее, теперь пришло время использовать эту инструкцию для выполнения задач, упомянутых ранее. Вы заметите, что Ansible будет выполнять каждую задачу по хосту, по одной за раз, и сообщать о статусе таких задач:
# ansible-playbook /etc/ansible/playbooks/apache.yml.
Теперь посмотрим, что происходит, когда мы открываем браузер и указываем на него 192.168.0.29 и 192.168.0.30:
Давайте сделаем еще один шаг и вручную остановим и отключим Apache на узел1 и узел2:
# systemctl остановить httpd. # systemctl отключить httpd. # systemctl активен httpd. # systemctl включен httpd.
Потом снова беги,
# ansible-playbook /etc/ansible/playbooks/apache.yml.
На этот раз задача сообщает, что веб-сервер Apache был запущен и включен на каждом хосте:
Пожалуйста, рассмотрите приведенный выше пример как представление о возможностях Ansible. Хотя это относительно простые задачи при выполнении на небольшом количестве серверов, они могут стать очень утомительными и трудоемкими, если вам нужно сделать то же самое на нескольких (возможно, сотнях) машин.
В этой статье мы описали, как запускать команды и выполнять сложные задачи на нескольких удаленных хостах одновременно с помощью Ansible. В официальная документация и Репозиторий GitHub предоставить множество примеров и руководств о том, как использовать Ansible для решения практически любой мыслимой задачи.
Когда вы начнете учиться автоматизировать задачи на удаленных хостах Linux Используя Ansible, мы хотели бы услышать ваши мысли. Вопросы, комментарии и предложения также всегда приветствуются, поэтому не стесняйтесь обращаться к нам, используя форму ниже в любое время.