Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.
- Пример файла playbook.yml
- Пример файла requirements.yml
- Пример файла inventory.ini
- Пример файла group_vars/webservers.yml
- Примеры команд
Ниже приведён пример файлов конфигурации Ansible для деплоя приложения на один сервер.
Пример файла playbook.yml
---
- hosts: all # Хосты для которых выполняется ansible
gather_facts: yes
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: Deploy application
hosts: all
gather_facts: no
remote_user: root
tasks:
- 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:
# Переменная server_message зашифрована с помощью Ansible Vault
# https://docs.ansible.com/ansible/latest/user_guide/vault.html
SERVER_MESSAGE: "{{ server_message }}"
Пример файла requirements.yml
# Определяем коллекцию
# https://galaxy.ansible.com/community/docker
collections:
- name: community.docker
roles: []
Пример файла inventory.ini
; определяем один хост в группе webservers
[webservers]
; указываем алиас, IP-адрес хоста, пользователя для подключения
web1 ansible_host=62.181.155.200 ansible_user=root
Пример файла group_vars/webservers.yml
# Переменная будет доступна только для хостов внутри группы webservers
# https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html
server_message: !vault |
$ANSIBLE_VAULT;1.1;AES256
61616366656238646232393330626537366635333261373337386361376666643765303531383237
3338656135653333363061636563356365376164306334300a643662323230383133386136393238
32613131386130623262346332323765316236313936366638613636393234616237373934653237
3531616332626533330a646231373739346532393837656165386635356339623636653838323965
35363538613863333235613339323563376566393465373232326233626633656264
Примеры команд
# Подключаемся по ssh к хосту с IP 192.168.0.2
ssh username@192.168.0.2
# Таким образом можно зашифровать значение hexlet в переменную the_secret
# с помощью пароля в файле vault-password
ansible-vault encrypt_string --vault-password-file vault-password 'hexlet' --name 'the_secret'
# Чтобы расшифровать зашифрованные с помощью Ansible Vault переменные
# если пароль хранится в файле, используется флаг --vault-password-file
# флаг -i указывает на созданный инвентори файл
# флаг -v для подробного вывода
ansible-playbook -v -i inventory.ini playbook.yml --vault-password-file vault-password
# Устанавливаем коллекции определённые в файле requirements.yml
ansible-galaxy collection install -r requirements.yml
# Выполняем плейбук с зашифрованной переменной
ansible-playbook -i inventory.ini -v playbook.yml --vault-password-file vault-password
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты