feat: Добавлена система пресетов для Molecule
- Создана система пресетов для быстрого переключения между конфигурациями - Добавлены пресеты: minimal, standard, docker, cluster - Обновлена структура проекта с папками cicd/, vault/, scripts/ - Упрощена система vault с функциональными секретами - Добавлены скрипты для работы с пресетами - Обновлен Makefile с командами для пресетов - Удалены старые файлы и структуры Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
51
cicd/.gitlab-ci.yml
Normal file
51
cicd/.gitlab-ci.yml
Normal 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
|
||||
53
cicd/azure-devops/azure-pipelines.yml
Normal file
53
cicd/azure-devops/azure-pipelines.yml
Normal 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
70
cicd/github/workflows.yml
Normal 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
8
cicd/gitlab/config.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"auths": {
|
||||
"hub.cism-ms.ru": {
|
||||
"username": "your-username",
|
||||
"password": "your-password"
|
||||
}
|
||||
}
|
||||
}
|
||||
33
cicd/gitlab/docker-compose.yaml
Normal file
33
cicd/gitlab/docker-compose.yaml
Normal 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}
|
||||
31
cicd/gitlab/runner/config.toml
Normal file
31
cicd/gitlab/runner/config.toml
Normal 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
59
cicd/jenkins/Jenkinsfile
vendored
Normal 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!'
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user