0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>Ниже приведён пример файлов конфигурации<a>Ansible</a>для деплоя приложения на два сервера с подключением<a>Rollbar</a>.</strong></p>
1
<p><strong>Ниже приведён пример файлов конфигурации<a>Ansible</a>для деплоя приложения на два сервера с подключением<a>Rollbar</a>.</strong></p>
2
<h2>Пример файла production/playbook.yml</h2>
2
<h2>Пример файла production/playbook.yml</h2>
3
--- - 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}}"<h2>Пример файла requirements.yml</h2>
3
--- - 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}}"<h2>Пример файла requirements.yml</h2>
4
# Определяем коллекцию # https://galaxy.ansible.com/community/docker collections: - name: community.docker<h2>Пример файла inventory.ini</h2>
4
# Определяем коллекцию # https://galaxy.ansible.com/community/docker collections: - name: community.docker<h2>Пример файла inventory.ini</h2>
5
; определяем один хост с именем webserver [webservers] web ansible_host=188.166.111.72 ansible_user=root<h2>Пример файла group_vars/webservers.yml</h2>
5
; определяем один хост с именем webserver [webservers] web ansible_host=188.166.111.72 ansible_user=root<h2>Пример файла group_vars/webservers.yml</h2>
6
# Переменная будет доступна только для хостов внутри группы 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<h2>Примеры команд</h2>
6
# Переменная будет доступна только для хостов внутри группы 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<h2>Примеры команд</h2>
7
# Таким образом можно зашифровать значение 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
7
# Таким образом можно зашифровать значение 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