--- # Универсальный playbook для тестирования Ansible ролей # Автор: Сергей Антропов # Сайт: https://devops.org.ru # # Этот файл отвечает за: # 1. Обновление пакетов в контейнерах при запуске тестов # 2. Установку common tools для корректной работы тестов # 3. Подготовку окружения для тестирования ролей # 4. Запуск всех ролей из директории roles/ - name: Подготовка окружения для тестирования hosts: all become: true tasks: # Создание tmp директории для Ansible - name: Create Ansible tmp directory file: path: /tmp/.ansible-tmp state: directory mode: '0755' owner: root group: root tags: - setup - tmp # Обновление кеша пакетов для Debian/Ubuntu - name: Update package cache (Debian/Ubuntu) apt: update_cache: true cache_valid_time: 3600 when: ansible_os_family == 'Debian' changed_when: false tags: - setup - update # Обновление кеша пакетов для RHEL/CentOS/AlmaLinux/Rocky - name: Update package cache (RHEL/CentOS/AlmaLinux/Rocky) yum: update_cache: true when: ansible_os_family == 'RedHat' changed_when: false tags: - setup - update # Обновление кеша пакетов для Alt Linux - name: Update package cache (Alt Linux) command: apt-get update when: ansible_os_family == 'Altlinux' changed_when: false failed_when: false tags: - setup - update # Обновление кеша пакетов для Astra Linux - name: Update package cache (Astra Linux) command: apt-get update when: ansible_os_family == 'Astra Linux' changed_when: false failed_when: false tags: - setup - update # Установка common tools для всех ОС - name: Install common tools (Debian/Ubuntu) apt: name: - curl - jq - ca-certificates - iproute2 - iputils-ping - procps - net-tools - vim - wget - unzip - git state: present update_cache: false when: ansible_os_family == 'Debian' tags: - setup - tools - name: Install common tools (RHEL/CentOS/AlmaLinux/Rocky) yum: name: - curl - jq - ca-certificates - iproute - iputils - procps-ng - net-tools - vim - wget - unzip - git state: present when: ansible_os_family == 'RedHat' tags: - setup - tools - name: Install common tools (Alt Linux) command: apt-get install -y curl jq ca-certificates iproute2 iputils procps net-tools vim wget unzip git when: ansible_os_family == 'Altlinux' changed_when: false failed_when: false tags: - setup - tools - name: Install common tools (Astra Linux) command: apt-get install -y curl jq ca-certificates iproute2 iputils procps net-tools vim wget unzip git when: ansible_os_family == 'Astra Linux' changed_when: false failed_when: false tags: - setup - tools # Установка Python для Ansible (если не установлен) - name: Install Python (Debian/Ubuntu) apt: name: - python3 - python3-pip - python3-venv state: present when: ansible_os_family == 'Debian' tags: - setup - python # Установка Python 3.8+ для RHEL/CentOS/Rocky/AlmaLinux - name: Install Python 3.8+ (RHEL/CentOS/Rocky/AlmaLinux) yum: name: - python3 - python3-pip state: present when: ansible_os_family == 'RedHat' tags: - setup - python - name: Install Python (RHEL/CentOS/AlmaLinux/Rocky) yum: name: - python3 - python3-pip state: present when: ansible_os_family == 'RedHat' tags: - setup - python - name: Install Python (Alt Linux) command: apt-get install -y python3 python3-pip when: ansible_os_family == 'Altlinux' changed_when: false failed_when: false tags: - setup - python - name: Install Python (Astra Linux) command: apt-get install -y python3 python3-pip when: ansible_os_family == 'Astra Linux' changed_when: false failed_when: false tags: - setup - python # Создание пользователя для тестирования - name: Create test user user: name: testuser shell: /bin/bash create_home: yes state: present tags: - setup - user # Настройка sudo для тестового пользователя - name: Configure sudo for test user lineinfile: path: /etc/sudoers line: "testuser ALL=(ALL) NOPASSWD:ALL" state: present validate: 'visudo -cf %s' tags: - setup - sudo # Создание директории для тестов - name: Create test directory file: path: /tmp/ansible-test state: directory mode: '0755' owner: testuser group: testuser tags: - setup - directory - import_playbook: ../../roles/deploy.yml