Добавил создание ролей make role new
This commit is contained in:
30
Makefile
30
Makefile
@@ -1,5 +1,5 @@
|
||||
|
||||
view create edit show delete test lint deploy:
|
||||
view create edit show delete test lint deploy new:
|
||||
@true
|
||||
|
||||
####################################################################################################
|
||||
@@ -27,29 +27,41 @@ prune:
|
||||
####################################################################################################
|
||||
vault:
|
||||
@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";; \
|
||||
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";; \
|
||||
edit) docker compose run --rm ansible bash -c "ansible-vault edit --vault-password-file vault-password.txt roles/vars/secrets.yml";; \
|
||||
delete) docker compose run --rm ansible bash -c "rm 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 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 vars/secrets.yml";; \
|
||||
*) echo "Unknown action";; \
|
||||
esac
|
||||
|
||||
|
||||
role:
|
||||
@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) \
|
||||
clear; \
|
||||
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/*"; \
|
||||
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) \
|
||||
clear; \
|
||||
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"; \
|
||||
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) \
|
||||
clear; \
|
||||
echo "Deploying roles to production..."; \
|
||||
|
||||
44
README.md
44
README.md
@@ -1,2 +1,46 @@
|
||||
# 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
|
||||
@@ -5,7 +5,6 @@
|
||||
become_user: root
|
||||
become_method: ansible.builtin.sudo
|
||||
gather_facts: true
|
||||
roles:
|
||||
- role
|
||||
vars_files:
|
||||
- ../vars/secrets.yml
|
||||
- ../../vars/secrets.yml
|
||||
roles:
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
- name: Converge
|
||||
hosts: all
|
||||
roles:
|
||||
- /ansible/roles/role
|
||||
vars_files:
|
||||
- ../../roles/vars/secrets.yml
|
||||
- ../../vars/secrets.yml
|
||||
roles:
|
||||
@@ -1,3 +1 @@
|
||||
---
|
||||
- name: Import role
|
||||
import_playbook: role/deploy.yaml
|
||||
@@ -1,6 +0,0 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
33333461346434666539316330333661306537303234306132383733633635656139623330346339
|
||||
3735343834396131623436333737363436346137613337340a393633636663346131353135313332
|
||||
35656537663832366464316538346565313236306538343537343032373161653366353665366565
|
||||
3461316135353337640a613137383034663265306666353338326135613961646364373966353863
|
||||
37313731623164303566383431613131353331363035653630313630353130623066
|
||||
6
vars/secrets.yml
Normal file
6
vars/secrets.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
30376237306137343436646138333634613432346133323130646136633466643964336637306434
|
||||
3963303237623565666462393234653266333036363538370a643739633530313766363035633266
|
||||
37623335383861333034653064613865396332653561356333346333373533353561663431323539
|
||||
6365636662376666380a636332333435636662303732623531613661313835376636383664373534
|
||||
30363830383731666334653635366236323262326432326338366237383533366231
|
||||
Reference in New Issue
Block a user