TGViewer
DevOps 360° DevOps 360° @devops360 · 326 subscribers
Post #81 256
Всех с окончание рабочей недели , но давайте хорошенька пройдемся по Ansible и сделаем , что-то прикольное!
Давайте создадим более сложный плейбук 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 в контейнере. Эмодзи добавляют немного веселья в процесс! 😊
🔝 Наш чат для обсуждений |🚀 Буст для канала
  • 👍 3
More from @devops360
  1. Sep 28, 2026🔥 УРА, НОВОСТНЫЕ НОВОСТИ! (МНОГО БУКВ) 🔥 В современном IT процветает какой-то безумный к…
  2. Jul 20, 2026ПРИВЕТ! КРЧ если вкратце, то думаю через пару лет будем переходить с ямл инженеров и полно…
  3. May 21, 2026ХЕЛОУ! 🚀 Ingress NGINX — ВСЁ. Почему пора переезжать на Gateway API Главный сетевой контр…
  4. Jan 20, 2026ХЕЛЛОУ ГАЙЗ! смотрите какую интересную штуку мне подсказали , можно проверить свои знания…
  5. Nov 21, 2025Хелоу! Ingress NGINX уходит: что важно знать Kubernetes объявил о завершении поддержки Ing…
  6. Nov 14, 2025Всех с пятницей! Накидал доку как для себя так и для общего пользования по накатке бекапа…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →