--- # Основной playbook для универсальной лаборатории # Автор: Сергей Антропов # Сайт: https://devops.org.ru - name: Base deps hosts: all become: true tasks: - name: Update apt cache (Debian) apt: update_cache: true when: ansible_os_family == 'Debian' changed_when: false - name: Update yum cache (RHEL) yum: update_cache: true when: ansible_os_family == 'RedHat' changed_when: false - name: Common tools package: name: - curl - jq - ca-certificates - iproute2 - iputils-ping - procps - net-tools - sudo - vim - wget - unzip state: present # Под каждую группу — свои роли. Подставь свои имена. - name: ETCD hosts: etcd become: true roles: # - role: your_role_etcd tasks: - name: ETCD placeholder debug: msg: "ETCD группа готова для настройки" - name: Patroni hosts: patroni become: true roles: # - role: your_role_patroni tasks: - name: Patroni placeholder debug: msg: "Patroni группа готова для настройки" - name: HAProxy hosts: haproxy become: true roles: # - role: your_role_haproxy tasks: - name: HAProxy placeholder debug: msg: "HAProxy группа готова для настройки" # Пример: развернуть docker-compose прямо внутри DinD хоста(ов) - name: DinD stack deploy hosts: apps gather_facts: false vars: docker_host: "tcp://{{ inventory_hostname }}:2375" stack_dir: /root/stack tasks: - name: Create stack directory file: path: "{{ stack_dir }}" state: directory - name: Copy demo docker-compose.yml copy: dest: "{{ stack_dir }}/docker-compose.yml" content: | version: "3.9" services: web: image: nginx:alpine ports: ["8080:80"] cache: image: redis:7-alpine - name: Deploy stack on DinD community.docker.docker_compose_v2: project_src: "{{ stack_dir }}" state: present docker_host: "{{ docker_host }}" when: item.type is defined and item.type == 'dind' loop: "{{ groups['apps'] | map('extract', hostvars) | list }}"