Шт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