Добавил make release для релиза контейнера в докер реджистри + добавил возможность выбора работы с docker-compose для локальной разработтки и запуск через docker для CI/CD
This commit is contained in:
56
Makefile
56
Makefile
@@ -2,23 +2,49 @@
|
||||
IMAGE ?= ansible
|
||||
TAG ?= 0.1
|
||||
REGISTRY ?= hub.cism-ms.ru
|
||||
# По умолчанию используем docker. Для локальной разработки используйте docker-compose
|
||||
RUN_MODE ?= docker
|
||||
|
||||
# Определение команды RUN в зависимости от RUN_MODE
|
||||
ifeq ($(RUN_MODE), docker-compose)
|
||||
RUN = docker compose run --rm $(IMAGE)
|
||||
else ifeq ($(RUN_MODE), docker)
|
||||
RUN = docker run -it --rm \
|
||||
--name $(IMAGE) \
|
||||
-v $(PWD):/ansible \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-e ANSIBLE_VAULT_PASSWORD_FILE=/ansible/vault-password.txt \
|
||||
--privileged \
|
||||
--workdir /ansible \
|
||||
$(REGISTRY)/ansible/$(IMAGE)
|
||||
else
|
||||
$(error Invalid RUN_MODE. Use "docker-compose" or "docker")
|
||||
endif
|
||||
|
||||
view create edit show delete test lint deploy new:
|
||||
@true
|
||||
|
||||
####################################################################################################
|
||||
# Управление контейнерами с помощью docker compose
|
||||
# Управление контейнерами с помощью docker compose или docker run
|
||||
####################################################################################################
|
||||
# Сборка docker-образов
|
||||
build:
|
||||
cp ~/.ssh/id_rsa .
|
||||
ifeq ($(RUN_MODE), docker-compose)
|
||||
docker compose build $(c)
|
||||
else
|
||||
docker build -t $(REGISTRY)/ansible/$(IMAGE) .
|
||||
endif
|
||||
rm id_rsa
|
||||
|
||||
# Пересборка docker-образов
|
||||
rebuild:
|
||||
cp ~/.ssh/id_rsa .
|
||||
ifeq ($(RUN_MODE), docker-compose)
|
||||
docker compose build --no-cache $(c)
|
||||
else
|
||||
docker build --no-cache -t $(REGISTRY)/ansible/$(IMAGE) .
|
||||
endif
|
||||
rm id_rsa
|
||||
|
||||
# Удаление docker-контейнеров с полной очисткой неактивных контейнеров
|
||||
@@ -31,20 +57,18 @@ release:
|
||||
docker buildx build -t $(REGISTRY)/ansible/$(IMAGE):$(TAG) --platform linux/amd64,linux/arm64 --push .
|
||||
rm id_rsa
|
||||
|
||||
|
||||
####################################################################################################
|
||||
# Работа с ролью
|
||||
####################################################################################################
|
||||
vault:
|
||||
@case "$(word 2, $(MAKECMDGOALS))" in \
|
||||
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";; \
|
||||
show) $(RUN) bash -c "ansible-vault view --vault-password-file vault-password.txt vars/secrets.yml";; \
|
||||
create) $(RUN) bash -c "ansible-vault create --encrypt-vault-id default --vault-password-file vault-password.txt vars/secrets.yml";; \
|
||||
edit) $(RUN) bash -c "ansible-vault edit --vault-password-file vault-password.txt vars/secrets.yml";; \
|
||||
delete) $(RUN) bash -c "rm vars/secrets.yml";; \
|
||||
*) echo "Unknown action";; \
|
||||
esac
|
||||
|
||||
|
||||
role:
|
||||
@case "$(word 2, $(MAKECMDGOALS))" in \
|
||||
new) \
|
||||
@@ -61,21 +85,19 @@ role:
|
||||
lint) \
|
||||
clear; \
|
||||
echo "Check your role..."; \
|
||||
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 vars/secrets.yml --encrypt-vault-id default --vault-password-file vault-password.txt";; \
|
||||
$(RUN) bash -c "ansible-vault decrypt --vault-password-file vault-password.txt vars/secrets.yml"; \
|
||||
$(RUN) bash -c "ansible-lint roles/*"; \
|
||||
$(RUN) 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 vars/secrets.yml"; \
|
||||
docker compose run --rm ansible bash -c "molecule test --parallel"; \
|
||||
echo " "; \
|
||||
docker compose run --rm ansible bash -c "ansible-vault encrypt vars/secrets.yml --encrypt-vault-id default --vault-password-file vault-password.txt";; \
|
||||
$(RUN) bash -c "ansible-vault decrypt --vault-password-file vault-password.txt vars/secrets.yml"; \
|
||||
$(RUN) bash -c "molecule test --parallel"; \
|
||||
$(RUN) 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..."; \
|
||||
docker compose run --rm ansible bash -c "ansible-playbook /ansible/roles/deploy.yaml";; \
|
||||
$(RUN) bash -c "ansible-playbook /ansible/roles/deploy.yaml";; \
|
||||
*) echo "Unknown action";; \
|
||||
esac
|
||||
|
||||
@@ -93,4 +115,4 @@ push:
|
||||
echo "Изменения внесены в Git"
|
||||
|
||||
pull:
|
||||
git pull
|
||||
git pull
|
||||
Reference in New Issue
Block a user