Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.
- Пример файла playbook.yml
- Пример файла requirements.yml
- Пример файла hosts
- Пример файла group_vars/webservers/vars.yml
- Пример файла group_vars/webservers/vault.yml
- Пример файла ansible.cfg
- Примеры команд
Ниже приведён пример файлов конфигурации Ansible для деплоя приложения на два сервера с добавлением роли мониторинга с помощью Datadog.
Пример файла playbook.yml
---
- hosts: all # Хосты для которых выполняется ansible
remote_user: root
tasks:
- name: Install packages for
ansible.builtin.apt:
name: python3-pip
update_cache: yes
- name: Install Docker Module for Python
ansible.builtin.pip:
name: docker
- name: Run container
# Используем модуль community.docker.docker_container
community.docker.docker_container:
name: hexlet-app # Имя контейнера
image: hexlet/hexlet-app # Имя используемого образа
# Публикуемые порты. Слева порт внутри контейнера,
# справа порт по которому он будет доступен снаружи
published_ports: 80:8080
restart_policy: always
restart: yes
container_default_behavior: no_defaults
pull: yes
# Задаём переменные окружения
env:
# Тут должна быть переменная из сбора фактов
# которая выводит IP-адрес текущего сервера
SERVER_MESSAGE: '...'
# Можем использовать отдельный блок (play) для подготовки мониторинга
# Другой вариант - использовать include_role для задавания порядка
# (сперва выполняются роли, потом таски)
- hosts: all
gather_facts: yes
remote_user: root
roles:
- name: datadog.datadog
Пример файла requirements.yml
# Определяем коллекцию
# https://galaxy.ansible.com/community/docker
collections:
- name: community.docker
# Добавляем роль для работы мониторинга
roles:
- name: datadog.datadog
Пример файла hosts
; определяем один хост с именем webserver
[webservers]
; указываем список хостов
web1 ansible_host=204.189.100.169 ansible_user=root
web2 ansible_host=234.189.100.185 ansible_user=root
Пример файла group_vars/webservers/vars.yml
# Когда переменная зашифрована в файле,
# то удобно ссылаться на неё и использовать обычную переменную
# (например, чтобы найти все места, гда она используется)
variable: "{{ vault_variable }}"
# Переменная datadog_api_key зашифрована с помощью Ansible Vault
# https://docs.ansible.com/ansible/latest/user_guide/vault.html
# регистрироваться и получать api_key нужно на datadoghq.com.
# Datadog использует 5000 порт, на котором работает,
# поэтому используем другой порт
app_port: "3000"
# datadoghq.eu - содержит свои, другие апикеи
datadog_site: "datadoghq.com"
datadog_checks:
http_check:
init_config:
instances:
- name: Application health check status
url: "http://localhost:{{ app_port }}"
timeout: 5
method: GET
Пример файла group_vars/webservers/vault.yml
# Содержимое этого файла зашифровано с помощью vault.
# Для простоты выводится как есть
vault_variable: "значение переменной"
# Зашифрованная переменная
datadog_api_key: !vault |
$ANSIBLE_VAULT;1.1;AES256
36306462306166623932306230663334336562623061383533363634383431373063666239616564
3866383737376430396565393961333134353938343535390a616635353638633232306334346134
64663263663334653565303762323137646665643931663330373731303435393238626430316361
6434396639333238350a333965633639346631633532313961303563373263653162333738333332
66316137383034393133393134326363626230633166663864323038383436613734376561373164
6339316335613235636637396563306465623138323331393137
Пример файла ansible.cfg
[defaults]
inventory = hosts # определяем инвентори файл по умолчанию
Примеры команд
# Таким образом можно зашифровать значение hexlet в переменную the_secret
# с помощью пароля в файле vault-password
ansible-vault encrypt_string --vault-password-file vault-password 'hexlet' --name 'the_secret'
# Чтобы расшифровать зашифрованные с помощью Ansible Vault переменные
# если пароль хранится в файле, используется флаг --vault-password-file
ansible-playbook -v --vault-password-file vault-password playbook.yml
# Устанавливаем коллекции определённые в файле requirements.yml
ansible-galaxy collection install -r requirements.yml
# Деплоим приложение
ansible-playbook -v playbook.yml
# Подключаемся по ssh к хосту с IP 192.168.0.2
ssh username@192.168.0.2
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты