feat: улучшения роли devops и тестирования
- Убрана подстановка значений по умолчанию для devops_password и devops_ssh_public_key - Добавлена строгая валидация секретов из vault/secrets.yml с детальными сообщениями об ошибках - Убран подробный вывод установки пакетов в тасках - Исправлена проблема с созданием симлинков в vault/ при тестировании - Обновлена логика загрузки vault переменных в molecule тестах - Добавлена очистка симлинков в destroy.yml для дополнительной безопасности Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
@@ -15,17 +15,17 @@
|
||||
tags:
|
||||
- color-reset
|
||||
|
||||
#- name: Установка роли devops
|
||||
# hosts: all
|
||||
# become: true
|
||||
# roles:
|
||||
# - devops
|
||||
|
||||
- name: Установка роли python
|
||||
- name: Установка роли devops
|
||||
hosts: all
|
||||
become: true
|
||||
roles:
|
||||
- python
|
||||
- devops
|
||||
|
||||
#- name: Установка роли python
|
||||
# hosts: all
|
||||
# become: true
|
||||
# roles:
|
||||
# - python
|
||||
|
||||
#- name: Установка роли docker
|
||||
# hosts: all
|
||||
|
||||
@@ -149,16 +149,16 @@
|
||||
|
||||
```bash
|
||||
# Только создание пользователя и группы
|
||||
ansible-playbook -i inventory site.yml --tags "user,group"
|
||||
ansible-playbook -i inventory run.yml --tags "user,group"
|
||||
|
||||
# Только настройка SSH
|
||||
ansible-playbook -i inventory site.yml --tags "ssh,keys"
|
||||
ansible-playbook -i inventory run.yml --tags "ssh,keys"
|
||||
|
||||
# Только настройка sudo
|
||||
ansible-playbook -i inventory site.yml --tags "sudo,permissions"
|
||||
ansible-playbook -i inventory run.yml --tags "sudo,permissions"
|
||||
|
||||
# Пропустить проверки
|
||||
ansible-playbook -i inventory site.yml --skip-tags "verification"
|
||||
ansible-playbook -i inventory run.yml --skip-tags "verification"
|
||||
```
|
||||
|
||||
## Обработчики
|
||||
|
||||
@@ -9,11 +9,11 @@ devops_group: "devops"
|
||||
devops_home: "/home/{{ devops_user }}"
|
||||
devops_shell: "/bin/bash"
|
||||
|
||||
# Настройки пароля (берется из vault/secrets.yml)
|
||||
devops_password: "{{ vault_devops_password | default('') }}"
|
||||
# Настройки пароля (обязательно из vault/secrets.yml)
|
||||
devops_password: "{{ vault_devops_password }}"
|
||||
|
||||
# Настройки SSH ключа (берется из vault/secrets.yml)
|
||||
devops_ssh_public_key: "{{ vault_devops_ssh_public_key | default('') }}"
|
||||
# Настройки SSH ключа (обязательно из vault/secrets.yml)
|
||||
devops_ssh_public_key: "{{ vault_devops_ssh_public_key }}"
|
||||
|
||||
# Настройки sudo
|
||||
devops_sudo_nopasswd: true
|
||||
|
||||
@@ -12,25 +12,67 @@
|
||||
- name: "🔍 Проверка входных параметров"
|
||||
tags: [devops, validation]
|
||||
block:
|
||||
- name: "Установка значений по умолчанию для тестирования"
|
||||
set_fact:
|
||||
devops_password: "{{ vault_devops_password | default('123123') }}"
|
||||
devops_ssh_public_key: "{{ vault_devops_ssh_public_key | default('ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... devops@devops.org.ru') }}"
|
||||
when: devops_password == "" or devops_ssh_public_key == ""
|
||||
|
||||
- name: "Проверка наличия пароля пользователя devops"
|
||||
fail:
|
||||
msg: "Пароль пользователя devops не найден в vault/secrets.yml. Установите переменную vault_devops_password."
|
||||
when:
|
||||
- vault_file_path is defined
|
||||
- devops_password == ""
|
||||
msg: |
|
||||
❌ ОШИБКА: Пароль пользователя devops не найден в vault/secrets.yml!
|
||||
|
||||
Для корректной работы роли необходимо установить переменную vault_devops_password в файле vault/secrets.yml.
|
||||
|
||||
Пример содержимого vault/secrets.yml:
|
||||
vault_devops_password: "ваш_пароль_здесь"
|
||||
vault_devops_ssh_public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... devops@devops.org.ru"
|
||||
|
||||
Для шифрования файла используйте:
|
||||
ansible-vault encrypt vault/secrets.yml
|
||||
when:
|
||||
- vault_devops_password is not defined
|
||||
- vault_devops_password == ""
|
||||
- vault_devops_password is none
|
||||
|
||||
- name: "Проверка наличия SSH публичного ключа"
|
||||
fail:
|
||||
msg: "SSH публичный ключ не найден в vault/secrets.yml. Установите переменную vault_devops_ssh_public_key."
|
||||
when:
|
||||
- vault_file_path is defined
|
||||
- devops_ssh_public_key == ""
|
||||
msg: |
|
||||
❌ ОШИБКА: SSH публичный ключ не найден в vault/secrets.yml!
|
||||
|
||||
Для корректной работы роли необходимо установить переменную vault_devops_ssh_public_key в файле vault/secrets.yml.
|
||||
|
||||
Пример содержимого vault/secrets.yml:
|
||||
vault_devops_password: "ваш_пароль_здесь"
|
||||
vault_devops_ssh_public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... devops@devops.org.ru"
|
||||
|
||||
Для шифрования файла используйте:
|
||||
ansible-vault encrypt vault/secrets.yml
|
||||
when:
|
||||
- vault_devops_ssh_public_key is not defined
|
||||
- vault_devops_ssh_public_key == ""
|
||||
- vault_devops_ssh_public_key is none
|
||||
|
||||
- name: "✅ Проверка успешна - все необходимые секреты найдены"
|
||||
debug:
|
||||
msg: |
|
||||
✅ Все необходимые секреты найдены в vault/secrets.yml:
|
||||
- Пароль пользователя: {{ 'установлен' if vault_devops_password is defined and vault_devops_password != '' else 'НЕ УСТАНОВЛЕН' }}
|
||||
- SSH публичный ключ: {{ 'установлен' if vault_devops_ssh_public_key is defined and vault_devops_ssh_public_key != '' else 'НЕ УСТАНОВЛЕН' }}
|
||||
when:
|
||||
- vault_devops_password is defined
|
||||
- vault_devops_password != ""
|
||||
- vault_devops_ssh_public_key is defined
|
||||
- vault_devops_ssh_public_key != ""
|
||||
|
||||
- name: "🔍 Проверка что пароль не пустой"
|
||||
fail:
|
||||
msg: "❌ ОШИБКА: Пароль пользователя devops не может быть пустым!"
|
||||
when:
|
||||
- vault_devops_password is defined
|
||||
- vault_devops_password == ""
|
||||
|
||||
- name: "🔍 Проверка что SSH ключ не пустой"
|
||||
fail:
|
||||
msg: "❌ ОШИБКА: SSH публичный ключ не может быть пустым!"
|
||||
when:
|
||||
- vault_devops_ssh_public_key is defined
|
||||
- vault_devops_ssh_public_key == ""
|
||||
|
||||
- name: "Логирование начала выполнения роли"
|
||||
debug:
|
||||
@@ -51,12 +93,6 @@
|
||||
name: "{{ devops_packages_to_install }}"
|
||||
state: present
|
||||
become: true
|
||||
register: package_install_result
|
||||
|
||||
- name: "Логирование установки пакетов"
|
||||
debug:
|
||||
msg: "Установлены пакеты: {{ package_install_result.changed_packages | default('нет изменений') }}"
|
||||
when: false
|
||||
|
||||
- name: "👤 Создание группы devops"
|
||||
tags: [devops, group]
|
||||
|
||||
@@ -235,6 +235,7 @@ devops_system_checks:
|
||||
path: "{{ devops_sudoers_file }}"
|
||||
register: "devops_sudoers_check"
|
||||
|
||||
|
||||
# Настройки для логирования
|
||||
devops_log_config:
|
||||
level: "{{ devops_log_level }}"
|
||||
|
||||
Reference in New Issue
Block a user