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

Errors-handling DevOps: Деплой и эксплуатация

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

Ниже приведён пример файлов конфигурации Ansible для деплоя приложения на два сервера с подключением Rollbar.

Пример файла production/playbook.yml

---
- hosts: webservers # Хосты для которых выполняется ansible
  remote_user: root

  tasks:
    - name: Install packages
      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:
          # Тут мы используем значение зашифрованной
          # с помощью vault переменной
          ROLLBAR_TOKEN: "{{ROLLBAR_TOKEN}}"

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

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

Пример файла inventory.ini

; определяем один хост с именем webserver
[webservers]
web ansible_host=188.166.111.72 ansible_user=root

Пример файла group_vars/webservers.yml

# Переменная будет доступна только для хостов внутри группы webservers
# https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html
ROLLBAR_TOKEN: !vault |
  $ANSIBLE_VAULT;1.1;AES256
  38383261333663653036663830323962663232353061373863363231616134633431636438303436
  6231303630393430313736613963316238363463373639390a643765313935383663376266386132
  34616361646538643361366333666236346162646565393564663832346630653033306136303535
  6236313166343237380a333834366439316231363230353339326261623835663066336366303363
  38613732303561633336383135386435346635646561663936613139306231613230356633653862
  37343962363663373333623366373463636230383538313639323332353936353861386434313438
  623330323565376236646433326265326331

Примеры команд

# Таким образом можно зашифровать значение 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 production/group_vars/webservers.yml

# Устанавливаем коллекции определённые в файле requirements.yml
ansible-galaxy collection install -r requirements.yml

# Деплоим приложение
ansible-playbook -v production/playbook.yml

# Подключаемся по ssh к хосту с IP 192.168.0.2
ssh username@192.168.0.2

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

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

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

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

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

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

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

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

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

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

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

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