Штinit commit
This commit is contained in:
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal 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
6
.idea/misc.xml
generated
Normal 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
24
Dockerfile
Normal 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
110
Makefile
Normal 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
6
ansible.cfg
Normal 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
|
||||||
0
ansible_role/molecule/default/docker-compose.yml
Normal file
0
ansible_role/molecule/default/docker-compose.yml
Normal file
26
ansible_role/molecule/default/molecule.yml
Normal file
26
ansible_role/molecule/default/molecule.yml
Normal 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
|
||||||
6
ansible_role/plybook.yaml
Normal file
6
ansible_role/plybook.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
- name: Apply my_ansible_role to servers
|
||||||
|
hosts: all # Используем все хосты из инвентори
|
||||||
|
become: yes # Повышаем привилегии (sudo)
|
||||||
|
roles:
|
||||||
|
- role: my_ansible_role # Указываем имя вашей роли
|
||||||
0
ansible_role/tasks/main.yaml
Normal file
0
ansible_role/tasks/main.yaml
Normal file
16
docker-compose.yaml
Normal file
16
docker-compose.yaml
Normal 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
6
inventory/hosts
Normal 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
5
requirements.yaml
Normal 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
1
vault_password_file
Normal file
@@ -0,0 +1 @@
|
|||||||
|
password123
|
||||||
Reference in New Issue
Block a user