Штinit commit

This commit is contained in:
Сергей Антропов
2025-03-05 15:53:41 +03:00
parent 43bd842720
commit 93333c3598
13 changed files with 214 additions and 0 deletions

8
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

6
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="YamllintSettings">
<option name="binPath" value="yamllint" />
</component>
</project>

24
Dockerfile Normal file
View File

@@ -0,0 +1,24 @@
FROM python:3.9-slim
# Устанавливаем зависимости
RUN apt-get update && apt-get install -y \
git \
curl \
docker.io \
docker-compose \
&& rm -rf /var/lib/apt/lists/*
# Устанавливаем Ansible, Molecule и Ansible Vault
RUN pip install --no-cache-dir ansible ansible-vault molecule docker molecule-docker
# Устанавливаем Docker CLI
RUN curl -fsSL https://get.docker.com | sh
# Устанавливаем рабочую директорию
WORKDIR /workspace
# Устанавливаем роль из Ansible Galaxy (пример: geerlingguy.nginx)
#RUN ansible-galaxy role install geerlingguy.nginx
# Указываем команду по умолчанию
CMD ["molecule", "--version"]

110
Makefile Normal file
View File

@@ -0,0 +1,110 @@
# Переменные
ROLE_NAME ?= my_new_role
VAULT_PASSWORD_FILE ?= vault_password_file
INVENTORY ?= /workspace/inventory/hosts # Путь к инвентори внутри контейнера
PLAYBOOK ?= /workspace/role/playbook.yml # Путь к playbook внутри контейнера
####################################################################################################
# Управление контейнерами с помощью docker compose
####################################################################################################
# Сборка docker-образов
build:
docker compose build $(c)
# Пересборка docker-образов
rebuild:
docker compose build --no-cache $(c)
docker compose down
docker compose up -d
# Создание и запуск docker-контейнеров
up:
docker compose up -d
# Остановка и УДАЛЕНИЕ docker-контейнеров
down:
docker compose down
# Остановка docker-контейнеров
stop:
docker compose stop $(c)
# Запуск docker-контейнеров
start:
docker compose start $(c)
# Перезапуск docker-контейнеров
restart: down up
# Удаление docker-контейнеров с вольюмами
destroy:
docker compose down --volumes --remove-orphans && rm -rf data/*/
# Удаление docker-контейнеров с полной очисткой неактивных контейнеров
prune:
docker system prune -af
# Показать список контейнеров
ps:
docker compose ps
# Все логи конейнеров
logs:
docker compose logs --tail=100 -f $(c)
shell:
docker compose exec ansible-molecule bash
# Запуск тестов Molecule
test:
docker compose run --rm ansible-molecule sh -c "molecule test"
#docker compose run --rm ansible-molecule sh -c "molecule --help"
# Установка зависимостей из requirements.yml
dependencies:
docker compose run --rm ansible-molecule sh -c "ansible-galaxy role install -r /workspace/requirements.yml"
# Создание новой роли с помощью Molecule
create:
docker compose run --rm ansible-molecule sh -c "molecule create"
# Шифрование файла с помощью Ansible Vault
encrypt:
docker compose run --rm ansible-molecule sh -c "ansible-vault encrypt --vault-password-file /workspace/$(VAULT_PASSWORD_FILE) /workspace/role/$(FILE)"
# Расшифровка файла с помощью Ansible Vault
decrypt:
docker compose run --rm ansible-molecule sh -c "ansible-vault decrypt --vault-password-file /workspace/$(VAULT_PASSWORD_FILE) /workspace/role/$(FILE)"
# Просмотр зашифрованного файла
view:
docker compose run --rm ansible-molecule sh -c "ansible-vault view --vault-password-file /workspace/$(VAULT_PASSWORD_FILE) /workspace/role/$(FILE)"
# Запуск роли на реальных серверах
deploy:
docker compose run --rm ansible-molecule sh -c "ansible-playbook -i $(INVENTORY) $(PLAYBOOK) --vault-password-file /workspace/$(VAULT_PASSWORD_FILE)"
####################################################################################################
# Работа с Git
####################################################################################################
push:
# git config --global user.email "sergey@antropoff.ru"
# git config --global user.name "Sergey Antropoff"
git branch
@read -p "Выберите ветку для пуша: " BRANCH; \
read -p "Введите описание коммита: " COMMIT; \
commitname=$$COMMIT; \
git add . ; \
git commit -m "$$commitname"; \
git push -u origin $$BRANCH; \
echo "Изменения внесены в Git"
pull:
git pull
new-branch:
git checkout branch $(name)
branch:
git checkout $(name)

6
ansible.cfg Normal file
View File

@@ -0,0 +1,6 @@
[defaults]
inventory = /workspace/inventory
vault_password_file = /workspace/vault_password_file
remote_user = devops
host_key_checking = False
enable_plugins = yaml, ini

View File

@@ -0,0 +1,26 @@
---
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: web1
image: geerlingguy/docker-ubuntu2004-ansible:latest
pre_build_image: true
groups:
- webservers
- name: db1
image: geerlingguy/docker-ubuntu2004-ansible:latest
pre_build_image: true
groups:
- dbservers
provisioner:
name: ansible
inventory:
group_vars:
webservers:
ansible_user: root
dbservers:
ansible_user: root
verifier:
name: ansible

View File

@@ -0,0 +1,6 @@
---
- name: Apply my_ansible_role to servers
hosts: all # Используем все хосты из инвентори
become: yes # Повышаем привилегии (sudo)
roles:
- role: my_ansible_role # Указываем имя вашей роли

View File

16
docker-compose.yaml Normal file
View File

@@ -0,0 +1,16 @@
services:
ansible-molecule:
build:
context: .
dockerfile: Dockerfile
container_name: ansible-molecule
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./ansible_role:/workspace/role # Монтируем роль
- ./inventory:/workspace/inventory # Монтируем инвентори
- ./ansible.cfg:/etc/ansible/ansible.cfg # Монтируем конфиг Ansible
- ./vault_password_file:/workspace/vault_password_file # Монтируем файл с паролем для Vault
- ./requirements.yaml:/workspace/requirements.yml # Монтируем файл с зависимостями
working_dir: /workspace/role
command: >
sh -c "ansible-galaxy role install -r /workspace/requirements.yml && molecule test"

6
inventory/hosts Normal file
View File

@@ -0,0 +1,6 @@
[webservers]
server1 ansible_host=192.168.1.10 ansible_user=ubuntu
server2 ansible_host=192.168.1.11 ansible_user=ubuntu
[dbservers]
server3 ansible_host=192.168.1.12 ansible_user=ubuntu

5
requirements.yaml Normal file
View File

@@ -0,0 +1,5 @@
---
- src: geerlingguy.nginx
version: 3.1.0
- src: geerlingguy.docker
version: 6.0.1

1
vault_password_file Normal file
View File

@@ -0,0 +1 @@
password123