Добавил создание ролей make role new

This commit is contained in:
2025-03-13 19:02:34 +03:00
parent b6286aa9b7
commit 2cb442bd73
17 changed files with 87 additions and 35 deletions

View File

@@ -1,5 +1,5 @@
view create edit show delete test lint deploy: view create edit show delete test lint deploy new:
@true @true
#################################################################################################### ####################################################################################################
@@ -27,29 +27,41 @@ prune:
#################################################################################################### ####################################################################################################
vault: vault:
@case "$(word 2, $(MAKECMDGOALS))" in \ @case "$(word 2, $(MAKECMDGOALS))" in \
show) docker compose run --rm ansible bash -c "ansible-vault view --vault-password-file vault-password.txt roles/vars/secrets.yml";; \ show) docker compose run --rm ansible bash -c "ansible-vault view --vault-password-file vault-password.txt vars/secrets.yml";; \
create) docker compose run --rm ansible bash -c "ansible-vault create --encrypt-vault-id default --vault-password-file vault-password.txt roles/vars/secrets.yml";; \ create) docker compose run --rm ansible bash -c "ansible-vault create --encrypt-vault-id default --vault-password-file vault-password.txt vars/secrets.yml";; \
edit) docker compose run --rm ansible bash -c "ansible-vault edit --vault-password-file vault-password.txt roles/vars/secrets.yml";; \ edit) docker compose run --rm ansible bash -c "ansible-vault edit --vault-password-file vault-password.txt vars/secrets.yml";; \
delete) docker compose run --rm ansible bash -c "rm roles/vars/secrets.yml";; \ delete) docker compose run --rm ansible bash -c "rm vars/secrets.yml";; \
*) echo "Unknown action";; \ *) echo "Unknown action";; \
esac esac
role: role:
@case "$(word 2, $(MAKECMDGOALS))" in \ @case "$(word 2, $(MAKECMDGOALS))" in \
new) \
clear; \
echo "Введите название новой роли на английском:"; \
read ROLE_NAME; \
echo "Введите описание роли:"; \
read ROLE_DESC; \
cp -r default/ "roles/$${ROLE_NAME}"; \
printf "\n- name: $${ROLE_DESC}" >> roles/deploy.yaml; \
printf "\n import_playbook: $${ROLE_NAME}/deploy.yaml" >> roles/deploy.yaml; \
printf '\n - /ansible/roles/%s' "$$ROLE_NAME" >> molecule/default/converge.yml; \
printf "\n - $${ROLE_NAME}" >> roles/$$ROLE_NAME/deploy.yaml;; \
lint) \ lint) \
clear; \ clear; \
echo "Check your role..."; \ echo "Check your role..."; \
docker compose run --rm ansible bash -c "ansible-vault decrypt --vault-password-file vault-password.txt roles/vars/secrets.yml"; \ docker compose run --rm ansible bash -c "ansible-vault decrypt --vault-password-file vault-password.txt vars/secrets.yml"; \
docker compose run --rm ansible bash -c "ansible-lint roles/*"; \ docker compose run --rm ansible bash -c "ansible-lint roles/*"; \
echo " "; \ echo " "; \
docker compose run --rm ansible bash -c "ansible-vault encrypt roles/vars/secrets.yml --encrypt-vault-id default --vault-password-file vault-password.txt";; \ docker compose run --rm ansible bash -c "ansible-vault encrypt vars/secrets.yml --encrypt-vault-id default --vault-password-file vault-password.txt";; \
test) \ test) \
clear; \ clear; \
echo "Running test roles..."; \ echo "Running test roles..."; \
docker compose run --rm ansible bash -c "ansible-vault decrypt --vault-password-file vault-password.txt roles/vars/secrets.yml"; \ docker compose run --rm ansible bash -c "ansible-vault decrypt --vault-password-file vault-password.txt vars/secrets.yml"; \
docker compose run --rm ansible bash -c "molecule test --parallel"; \ docker compose run --rm ansible bash -c "molecule test --parallel"; \
echo " "; \ echo " "; \
docker compose run --rm ansible bash -c "ansible-vault encrypt roles/vars/secrets.yml --encrypt-vault-id default --vault-password-file vault-password.txt";; \ docker compose run --rm ansible bash -c "ansible-vault encrypt vars/secrets.yml --encrypt-vault-id default --vault-password-file vault-password.txt";; \
deploy) \ deploy) \
clear; \ clear; \
echo "Deploying roles to production..."; \ echo "Deploying roles to production..."; \

