Давайте создадим более сложный плейбук Ansible, который будет устанавливать Docker на несколько серверов, а затем развернет простое приложение, например, Nginx, в контейнере Docker.
### Пример структуры проекта
Представим, что у нас есть следующая структура:
playbooks/
└── docker_nginx.yml
roles/
└── docker/
├── tasks/
│ ├── main.yml
├── handlers/
│ └── main.yml
├── defaults/
│ └── main.yml
├── meta/
│ └── main.yml
### Содержимое файлов роли
#### 1.
roles/docker/tasks/main.yml---
- name: Обновить пакеты на хосте 🛠
apt:
update_cache: yes
- name: Установить зависимости для Docker 📦
apt:
name: "{{ item }}"
state: present
loop:
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- name: Добавить GPG ключ Docker 🔑
apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
state: present
- name: Добавить репозиторий Docker 📥
apt_repository:
repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename }} stable"
state: present
- name: Установить Docker 🐳
apt:
name: docker-ce
state: latest
- name: Убедиться, что Docker запущен 🎉
service:
name: docker
state: started
enabled: yes
- name: Запустить Nginx в контейнере Docker 🚀
docker_container:
name: nginx_container
image: nginx:latest
state: started
ports:
- "80:80"
#### 2.
roles/docker/handlers/main.yml---
- name: Перезапустить Docker 🛑➡️🆕
service:
name: docker
state: restarted
#### 3.
roles/docker/defaults/main.yml---
docker_version: "latest"
#### 4.
roles/docker/meta/main.yml---
dependencies: []
### Содержимое плейбука
####
playbooks/docker_nginx.yml---
- name: Установка Docker и развертывание Nginx на серверах 🐳➡️🍕
hosts: all
become: yes
roles:
- docker
### Использование плейбука
Этот плейбук устанавливает Docker и запускает контейнер с Nginx на всех серверах, указанных в инвентаре. Для его запуска вам нужно выполнить команду:
ansible-playbook -i inventory_file playbooks/docker_nginx.yml
Где
inventory_file - это файл с перечислением ваших серверов. Например, он может выглядеть так:[web_servers]
server1 ansible_host=192.168.1.10
server2 ansible_host=192.168.1.11
### Заключение
Теперь у вас есть плейбук, который устанавливает Docker на нескольких серверах и запускает Nginx в контейнере. Эмодзи добавляют немного веселья в процесс! 😊
🔝 Наш чат для обсуждений |🚀 Буст для канала