Обновление проекта
This commit is contained in:
@@ -8,16 +8,6 @@
|
||||
# Получаем preset из переменной окружения или используем default
|
||||
preset_name: "{{ lookup('env', 'MOLECULE_PRESET') | default('default') }}"
|
||||
preset_file: "/workspace/molecule/presets/{{ preset_name }}.yml"
|
||||
|
||||
# перечисли файлы/глобы, которые нужно временно расшифровать
|
||||
vault_targets:
|
||||
- /workspace/vault/secrets.yml
|
||||
- /workspace/vault/secret.yml
|
||||
# - /workspace/files/playbooks/group_vars/*/vault.yml
|
||||
# - /workspace/files/playbooks/host_vars/*/vault.yml
|
||||
# - /workspace/roles/**/vars/vault.yml
|
||||
# - /workspace/roles/*/defaults/*.yml
|
||||
# - /workspace/files/**/*secret*.yml
|
||||
|
||||
tasks:
|
||||
# =============================================================================
|
||||
@@ -38,262 +28,197 @@
|
||||
ignore_errors: true
|
||||
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# VAULT - Работа с зашифрованными файлами
|
||||
# НАСТРОЙКА ЗАВЕРШЕНА - Переходим к подготовке контейнеров
|
||||
# =============================================================================
|
||||
- name: Vault operations
|
||||
- name: Configuration loaded and proceed to container preparation
|
||||
debug:
|
||||
msg: |
|
||||
================================================================================
|
||||
VAULT - Работа с зашифрованными файлами
|
||||
НАСТРОЙКА ЗАВЕРШЕНА
|
||||
================================================================================
|
||||
Files: {{ vault_targets | length }} targets
|
||||
Конфигурация загружена. Далее выполняется подготовка контейнеров (ранее была в run.yml)
|
||||
================================================================================
|
||||
|
||||
- name: Check vault files encryption status
|
||||
community.docker.docker_container_exec:
|
||||
container: ansible-controller
|
||||
command: |
|
||||
bash -c '
|
||||
VAULT_TARGETS_JSON="{{ vault_targets | to_json }}"
|
||||
VAULT_PASSWORD_FILE="/workspace/vault/.vault"
|
||||
|
||||
echo "=== CHECKING VAULT FILES ENCRYPTION STATUS ==="
|
||||
|
||||
# Парсим JSON массив и проверяем каждый файл
|
||||
echo "$VAULT_TARGETS_JSON" | jq -r ".[]" | while read -r target; do
|
||||
echo "Checking target: $target"
|
||||
|
||||
# Если это glob паттерн, находим файлы
|
||||
if [[ "$target" == *"*"* ]]; then
|
||||
for file in $target; do
|
||||
if [ -f "$file" ]; then
|
||||
echo "Found file: $file"
|
||||
if grep -q "ANSIBLE_VAULT" "$file"; then
|
||||
echo "ENCRYPTED: $file"
|
||||
else
|
||||
echo "PLAINTEXT: $file"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
else
|
||||
# Обычный файл
|
||||
if [ -f "$target" ]; then
|
||||
echo "Found file: $target"
|
||||
if grep -q "ANSIBLE_VAULT" "$target"; then
|
||||
echo "ENCRYPTED: $target"
|
||||
else
|
||||
echo "PLAINTEXT: $target"
|
||||
fi
|
||||
else
|
||||
echo "NOT_FOUND: $target"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
'
|
||||
register: vault_status_check
|
||||
ignore_errors: true
|
||||
|
||||
- name: Encrypt plaintext vault files
|
||||
community.docker.docker_container_exec:
|
||||
container: ansible-controller
|
||||
command: |
|
||||
bash -c '
|
||||
VAULT_TARGETS_JSON="{{ vault_targets | to_json }}"
|
||||
VAULT_PASSWORD_FILE="/workspace/vault/.vault"
|
||||
|
||||
echo "=== ENCRYPTING PLAINTEXT VAULT FILES ==="
|
||||
|
||||
if [ ! -f "$VAULT_PASSWORD_FILE" ]; then
|
||||
echo "Vault password file not found: $VAULT_PASSWORD_FILE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Парсим JSON массив и шифруем каждый plaintext файл
|
||||
echo "$VAULT_TARGETS_JSON" | jq -r ".[]" | while read -r target; do
|
||||
echo "Processing target: $target"
|
||||
|
||||
# Если это glob паттерн, находим файлы
|
||||
if [[ "$target" == *"*"* ]]; then
|
||||
for file in $target; do
|
||||
if [ -f "$file" ] && ! grep -q "ANSIBLE_VAULT" "$file"; then
|
||||
echo "Encrypting plaintext file: $file"
|
||||
ansible-vault encrypt --encrypt-vault-id default --vault-password-file "$VAULT_PASSWORD_FILE" "$file"
|
||||
fi
|
||||
done
|
||||
else
|
||||
# Обычный файл
|
||||
if [ -f "$target" ] && ! grep -q "ANSIBLE_VAULT" "$target"; then
|
||||
echo "Encrypting plaintext file: $target"
|
||||
ansible-vault encrypt --encrypt-vault-id default --vault-password-file "$VAULT_PASSWORD_FILE" "$target"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
'
|
||||
ignore_errors: true
|
||||
|
||||
- name: Decrypt vault files for processing
|
||||
community.docker.docker_container_exec:
|
||||
container: ansible-controller
|
||||
command: |
|
||||
bash -c '
|
||||
VAULT_TARGETS_JSON="{{ vault_targets | to_json }}"
|
||||
VAULT_PASSWORD_FILE="/workspace/vault/.vault"
|
||||
|
||||
echo "=== DECRYPTING VAULT FILES FOR PROCESSING ==="
|
||||
|
||||
if [ ! -f "$VAULT_PASSWORD_FILE" ]; then
|
||||
echo "Vault password file not found: $VAULT_PASSWORD_FILE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Парсим JSON массив и расшифровываем каждый зашифрованный файл
|
||||
echo "$VAULT_TARGETS_JSON" | jq -r ".[]" | while read -r target; do
|
||||
echo "Processing target: $target"
|
||||
|
||||
# Если это glob паттерн, находим файлы
|
||||
if [[ "$target" == *"*"* ]]; then
|
||||
for file in $target; do
|
||||
if [ -f "$file" ] && grep -q "ANSIBLE_VAULT" "$file"; then
|
||||
echo "Decrypting encrypted file: $file"
|
||||
ansible-vault decrypt --vault-password-file "$VAULT_PASSWORD_FILE" "$file"
|
||||
fi
|
||||
done
|
||||
else
|
||||
# Обычный файл
|
||||
if [ -f "$target" ] && grep -q "ANSIBLE_VAULT" "$target"; then
|
||||
echo "Decrypting encrypted file: $target"
|
||||
ansible-vault decrypt --vault-password-file "$VAULT_PASSWORD_FILE" "$target"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
'
|
||||
ignore_errors: true
|
||||
|
||||
# =============================================================================
|
||||
# VAULT LOADING - Загрузка vault переменных из vault_targets
|
||||
# =============================================================================
|
||||
- name: Load vault variables from vault_targets
|
||||
community.docker.docker_container_exec:
|
||||
container: ansible-controller
|
||||
command: |
|
||||
bash -c '
|
||||
VAULT_PASSWORD_FILE="/workspace/vault/.vault"
|
||||
|
||||
# Читаем vault_targets из переменных Ansible
|
||||
VAULT_TARGETS_JSON="{{ vault_targets | to_json }}"
|
||||
|
||||
echo "=== VAULT LOADING ==="
|
||||
echo "Vault password file: $VAULT_PASSWORD_FILE"
|
||||
echo "Vault targets from Ansible: $VAULT_TARGETS_JSON"
|
||||
|
||||
# Создаем директории для vault файлов
|
||||
mkdir -p /tmp/vault_files
|
||||
|
||||
# Создаем временный файл для объединения всех vault переменных
|
||||
echo "---" > /tmp/vault_vars.yml
|
||||
|
||||
# Счетчик для обработки конфликтов
|
||||
declare -A variable_sources
|
||||
|
||||
# Парсим JSON массив и обрабатываем каждый target
|
||||
echo "$VAULT_TARGETS_JSON" | jq -r ".[]" | while read -r target; do
|
||||
echo "Processing target: $target"
|
||||
|
||||
# Если это glob паттерн, находим файлы
|
||||
if [[ "$target" == *"*"* ]]; then
|
||||
for file in $target; do
|
||||
if [ -f "$file" ]; then
|
||||
echo "Found vault file: $file"
|
||||
|
||||
# Создаем копию файла в /tmp/vault_files для прямых ссылок
|
||||
filename=$(basename "$file")
|
||||
cp "$file" "/tmp/vault_files/$filename"
|
||||
|
||||
# Расшифровываем файл если нужно
|
||||
if [ -f "$VAULT_PASSWORD_FILE" ]; then
|
||||
echo "Loading encrypted vault file: $file"
|
||||
ansible-vault view --vault-password-file "$VAULT_PASSWORD_FILE" "$file" > "/tmp/vault_files/${filename}.decrypted"
|
||||
|
||||
# Добавляем в объединенный файл с проверкой конфликтов
|
||||
echo "---" >> /tmp/vault_vars.yml
|
||||
echo "# From: $file" >> /tmp/vault_vars.yml
|
||||
ansible-vault view --vault-password-file "$VAULT_PASSWORD_FILE" "$file" >> /tmp/vault_vars.yml
|
||||
else
|
||||
echo "Loading plain vault file: $file"
|
||||
cp "$file" "/tmp/vault_files/${filename}.decrypted"
|
||||
|
||||
# Добавляем в объединенный файл с проверкой конфликтов
|
||||
echo "---" >> /tmp/vault_vars.yml
|
||||
echo "# From: $file" >> /tmp/vault_vars.yml
|
||||
cat "$file" >> /tmp/vault_vars.yml
|
||||
fi
|
||||
fi
|
||||
done
|
||||
else
|
||||
# Обычный файл
|
||||
if [ -f "$target" ]; then
|
||||
echo "Found vault file: $target"
|
||||
|
||||
# Создаем копию файла в /tmp/vault_files для прямых ссылок
|
||||
filename=$(basename "$target")
|
||||
cp "$target" "/tmp/vault_files/$filename"
|
||||
|
||||
# Расшифровываем файл если нужно
|
||||
if [ -f "$VAULT_PASSWORD_FILE" ]; then
|
||||
echo "Loading encrypted vault file: $target"
|
||||
ansible-vault view --vault-password-file "$VAULT_PASSWORD_FILE" "$target" > "/tmp/vault_files/${filename}.decrypted"
|
||||
|
||||
# Добавляем в объединенный файл с проверкой конфликтов
|
||||
echo "---" >> /tmp/vault_vars.yml
|
||||
echo "# From: $target" >> /tmp/vault_vars.yml
|
||||
ansible-vault view --vault-password-file "$VAULT_PASSWORD_FILE" "$target" >> /tmp/vault_vars.yml
|
||||
else
|
||||
echo "Loading plain vault file: $target"
|
||||
cp "$target" "/tmp/vault_files/${filename}.decrypted"
|
||||
|
||||
# Добавляем в объединенный файл с проверкой конфликтов
|
||||
echo "---" >> /tmp/vault_vars.yml
|
||||
echo "# From: $target" >> /tmp/vault_vars.yml
|
||||
cat "$target" >> /tmp/vault_vars.yml
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Символические ссылки не нужны для работы, убираем их создание
|
||||
|
||||
echo "=== VAULT VARIABLES LOADED ==="
|
||||
echo "Combined vault variables:"
|
||||
cat /tmp/vault_vars.yml
|
||||
echo ""
|
||||
echo "Individual vault files available at:"
|
||||
ls -la /tmp/vault_files/
|
||||
'
|
||||
ignore_errors: true
|
||||
|
||||
# =============================================================================
|
||||
# LOAD VAULT VARIABLES - Загрузка vault переменных в Ansible
|
||||
# =============================================================================
|
||||
- name: Load vault variables into Ansible
|
||||
include_vars:
|
||||
file: /tmp/vault_vars.yml
|
||||
ignore_errors: true
|
||||
|
||||
- name: Set vault files path
|
||||
set_fact:
|
||||
vault_files_path: /tmp/vault_files
|
||||
when: vault_files_path is not defined
|
||||
|
||||
# =============================================================================
|
||||
# CONVERGE ЗАВЕРШЕН - Playbook'и выполняются через Makefile
|
||||
# =============================================================================
|
||||
- name: Converge completed
|
||||
# =============================================================================
|
||||
# ПОДГОТОВКА КОНТЕЙНЕРОВ (бывший run.yml)
|
||||
# =============================================================================
|
||||
- name: Подготовка окружения для тестирования
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
# Сброс цветовых кодов ANSI для корректного отображения
|
||||
- name: Reset ANSI color codes
|
||||
debug:
|
||||
msg: |
|
||||
================================================================================
|
||||
CONVERGE ЗАВЕРШЕН
|
||||
================================================================================
|
||||
Vault переменные загружены и готовы к использованию
|
||||
Playbook'и run.yml и roles/deploy.yml будут выполнены через Makefile
|
||||
================================================================================
|
||||
msg: "\033[0m"
|
||||
changed_when: false
|
||||
tags:
|
||||
- setup
|
||||
- color-reset
|
||||
|
||||
# Создание 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
|
||||
- sudo
|
||||
state: present
|
||||
update_cache: false
|
||||
when: ansible_os_family == 'Debian'
|
||||
no_log: true
|
||||
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
|
||||
- sudo
|
||||
state: present
|
||||
when: ansible_os_family == 'RedHat'
|
||||
no_log: true
|
||||
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 sudo
|
||||
when: ansible_os_family == 'Altlinux'
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
no_log: true
|
||||
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 sudo
|
||||
when: ansible_os_family == 'Astra Linux'
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
no_log: true
|
||||
tags:
|
||||
- setup
|
||||
- tools
|
||||
|
||||
# Установка Python для Ansible (если не установлен)
|
||||
- name: Install Python (Debian/Ubuntu)
|
||||
apt:
|
||||
name:
|
||||
- python3
|
||||
- python3-pip
|
||||
- python3-venv
|
||||
state: present
|
||||
when: ansible_os_family == 'Debian'
|
||||
no_log: true
|
||||
tags:
|
||||
- setup
|
||||
- python
|
||||
|
||||
- name: Install Python (RHEL/CentOS/AlmaLinux/Rocky)
|
||||
yum:
|
||||
name:
|
||||
- python3
|
||||
- python3-pip
|
||||
state: present
|
||||
when: ansible_os_family == 'RedHat'
|
||||
no_log: true
|
||||
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
|
||||
no_log: true
|
||||
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
|
||||
no_log: true
|
||||
tags:
|
||||
- setup
|
||||
- python
|
||||
@@ -188,8 +188,8 @@
|
||||
delay: 5
|
||||
until: container_info.container.State.Running | default(false)
|
||||
|
||||
# Примечание: Установка пакетов и создание директорий перенесены в run.yml
|
||||
# для выполнения на всех поднятых контейнерах
|
||||
# Примечание: Установка пакетов и создание директорий перенесены в converge.yml
|
||||
# (в секцию для hosts: all) для выполнения на всех поднятых контейнерах
|
||||
|
||||
# =============================================================================
|
||||
# DIND NODES - Создание контейнеров Docker-in-Docker
|
||||
|
||||
@@ -18,10 +18,6 @@
|
||||
groups: [test]
|
||||
kind_clusters: []
|
||||
|
||||
# перечисли файлы/глобы, которые нужно временно расшифровать
|
||||
vault_targets:
|
||||
- /workspace/vault/secrets.yml
|
||||
- /workspace/vault/secret.yml
|
||||
|
||||
tasks:
|
||||
# =============================================================================
|
||||
@@ -41,62 +37,6 @@
|
||||
when: preset_file is file
|
||||
ignore_errors: true
|
||||
|
||||
# =============================================================================
|
||||
# VAULT CLEANUP - Перешифровка файлов перед удалением контейнеров
|
||||
# =============================================================================
|
||||
- name: Vault cleanup operations
|
||||
debug:
|
||||
msg: |
|
||||
================================================================================
|
||||
VAULT CLEANUP - Перешифровка файлов перед удалением контейнеров
|
||||
================================================================================
|
||||
Re-encrypting vault files
|
||||
================================================================================
|
||||
|
||||
- name: Re-encrypt all vault files
|
||||
community.docker.docker_container_exec:
|
||||
container: ansible-controller
|
||||
command: |
|
||||
bash -c '
|
||||
VAULT_TARGETS_JSON="{{ vault_targets | to_json }}"
|
||||
VAULT_PASSWORD_FILE="/workspace/vault/.vault"
|
||||
|
||||
echo "=== RE-ENCRYPTING ALL VAULT FILES ==="
|
||||
|
||||
if [ ! -f "$VAULT_PASSWORD_FILE" ]; then
|
||||
echo "Vault password file not found: $VAULT_PASSWORD_FILE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Парсим JSON массив и перешифровываем каждый файл
|
||||
echo "$VAULT_TARGETS_JSON" | jq -r ".[]" | while read -r target; do
|
||||
echo "Processing target: $target"
|
||||
|
||||
# Если это glob паттерн, находим файлы
|
||||
if [[ "$target" == *"*"* ]]; then
|
||||
for file in $target; do
|
||||
if [ -f "$file" ] && ! grep -q "ANSIBLE_VAULT" "$file"; then
|
||||
echo "Re-encrypting file: $file"
|
||||
ansible-vault encrypt --encrypt-vault-id default --vault-password-file "$VAULT_PASSWORD_FILE" "$file"
|
||||
fi
|
||||
done
|
||||
else
|
||||
# Обычный файл
|
||||
if [ -f "$target" ] && ! grep -q "ANSIBLE_VAULT" "$target"; then
|
||||
echo "Re-encrypting file: $target"
|
||||
ansible-vault encrypt --encrypt-vault-id default --vault-password-file "$VAULT_PASSWORD_FILE" "$target"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo "All vault files re-encrypted successfully"
|
||||
|
||||
# Очистка символических ссылок в vault/
|
||||
echo "Cleaning up vault symlinks..."
|
||||
rm -f /workspace/vault/*.decrypted
|
||||
echo "Vault symlinks cleaned up"
|
||||
'
|
||||
ignore_errors: true
|
||||
|
||||
# =============================================================================
|
||||
# УДАЛЕНИЕ КОНТЕЙНЕРОВ - Остановка и удаление контейнеров
|
||||
@@ -176,17 +116,6 @@
|
||||
vars:
|
||||
# Используем переменную hosts из загруженного пресета
|
||||
hosts: "{{ hosts }}"
|
||||
# =============================================================================
|
||||
# ДОПОЛНИТЕЛЬНАЯ ОЧИСТКА - Удаление симлинков vault
|
||||
# =============================================================================
|
||||
- name: Clean up vault symlinks
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: absent
|
||||
loop:
|
||||
- /workspace/vault/secrets.yml.decrypted
|
||||
- /workspace/vault/secret.yml.decrypted
|
||||
ignore_errors: true
|
||||
|
||||
- name: Display cleanup summary
|
||||
debug:
|
||||
|
||||
@@ -1,248 +0,0 @@
|
||||
---
|
||||
# =============================================================================
|
||||
# SITE - Основной playbook для тестирования Ansible ролей
|
||||
# =============================================================================
|
||||
# Универсальный playbook для тестирования Ansible ролей
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
#
|
||||
# Этот файл отвечает за:
|
||||
# 1. Обновление пакетов в контейнерах при запуске тестов
|
||||
# 2. Установку common tools для корректной работы тестов
|
||||
# 3. Подготовку окружения для тестирования ролей
|
||||
# 4. Запуск всех ролей из директории roles/
|
||||
|
||||
- name: Подготовка окружения для тестирования
|
||||
hosts: all
|
||||
become: true
|
||||
tasks:
|
||||
# Сброс цветовых кодов ANSI для корректного отображения
|
||||
- name: Reset ANSI color codes
|
||||
debug:
|
||||
msg: "\033[0m"
|
||||
changed_when: false
|
||||
tags:
|
||||
- setup
|
||||
- color-reset
|
||||
|
||||
# Отладочная информация о vault переменных (передаются из converge.yml)
|
||||
- name: Проверка vault переменных
|
||||
debug:
|
||||
msg: |
|
||||
Vault переменные на {{ ansible_hostname }}:
|
||||
- vault_devops_password: {{ vault_devops_password | default('НЕ ОПРЕДЕЛЕНА') | length }} символов
|
||||
- vault_devops_ssh_public_key: {{ vault_devops_ssh_public_key | default('НЕ ОПРЕДЕЛЕНА') | length }} символов
|
||||
tags:
|
||||
- setup
|
||||
- vault
|
||||
- debug
|
||||
# Создание tmp директории для Ansible
|
||||
- name: Create Ansible tmp directory
|
||||
file:
|
||||
path: /tmp/.ansible-tmp
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: root
|
||||
group: root
|
||||
tags:
|
||||
- setup
|
||||
- tmp
|
||||
|
||||
# Создание vault директории
|
||||
- name: Create vault directory
|
||||
file:
|
||||
path: /workspace/vault
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: root
|
||||
group: root
|
||||
tags:
|
||||
- setup
|
||||
- vault
|
||||
# Обновление кеша пакетов для 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
|
||||
- sudo
|
||||
state: present
|
||||
update_cache: false
|
||||
when: ansible_os_family == 'Debian'
|
||||
no_log: true
|
||||
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
|
||||
- sudo
|
||||
state: present
|
||||
when: ansible_os_family == 'RedHat'
|
||||
no_log: true
|
||||
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 sudo
|
||||
when: ansible_os_family == 'Altlinux'
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
no_log: true
|
||||
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 sudo
|
||||
when: ansible_os_family == 'Astra Linux'
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
no_log: true
|
||||
tags:
|
||||
- setup
|
||||
- tools
|
||||
|
||||
# Установка Python для Ansible (если не установлен)
|
||||
- name: Install Python (Debian/Ubuntu)
|
||||
apt:
|
||||
name:
|
||||
- python3
|
||||
- python3-pip
|
||||
- python3-venv
|
||||
state: present
|
||||
when: ansible_os_family == 'Debian'
|
||||
no_log: true
|
||||
tags:
|
||||
- setup
|
||||
- python
|
||||
|
||||
- name: Install Python (RHEL/CentOS/AlmaLinux/Rocky)
|
||||
yum:
|
||||
name:
|
||||
- python3
|
||||
- python3-pip
|
||||
state: present
|
||||
when: ansible_os_family == 'RedHat'
|
||||
no_log: true
|
||||
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
|
||||
no_log: true
|
||||
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
|
||||
no_log: true
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user