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