Перевод статьи подготовлен в преддверии старта курса "Инфраструктурная платформа на основе Kubernetes".
Предлагаю вам засучить рукава и погрузиться в задачи Ansible с использованием AWS EC2. Мы рассмотрим, как установить и удалить пакет с помощью Ansible.
Несколько месяцев назад мне довелось поработать с RnD задачами в VizuaMatix c использованием ansible. С тех пор я не использовал Ansible для чего-нибудь более-менее полезного, но сегодня через YouTube я получил предложение вернуться к ansible снова. После просмотра я подумал, что стоит опять закатать рукава и взяться за Ansible. Я решил выполнить несколько задач Ansible с помощью AWS EC2.
Для этого я использовал управляющий (master node, далее “мастер”) и подчиненный рабочий (worker node, далее “воркер”) узлы. Оба работают под управлением Ubuntu 18.04.4. Задача была очень простой. Установить медиаплеер VLC на наш рабочий узел, а затем удалить его.
Для начала у нам нужно установить Ansible на мастера и воркера(-ов). Для установки просто используйте:
sudo apt install ansible
Затем нам нужно поделиться публичным ключом нашего мастера с воркером. Мы создаем ssh-ключ из мастера и передаем его воркерам.
ssh-keygen -t rsa -N “” -f /home/ubuntu/.ssh/idrsa
Затем запустите cat
и скопируйте содержимое cat .ssh/idrsa.pub
Перейдите в терминал воркера и vim ~/.ssh/authorized_keys
вставьте содержимое вниз этого файла, сохраните и выйдите. Этот шаг объяснен здесь.
Проверьте подключение, из мастера попробуйте:
ssh -i ~/.ssh/id_rsa username@instance_ip
Если наша передача ключа прошла успешно, то вы сможете войти в воркера без пароля.
Затем давайте добавим наших воркеров в ansible. На мастере откройте файл /etc/ansible/hosts
и добавьте в него группу. Я назвал ее [workers]
. Теперь, когда вы указываете workers
в своем playbook, ansible знает, какие хосты использовать при запуске playbook.
[workers]
[workers]
node_ip_address
Сохранитесь, а затем мы попробуем проверить связь с нашими воркерами: ansible workers -m ping
Это должно вернуть результат, аналогичный следующему с SUCCESS
и pong
| SUCCESS => {
"changed": false,
"ping": "pong"
}
Если вы получите что-то еще, вам следует перепроверить все свои настройки. До сих пор мы не меняли никаких настроек по умолчанию в AWS-EC2 или Ansible. Теперь мы готовы к установке VLC.
Установка пакета с помощью Playbook
Для работы с пакетами Ansible использует playbook. Он написан на yaml
и имеет достаточно прямолинейную структуру. Вы можете узнать больше о playbooks из официального руководства ansible.
Это наш новый playbook для установки vlc: installvlc.yaml
---
- name: installvlc # имя playbook
hosts: workers # куда нужно устанавливать
become: true # запускать как sudo user
tasks:
- name: Install VLC Media Player
apt: # управление пакетами
name: vlc-bin
state: latest
# если вам нужна конкретная версия, вы можете указать это в state: 3.0.0
Если playbook успешно запустился, просто используйте
ansible-playbook installvlc.yaml
Если все работает правильно, вы увидите что-то вроде этого:
PLAY [installvlc] *********************************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************************
ok: []
TASK [Install VLC Media Player] *******************************************************************************************************
changed: []
PLAY RECAP ****************************************************************************************************************************
: ok=2 changed=1 unreachable=0 failed=0
changed=1
здесь означает, что playbook внес изменения в воркера. Если мы снова запустим playbook, вы увидите changed=0
. Это означает, что изменения состояния (state) не происходило.
Из воркера: когда вы введете vlc
в терминале, он должен вернуть вам что-то вроде VLC media player 3.0.8 Vetinari (revision 3.0.8–0-gf350b6b5a7)
.
Удаление пакета с помощью Playbook
Чтобы удалить пакет, нам просто нужно использовать тот же синтаксис, что и в инструкции по установке, за исключением:
state: absent
Создайте новый playbook и убедитесь, что его state изменен. Также у задачи должно быть информативное имя, чтобы вы могли различать задачи. Запускайте этот playbook как ansible-playbook uninstallvlc.yaml
Заключение
Ansible - отличный инструмент для решения задач автоматизации. Нам не нужно самому идти и вносить изменения во все узлы, просто измените yaml
файл и запустите playbook. Это базовые задачи, но ansible можно использовать для настройки маршрутизаторов, устройств IoT и многого другого.
Здесь я показывал, как установить и удалить пакет с помощью ansible. В следующих руководствах мы займемся вещами посложнее, такими как добавление патчей, изменение конфигураций и т. д.
Бесплатный Demo-урок по теме: "Повышаем надежность развертывания в Kubernetes"