feat: Добавлена система пресетов для Molecule

- Создана система пресетов для быстрого переключения между конфигурациями
- Добавлены пресеты: minimal, standard, docker, cluster
- Обновлена структура проекта с папками cicd/, vault/, scripts/
- Упрощена система vault с функциональными секретами
- Добавлены скрипты для работы с пресетами
- Обновлен Makefile с командами для пресетов
- Удалены старые файлы и структуры

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-10-22 20:31:23 +03:00
parent deebf78047
commit 0b981ca61e
53 changed files with 1377 additions and 728 deletions

51
cicd/.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,51 @@
# GitLab CI для AnsibleTemplate
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
stages:
- test
- deploy
variables:
DOCKER_IMAGE: "quay.io/ansible/creator-ee:latest"
DOCKER_TLS_CERTDIR: ""
ANSIBLE_FORCE_COLOR: "true"
before_script:
- echo "Установка зависимостей..."
- pip install molecule[docker] ansible-lint
- ansible-galaxy collection install -r requirements.yml
# Тестирование с Molecule
test:
stage: test
image: $DOCKER_IMAGE
services:
- docker:dind
variables:
DOCKER_TLS_CERTDIR: ""
script:
- echo "Запуск тестов Molecule..."
- cd molecule/universal
- molecule test -s universal
artifacts:
reports:
junit: molecule/universal/.molecule/reports/junit.xml
paths:
- molecule/universal/.molecule/
expire_in: 1 week
only:
- merge_requests
- main
- develop
# Деплой (если нужен)
deploy:
stage: deploy
image: $DOCKER_IMAGE
script:
- echo "Деплой не настроен"
- echo "Добавьте логику деплоя в этот job"
when: manual
only:
- main

View File

@@ -0,0 +1,53 @@
# Azure DevOps Pipeline для AnsibleTemplate
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
trigger:
- main
- develop
pool:
vmImage: 'ubuntu-latest'
variables:
ANSIBLE_FORCE_COLOR: 'true'
DOCKER_TLS_CERTDIR: ''
stages:
- stage: Test
displayName: 'Test Stage'
jobs:
- job: TestJob
displayName: 'Run Tests'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
displayName: 'Use Python 3.11'
- script: |
pip install --upgrade pip
pip install molecule[docker] ansible-lint
ansible-galaxy collection install -r requirements.yml
displayName: 'Install Dependencies'
- script: |
ansible-lint molecule/universal/
displayName: 'Run Ansible Lint'
- script: |
cd molecule/universal
molecule test -s universal
displayName: 'Run Molecule Tests'
- task: PublishTestResults@2
inputs:
testResultsFiles: 'molecule/universal/.molecule/reports/junit.xml'
testRunTitle: 'Molecule Test Results'
condition: always()
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: 'molecule/universal/.molecule'
artifactName: 'molecule-reports'
condition: always()

70
cicd/github/workflows.yml Normal file
View File

@@ -0,0 +1,70 @@
# GitHub Actions Workflow для AnsibleTemplate
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
name: Ansible Testing
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo usermod -aG docker $USER
- name: Install Python dependencies
run: |
pip install --upgrade pip
pip install molecule[docker] ansible-lint
ansible-galaxy collection install -r requirements.yml
- name: Run Molecule tests
run: |
cd molecule/universal
molecule test -s universal
- name: Upload test results
uses: actions/upload-artifact@v3
if: always()
with:
name: molecule-reports
path: molecule/universal/.molecule/
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install ansible-lint
ansible-galaxy collection install -r requirements.yml
- name: Run Ansible Lint
run: |
ansible-lint molecule/universal/

8
cicd/gitlab/config.json Normal file
View File

@@ -0,0 +1,8 @@
{
"auths": {
"hub.cism-ms.ru": {
"username": "your-username",
"password": "your-password"
}
}
}

View File

@@ -0,0 +1,33 @@
services:
gitlab-runner:
image: gitlab/gitlab-runner:latest
container_name: gitlab-runner
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./runner:/etc/gitlab-runner
- ./config.json:/root/.docker/config.json
environment:
- CI_SERVER_URL=https://gitlab.com # Замените на URL вашего GitLab
- REGISTRATION_TOKEN=your-registration-token # Замените на ваш токен регистрации
- RUNNER_NAME=ansible-runner # Имя раннера
- RUNNER_EXECUTOR=docker # Используем Docker как исполнитель
- DOCKER_IMAGE=hub.cism-ms.ru/ansible/ansible:latest # Образ Docker по умолчанию
- RUNNER_TAGS=docker,linux,ansible # Теги для раннера
- DOCKER_PRIVILEGED=true # Привилегированный режим
- DOCKER_TLS_VERIFY=false # Отключить проверку TLS
- DOCKER_TTY=false # Отключить TTY
command: >
register --non-interactive
--executor ${RUNNER_EXECUTOR}
--docker-image ${DOCKER_IMAGE}
--url ${CI_SERVER_URL}
--registration-token ${REGISTRATION_TOKEN}
--description ${RUNNER_NAME}
--tag-list ${RUNNER_TAGS}
--run-untagged="true"
--locked="false"
--docker-privileged=${DOCKER_PRIVILEGED}
--docker-tlsverify=${DOCKER_TLS_VERIFY}
--docker-disable-entrypoint-overwrite="false"
--docker-tty=${DOCKER_TTY}

View File

@@ -0,0 +1,31 @@
concurrent = 1
check_interval = 0
shutdown_timeout = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "faa4e539628d"
url = "http://git.cism-ms.ru"
id = 115
token = "glrt-t3_5MD8hLs_69nChDbwXHLM"
token_obtained_at = 2025-03-17T15:35:01Z
token_expires_at = 0001-01-01T00:00:00Z
executor = "docker"
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tty = false
tls_verify = false
image = "hub.cism-ms.ru/ansible/ansible:latest"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
shm_size = 0
network_mtu = 0

59
cicd/jenkins/Jenkinsfile vendored Normal file
View File

@@ -0,0 +1,59 @@
// Jenkins Pipeline для AnsibleTemplate
// Автор: Сергей Антропов
// Сайт: https://devops.org.ru
pipeline {
agent any
environment {
ANSIBLE_FORCE_COLOR = 'true'
DOCKER_TLS_CERTDIR = ''
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Install Dependencies') {
steps {
sh '''
pip install --upgrade pip
pip install molecule[docker] ansible-lint
ansible-galaxy collection install -r requirements.yml
'''
}
}
stage('Lint') {
steps {
sh 'ansible-lint molecule/universal/'
}
}
stage('Test') {
steps {
dir('molecule/universal') {
sh 'molecule test -s universal'
}
}
}
}
post {
always {
archiveArtifacts artifacts: 'molecule/universal/.molecule/**/*', allowEmptyArchive: true
publishTestResults testResultsPattern: 'molecule/universal/.molecule/reports/junit.xml'
}
success {
echo 'Pipeline completed successfully!'
}
failure {
echo 'Pipeline failed!'
}
}
}