Ниже приведён пример файлов конфигурации Ansible для деплоя приложения на два сервера.
---
- 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: 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: '...'
# Определяем коллекцию
# https://galaxy.ansible.com/community/docker
collections:
- name: community.docker
; определяем один хост с именем webserver
[webserver]
; указываем список хостов
204.189.100.169
234.189.100.185
[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
Вам ответят команда поддержки Хекслета или другие студенты.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт
Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу