Из этого туториала Вы узнаете, как установить Ansible на сервер Ubuntu и подключить миньон-сервер к серверу управления Ansbile. Затем мы создадим сборник воспроизведения Ansible, который будет использоваться для установки некоторых базовых пакетов программного обеспечения на сервер миньонов. В руководстве также будет представлен обзор основных команд Ansible, которые пригодятся в будущем.
Почему Ansible?
Если вы когда-либо работали в dev-ops или тратили время на настройку серверов для запуска ваших приложений. Вы знаете, насколько громоздким может быть все это вручную. Вам не только нужно снова и снова устанавливать или настраивать одни и те же службы, вам также необходимо вручную отслеживать, что именно вы сделали и что осталось сделать. Ansible помогает решить эту проблему. Ansible устанавливается на сервере и используется в качестве станции управления, которая хранит и применяет «состояния» к серверам, которые вы выбираете для подключения к нему. Это позволяет вам эффективно настраивать серверы для выполнения ваших ставок без необходимости делать это вручную.
Предоставление серверов Linode Ubuntu
Чтобы проработать это руководство, сначала перейдите на linode.com и создайте 2 сервера, используя дистрибутив Ubuntu Linux. Один называется ansible-control, а другой - ansible-web. Обязательно установите пароль root и дайте им разогнаться.
Учебное пособие по Linode, показывающее шаги по запуску нового сервера Linode, можно найти здесь.
Https://www.linode.com/docs/getting-started/
Установка Ansible
После того, как серверы будут завершены, инициализируйте ssh на вашем сервере управления ansible.
Сначала подключитесь по ssh к вашему новому серверу управления ansible.
ssh root@<ip-address-of-ansible-control-server>
Теперь мы должны добавить доступный репозиторий ppa. После этого мы можем установить пакет Ansible на управляющий сервер.
sudo apt update sudo apt install software-properties-common sudo apt-add-repository --yes --update ppa:ansible/ansible sudo apt install ansible
Подключение нашего первого миньона
После установки Ansible мы можем добавить IP-адрес нашего веб-сервера в файл / etc / ansible / hosts. Вы увидите много закомментированных строк. Это всего лишь пример, но поскольку это веб-сервер, мы можем поместить его в закомментированную группу [веб-серверы]. Чтобы воспользоваться функцией групп, мы также раскомментируем строку [веб-серверы].
# Ex 2: A collection of hosts belonging to the 'webservers' group [webservers] <ip-address-of-web-server> ## alpha.example.org ## beta.example.org ## 192.168.1.100 ## 192.168.1.110
Создайте ключ ssh, чтобы позволить вашему серверу управления подключаться к миньонам.
ssh-keygen
Скопируйте ssh-ключ на миньон-сервер.
ssh-copy-id <ip-address-of-web-server>
Убедитесь, что Ansible может подключаться ко всем серверам миньонов (у нас только один).
ansible -m ping all
ИЛИ мы также можем настроить таргетинг на группу веб-серверов, добавив имя группы после команды ansible. Помните группу [веб-серверы] в файле хостов?
ansible webservers -m ping
Вы должны увидеть такой ответ.
<ip-address-of-web-server> | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" }
Если вы видите этот ответ, наш управляющий сервер успешно смог подключиться к серверу миньонов через ssh. У нас подключен пустой миньон, и мы готовы к работе.
Создание нашей первой пьесы
Playbook - это файл YAML, который содержит ряд структур YAML, называемых «воспроизведениями». Пьесы - это именованная родительская структура, которая содержит ряд определений «задач». Задача - это отдельная команда или директива, отправляемая на сервер миньонов. Игра - это набор задач, которые организованы под одним названием. Playbook - это набор пьес в одном названном файле.
У игр и плейбуков также есть атрибуты, которые дают вам возможность указать, какие хосты в вашем инвентаре хотели бы, чтобы задачи выполнялись.
В папке / etc / ansible создайте файл с именем playbook.yml.
touch /etc/ansible/playbook.yml
Теперь давайте откроем файл и добавим несколько «пьес».
vi /etc/ansible/playbook.yml
Наша первая игра будет очень простой и будет сделана для установки 3 базовых пакетов в качестве примера. Мы будем устанавливать vim, dnsutils и git.
Вставьте следующий YAML в файл playbook.yml.
--- - name: install basic packages hosts: webservers tasks: - name: "Installing Vim" apt: pkg=vim - name: "Installing DNS Utils" apt: pkg=dnsutils - name: "Installing Git" apt: pkg=git
Как видите, в верхней части файла есть три дефиса. Это означает, что следующий текст находится в формате YAML.
После этого первый атрибут YAML - это имя нашего play. Мы можем называть это как угодно, но мы хотим, чтобы имя описывало общую цель всех сгруппированных задач, которые вложены в них.
Во-вторых, у нас есть атрибут hosts. Это сообщает Ansbile, в какой группе из нашего инвентаря выполнять следующие задачи. Если мы заменим веб-серверы на все, он будет работать на всех серверах в нашем инвентаре.
В-третьих, у нас есть атрибут tasks, который является родительским для всех задач, которые мы хотим запустить для этой конкретной игры.
Как видите, у каждой задачи в разделе задачи есть два обязательных атрибута. Одно из них - это название задачи, которое мы можем назвать как угодно. Вторая часть задачи сообщает Ansible, какой модуль мы вызываем. В зависимости от модуля, который мы хотим использовать, вместе с именем модуля будет предоставляться различная необходимая информация.
В этом случае мы используем модуль apt.
Список всех доступных модулей, отсортированный по категориям, находится здесь.
Https://docs.ansible.com/ansible/latest/modules/modules_by_category.html
Чтобы использовать модуль apt. Требуются два атрибута.
- name: "Installing Git" apt: pkg: git
Атрибут верхнего имени - это выбранное вами имя для задачи. второй атрибут apt - это имя модуля. Далее следуют обязательные и необязательные атрибуты для данного модуля.
Чтобы применить эту пьесу.
ansible-playbook playbook.yml
Это применит сценарий ко всем хостам в группе [веб-серверы] в инвентаре. Вам будет предоставлен отчет, показывающий состояние каждого хоста и запущенные задачи.
PLAY [install basics] ********************************************************** TASK [Gathering Facts] ********************************************************* ok: <ip-address-of-web-server> TASK [Installing Vim] ********************************************************** changed: <ip-address-of-web-server> TASK [Installing DNS Utils] **************************************************** changed: <ip-address-of-web-server> TASK [Installing Git] ********************************************************** changed: <ip-address-of-web-server> PLAY RECAP ******************************************************************** <ip-address-of-web-server> : ok=1 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Как видно из ИСПОЛЬЗОВАНИЯ в нижней части выходных данных, на сервере миньонов было внесено 3 изменения. Был получен 1 OK результат, когда сервер управления Ansible собирал исходные данные от миньона перед применением нашей playbook.
Замечательная особенность Ansible заключается в том, что он не будет пытаться повторно запустить задачи, которые уже были успешно выполнены. Если мы снова запустим сценарий, вы увидите это в действии.
PLAY [install basics] ********************************************************** TASK [Gathering Facts] ********************************************************* ok: <ip-address-of-web-server> TASK [Installing Vim] ********************************************************** changed: <ip-address-of-web-server> TASK [Installing DNS Utils] **************************************************** changed: <ip-address-of-web-server> TASK [Installing Git] ********************************************************** changed: <ip-address-of-web-server> PLAY RECAP ******************************************************************** <ip-address-of-web-server> : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Как вы можете видеть внизу, 4 задачи выполнены со статусом ОК, и ни один сервер не изменился.
Теперь вы узнали, как подключить сервер к вашему серверу управления Ansible и установить пакеты с помощью модуля apt. В следующем руководстве мы будем использовать роли Ansible, чтобы лучше организовать наш сервер управления.
Ссылки:
Https://www.ansible.com/overview/how-ansible-works
Https://www.linode.com/docs/getting-started/
Https://docs.ansible.com/ansible/latest/modules/modules_by_category.html