View File

@@ -1,2 +1,46 @@
# AnsibleTemplate # AnsibleTemplate
Темплейт для создания, проверки и тестирование ролей Ansible с помощью контейнеров Docker.
### С чего начать?
На вашей машине вам необходимо сбилдить образ, где будут запускаться все роли через docker-compose.
- **make build** - создание контейнера
- **make rebuild** - пересоздание контейнера, если были внесены изменения в Dockerfile
- **make prune** - очистить систему от лишних образов
### Работа с ролью
- **make role new** - создать новую роль из шаблона. Название роли пишется на английском, описание роли на любом языке
- **make role lint** - проверяет все роли в папке roles/* на наличие ошибок
- **make role test** - позволяет тестировать роль, указанную в molecule/default/converge.yml
сразу на двух контейнерах (RedHat и Ubuntu)
- **make role deploy** - запускает роль в продакшен. Все хосты берет из файла inventory/hosts
### Работа с файлом переменных
Все переменные защищены через **Ansible-Vault** и находятся в папке vars/secrets.yml
Для смены пароля измените его в файле **./vault-password.txt**
- **make vault create** - создать новый файл с учетом пароля в файле **./vault-password.txt**
- **make vault delete** - удалить файл с переменными
- **make vault edit** - отредактировать файл переменных
- **make vault show** - показать содержимое файла переменных
### Работа с Git
- **make push** - запушить изменения. С выбором ветки и вводом коммита.
- **make pull** - получить изменения из репы
### Добавить свой образ контейнера для тестов
Что бы добавить или изменить докер-образы для тестирования ролей измените файл настроек молекулы
molecule/default/molecule.yml
```yaml
- name: ubuntu-instance
image: "geerlingguy/docker-ubuntu2004-ansible:latest"
privileged: true
pre_build_image: true
```
помните, что образ обязательно должен содержать python не ниже версии 3.12

View File

@@ -5,7 +5,6 @@
become_user: root become_user: root
become_method: ansible.builtin.sudo become_method: ansible.builtin.sudo
gather_facts: true gather_facts: true
roles:
- role
vars_files: vars_files:
- ../vars/secrets.yml - ../../vars/secrets.yml
roles:

View File

@@ -1,7 +1,6 @@
--- ---
- name: Converge - name: Converge
hosts: all hosts: all
roles:
- /ansible/roles/role
vars_files: vars_files:
- ../../roles/vars/secrets.yml - ../../vars/secrets.yml
roles:

View File

@@ -1,3 +1 @@
--- ---
- name: Import role
import_playbook: role/deploy.yaml

View File

@@ -1,6 +0,0 @@
$ANSIBLE_VAULT;1.1;AES256
33333461346434666539316330333661306537303234306132383733633635656139623330346339
3735343834396131623436333737363436346137613337340a393633636663346131353135313332
35656537663832366464316538346565313236306538343537343032373161653366353665366565
3461316135353337640a613137383034663265306666353338326135613961646364373966353863
37313731623164303566383431613131353331363035653630313630353130623066

6
vars/secrets.yml Normal file
View File

@@ -0,0 +1,6 @@
$ANSIBLE_VAULT;1.1;AES256
30376237306137343436646138333634613432346133323130646136633466643964336637306434
3963303237623565666462393234653266333036363538370a643739633530313766363035633266
37623335383861333034653064613865396332653561356333346333373533353561663431323539
6365636662376666380a636332333435636662303732623531613661313835376636383664373534
30363830383731666334653635366236323262326432326338366237383533366231