Модуль копирования (copy) Ansible используется в различных реальных сценариях, когда вам нужно скопировать файлы или шаблоны с хост-машины Ansible на ряд удаленных серверов.
Вот некоторые распространенные сценарии использования.
- Развертывание статического содержимого: Если у вас есть статический контент, такой как HTML, CSS, файлы JavaScript или другие активы, которые вы хотите развернуть на веб-серверах или серверах приложений, вы можете использовать модуль копирования для обеспечения того, чтобы эти файлы были скопированы в соответствующие места.
- Развертывание ключевых файлов: Иногда вам может понадобиться распространить сертификаты SSL или ключи SSH на несколько серверов. Модуль копирования позволяет безопасно распространять эти файлы, сохраняя контроль над их разрешениями и правами собственности.
- Пользовательские шаблоны: Вы можете использовать шаблоны Jinja2 с модулем копирования для динамического создания файлов конфигурации или других текстовых файлов на основе переменных или условий, специфичных для каждого управляемого узла.
- Управление конфигурационными файлами: С помощью модуля копирования можно развернуть общий файл конфигурации для Nginx, Apache или любой другой службы на нескольких серверах.
Необходимые условия
Прежде чем приступить к работе, убедитесь, что у вас есть все необходимое:
- Ansible установлен на вашем хосте управления.
- Доступ к одному или нескольким целевым хостам, на которые вы хотите скопировать файлы.
- Базовое понимание концепций Ansible, таких как инвентари, плейбуки и таски.
📜 Понимание основных компонентов Ansible – часть 1 – IT is good
Понимание модуля копирования Ansible
Модуль копирования Ansible предоставляет простой и эффективный способ распространения файлов и каталогов в вашей инфраструктуре.
Основной синтаксис модуля копирования показан ниже:
Пояснения:
- src: Указывает путь к исходному файлу на хосте управления Ansible.
- dest: Указывает путь к целевому файлу или каталогу на удаленных хостах.
Теперь давайте рассмотрим несколько практических сценариев.
Практические примеры использования модуля copy Ansible
Теперь, когда вы знакомы с синтаксисом, позвольте мне поделиться некоторыми практическими примерами, в которых вы, скорее всего, будете использовать этот модуль.
Пример 1: Распространение файлов конфигурации
В этом примере вы развернете файл конфигурации виртуального хоста Nginx на нескольких серверах с помощью модуля копирования Ansible и динамически измените файл конфигурации для разных доменных имен с помощью переменных Ansible.
Сначала создайте шаблон файла конфигурации Nginx (nginx.conf.j2), включающий переменные для имени домена.
Вот пример:
server {
listen 80;
server_name {{ domain_name }};
root /var/www/{{ domain_name }};
index index.html index.htm;
access_log /var/log/nginx/{{ domain_name }}.log;
error_log /var/log/nginx/{{ domain_name }}.log;
}
Далее создайте Ansible плейбук playbook.yml, который использует модуль copy для развертывания файла конфигурации Nginx на нескольких серверах и динамически задает имя домена с помощью переменных Ansible:
ansible-playbook -i inventory_file playbook.yml
Замените inventory_file на файл инвентари Ansible, содержащий список удаленных серверов.
Этот плейбук развернет файл конфигурации Nginx (nginx.conf.j2) на каждом сервере в группе nginx_servers.
Модуль копирования динамически заменит переменную {{ domain_name }} в шаблоне на каждое доменное имя, указанное в переменной domain_names.
Это позволит вам развернуть различные конфигурации Nginx для разных доменных имен на нескольких серверах с помощью переменных Ansible.
Пример 2: Развертывание статического содержимого
Модуль копирования Ansible – отличный выбор для развертывания статического содержимого, такого как HTML, CSS, файлы JavaScript и другие активы на веб-серверах или серверах приложений.
Вот как можно использовать модуль копирования для обеспечения копирования этих файлов в соответствующие места:
Во-первых, создайте плейбук Ansible, в котором будут определены задачи по копированию файлов статического содержимого в соответствующие места на ваших серверах.
В этом плейбук:
- web_servers – группа серверов, на которых вы хотите развернуть статический контент.
- src – путь к локальной директории, содержащей файлы HTML, CSS и JavaScript.
- dest – директория назначения на серверах, куда нужно скопировать файлы.
Теперь запустите сборник сценариев Ansible с помощью команды ansible-playbook:
Пример 3: Развертывание файлов SSH и SSL
Модуль копирования Ansible используется для безопасного распространения конфиденциальных файлов, таких как сертификаты SSL, ключи SSH или другие учетные данные, на нескольких серверах, сохраняя при этом контроль над их разрешениями и правами собственности.
Сначала создайте файл playbook.yml.
- 📜 Как определить группы кластеров в инвентари Ansible
- 📜 Как клонировать репозиторий Git с помощью Ansible
- 📜 Как с помощью Ansible обновить все пакеты в Ubuntu / Debian Linux
- 📜 Как поручить Ansible использовать конкретную версию Python
- 📜 Как создать шаблоны в Ansible для создания конфигураций на управляемых узлах – часть 7