Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Advanced deploy DevOps: Деплой и эксплуатация

Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.

Ниже приведён пример файлов конфигурации 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: 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: '...'

Пример файла requirements.yml

# Определяем коллекцию
# https://galaxy.ansible.com/community/docker
collections:
- name: community.docker

Пример файла hosts

; определяем один хост с именем webserver
[webserver]
; указываем список хостов
204.189.100.169
234.189.100.185

Пример файла andible.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

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу