fix
This commit is contained in:
@@ -39,7 +39,7 @@ test:
|
|||||||
- echo "Распаковываем секреты..."
|
- echo "Распаковываем секреты..."
|
||||||
- ansible-vault decrypt --vault-password-file ./vault-password.txt vars/secrets.yml
|
- ansible-vault decrypt --vault-password-file ./vault-password.txt vars/secrets.yml
|
||||||
- echo "Запускаем тесты через Молекулу..."
|
- echo "Запускаем тесты через Молекулу..."
|
||||||
- molecule test --parallel
|
- molecule test --parallel --destroy=always
|
||||||
- echo "Упаковываем секреты..."
|
- echo "Упаковываем секреты..."
|
||||||
- ansible-vault encrypt vars/secrets.yml --encrypt-vault-id default --vault-password-file ./vault-password.txt
|
- ansible-vault encrypt vars/secrets.yml --encrypt-vault-id default --vault-password-file ./vault-password.txt
|
||||||
allow_failure: false
|
allow_failure: false
|
||||||
|
|||||||
@@ -50,8 +50,8 @@ RUN pip install --upgrade pip && \
|
|||||||
docker
|
docker
|
||||||
|
|
||||||
# Копируем ssh ключ
|
# Копируем ssh ключ
|
||||||
COPY id_rsa /root/.ssh/id_rsa
|
#COPY id_rsa /root/.ssh/id_rsa
|
||||||
RUN chmod 600 /root/.ssh/id_rsa
|
#RUN chmod 600 /root/.ssh/id_rsa
|
||||||
|
|
||||||
# Устанавливаем рабочую директорию
|
# Устанавливаем рабочую директорию
|
||||||
WORKDIR /ansible
|
WORKDIR /ansible
|
||||||
|
|||||||
22
Dockerfile-CentOS
Normal file
22
Dockerfile-CentOS
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Сборка контейнера с systemd для удобного тестирования ролей Ansible через Molecule
|
||||||
|
|
||||||
|
# Используем официальный образ Fedora
|
||||||
|
FROM quay.io/fedora/python-312
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
|
# Обновляем пакеты и устанавливаем systemd
|
||||||
|
RUN dnf -y update && \
|
||||||
|
dnf -y install systemd rsync && \
|
||||||
|
dnf clean all && \
|
||||||
|
rm -rf /var/cache/dnf /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
# Настраиваем окружение для systemd
|
||||||
|
ENV container=docker
|
||||||
|
STOPSIGNAL SIGRTMIN+3
|
||||||
|
|
||||||
|
# Создаем необходимые директории для systemd
|
||||||
|
VOLUME [ "/sys/fs/cgroup" ]
|
||||||
|
|
||||||
|
# Запускаем systemd при старте контейнера
|
||||||
|
CMD ["/sbin/init"]
|
||||||
20
Dockerfile-Ubuntu
Normal file
20
Dockerfile-Ubuntu
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Сборка контейнера с systemd для удобного тестирования ролей Ansible через Molecule
|
||||||
|
|
||||||
|
# Используем официальный образ Ubuntu 20.04
|
||||||
|
FROM geerlingguy/docker-ubuntu2004-ansible:latest
|
||||||
|
|
||||||
|
# Обновляем пакеты и устанавливаем systemd
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y systemd systemd-sysv rsync && \
|
||||||
|
apt-get clean && \
|
||||||
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
# Указываем, что контейнер использует systemd в качестве init-системы
|
||||||
|
ENV container=docker
|
||||||
|
STOPSIGNAL SIGRTMIN+3
|
||||||
|
|
||||||
|
# Создаем необходимые директории для systemd
|
||||||
|
VOLUME [ "/sys/fs/cgroup" ]
|
||||||
|
|
||||||
|
# Запускаем systemd при старте контейнера
|
||||||
|
CMD ["/sbin/init"]
|
||||||
45
Makefile
45
Makefile
@@ -1,7 +1,7 @@
|
|||||||
# Глобальные переменные
|
# Глобальные переменные
|
||||||
IMAGE ?= ansible
|
IMAGE ?= ansible
|
||||||
TAG ?= 0.1
|
TAG ?= 0.1
|
||||||
REGISTRY ?= hub.cism-ms.ru
|
REGISTRY ?= hub.cism-ms.ru/ansible
|
||||||
# По умолчанию используем docker. Для локальной разработки используйте docker-compose
|
# По умолчанию используем docker. Для локальной разработки используйте docker-compose
|
||||||
RUN_MODE ?= docker
|
RUN_MODE ?= docker
|
||||||
|
|
||||||
@@ -13,15 +13,16 @@ else ifeq ($(RUN_MODE), docker)
|
|||||||
--name $(IMAGE) \
|
--name $(IMAGE) \
|
||||||
-v $(PWD):/ansible \
|
-v $(PWD):/ansible \
|
||||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
-v ~/.ssh/id_rsa:/root/.ssh/id_rsa:ro \
|
||||||
-e ANSIBLE_VAULT_PASSWORD_FILE=/ansible/vault-password.txt \
|
-e ANSIBLE_VAULT_PASSWORD_FILE=/ansible/vault-password.txt \
|
||||||
--privileged \
|
--privileged \
|
||||||
--workdir /ansible \
|
--workdir /ansible \
|
||||||
$(REGISTRY)/ansible/$(IMAGE)
|
$(REGISTRY)/$(IMAGE)
|
||||||
else
|
else
|
||||||
$(error Invalid RUN_MODE. Use "docker-compose" or "docker")
|
$(error Invalid RUN_MODE. Use "docker-compose" or "docker")
|
||||||
endif
|
endif
|
||||||
|
|
||||||
view create edit show delete test lint deploy new init build rebuild prune release push pull:
|
view create edit show delete test lint deploy new init build rebuild prune release images push pull shell:
|
||||||
@true
|
@true
|
||||||
|
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
@@ -30,14 +31,15 @@ view create edit show delete test lint deploy new init build rebuild prune relea
|
|||||||
init:
|
init:
|
||||||
@echo "Шаг 1: Создание Docker-образа..."
|
@echo "Шаг 1: Создание Docker-образа..."
|
||||||
@make docker build
|
@make docker build
|
||||||
@echo "Шаг 2: Создание нового vault-файла с паролем..."
|
@echo "Шаг 2: Создание Docker-образов для запуска Molecule..."
|
||||||
|
@make docker images
|
||||||
|
@echo "Шаг 3: Создание нового vault-файла с паролем..."
|
||||||
@read -p "Введите пароль для vault: " VAULT_PASSWORD; \
|
@read -p "Введите пароль для vault: " VAULT_PASSWORD; \
|
||||||
echo "$$VAULT_PASSWORD" > vault-password.txt; \
|
echo "$$VAULT_PASSWORD" > vault-password.txt; \
|
||||||
make vault create
|
make vault create
|
||||||
@echo "Шаг 3: Создание нового брэнча в гите..."
|
@echo "Шаг 4: Создание нового брэнча в гите..."
|
||||||
@make git new
|
@make git new
|
||||||
|
@echo "Шаг 5: Создание новой роли..."
|
||||||
@echo "Шаг 4: Создание новой роли..."
|
|
||||||
@make role new
|
@make role new
|
||||||
|
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
@@ -47,30 +49,33 @@ docker:
|
|||||||
@case "$(word 2, $(MAKECMDGOALS))" in \
|
@case "$(word 2, $(MAKECMDGOALS))" in \
|
||||||
build) \
|
build) \
|
||||||
docker buildx create --use --name multiarch-builder --driver docker-container; \
|
docker buildx create --use --name multiarch-builder --driver docker-container; \
|
||||||
cp ~/.ssh/id_rsa .; \
|
|
||||||
if [ "$(RUN_MODE)" = "docker-compose" ]; then \
|
if [ "$(RUN_MODE)" = "docker-compose" ]; then \
|
||||||
docker compose build $(c); \
|
docker compose build $(c); \
|
||||||
else \
|
else \
|
||||||
docker build -t $(REGISTRY)/ansible/$(IMAGE) .; \
|
docker build -t $(REGISTRY)/$(IMAGE) .; \
|
||||||
fi; \
|
fi;; \
|
||||||
rm id_rsa;; \
|
|
||||||
rebuild) \
|
rebuild) \
|
||||||
docker buildx create --use --name multiarch-builder --driver docker-container; \
|
docker buildx create --use --name multiarch-builder --driver docker-container; \
|
||||||
cp ~/.ssh/id_rsa .; \
|
|
||||||
if [ "$(RUN_MODE)" = "docker-compose" ]; then \
|
if [ "$(RUN_MODE)" = "docker-compose" ]; then \
|
||||||
docker compose build --no-cache $(c); \
|
docker compose build --no-cache $(c); \
|
||||||
else \
|
else \
|
||||||
docker build --no-cache -t $(REGISTRY)/ansible/$(IMAGE) .; \
|
docker build --no-cache -t $(REGISTRY)/$(IMAGE) .; \
|
||||||
fi; \
|
fi;; \
|
||||||
rm id_rsa;; \
|
|
||||||
prune) \
|
prune) \
|
||||||
docker system prune -af;; \
|
docker system prune -af;; \
|
||||||
|
shell) \
|
||||||
|
clear; \
|
||||||
|
echo "Entering to Ansible container shell..."; \
|
||||||
|
$(RUN) bash ;; \
|
||||||
release) \
|
release) \
|
||||||
docker buildx create --use --name multiarch-builder --driver docker-container; \
|
docker buildx create --use --name multiarch-builder --driver docker-container; \
|
||||||
cp ~/.ssh/id_rsa .; \
|
|
||||||
docker login $(REGISTRY); \
|
docker login $(REGISTRY); \
|
||||||
docker buildx build -t $(REGISTRY)/ansible/$(IMAGE):$(TAG) -t $(REGISTRY)/ansible/$(IMAGE):latest --platform linux/amd64,linux/arm64 --push .; \
|
docker buildx build -t $(REGISTRY)/$(IMAGE):$(TAG) -t $(REGISTRY)/$(IMAGE):latest --platform linux/amd64,linux/arm64 --push .;; \
|
||||||
rm id_rsa;; \
|
images) \
|
||||||
|
docker buildx create --use --name multiarch-builder --driver docker-container; \
|
||||||
|
docker login $(REGISTRY); \
|
||||||
|
docker buildx build -t $(REGISTRY)/centos:latest --platform linux/amd64,linux/arm64 --push -f Dockerfile-CentOS .; \
|
||||||
|
docker buildx build -t $(REGISTRY)/ubuntu:latest --platform linux/amd64,linux/arm64 --push -f Dockerfile-Ubuntu .;; \
|
||||||
*) echo "Unknown action. Available actions: build, rebuild, prune, release";; \
|
*) echo "Unknown action. Available actions: build, rebuild, prune, release";; \
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -84,6 +89,8 @@ vault:
|
|||||||
edit) $(RUN) bash -c "ansible-vault edit --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";; \
|
delete) $(RUN) bash -c "rm vars/secrets.yml";; \
|
||||||
rekey) $(RUN) bash -c "ansible-vault rekey --vault-password-file vault-password.txt vars/secrets.yml";; \
|
rekey) $(RUN) bash -c "ansible-vault rekey --vault-password-file vault-password.txt vars/secrets.yml";; \
|
||||||
|
decrypt) $(RUN) bash -c "ansible-vault decrypt --vault-password-file vault-password.txt vars/secrets.yml";; \
|
||||||
|
encrypt) $(RUN) bash -c "ansible-vault encrypt --encrypt-vault-id default --vault-password-file vault-password.txt vars/secrets.yml";; \
|
||||||
*) echo "Unknown action";; \
|
*) echo "Unknown action";; \
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -110,7 +117,7 @@ role:
|
|||||||
clear; \
|
clear; \
|
||||||
echo "Running test roles..."; \
|
echo "Running test roles..."; \
|
||||||
$(RUN) bash -c "ansible-vault decrypt --vault-password-file vault-password.txt vars/secrets.yml"; \
|
$(RUN) bash -c "ansible-vault decrypt --vault-password-file vault-password.txt vars/secrets.yml"; \
|
||||||
$(RUN) bash -c "molecule test --parallel"; \
|
$(RUN) bash -c "docker login $(REGISTRY) && molecule test --parallel --destroy=always"; \
|
||||||
$(RUN) bash -c "ansible-vault encrypt vars/secrets.yml --encrypt-vault-id default --vault-password-file vault-password.txt";; \
|
$(RUN) bash -c "ansible-vault encrypt vars/secrets.yml --encrypt-vault-id default --vault-password-file vault-password.txt";; \
|
||||||
deploy) \
|
deploy) \
|
||||||
clear; \
|
clear; \
|
||||||
|
|||||||
10
README.md
10
README.md
@@ -11,7 +11,9 @@
|
|||||||
- **make docker build** - создание контейнера
|
- **make docker build** - создание контейнера
|
||||||
- **make docker rebuild** - пересоздание контейнера, если были внесены изменения в Dockerfile
|
- **make docker rebuild** - пересоздание контейнера, если были внесены изменения в Dockerfile
|
||||||
- **make docker prune** - очистить систему от лишних образов
|
- **make docker prune** - очистить систему от лишних образов
|
||||||
|
- **make docker shell** - войти в контейнер Shell
|
||||||
- **make docker release** - собирает образ контейнера и пушит его в докер реджистри
|
- **make docker release** - собирает образ контейнера и пушит его в докер реджистри
|
||||||
|
- **make docker images** - собрать образы контейнеров с systemd, для удобного тестирования ролей.
|
||||||
|
|
||||||
Или ввести команду:
|
Или ввести команду:
|
||||||
|
|
||||||
@@ -35,6 +37,8 @@
|
|||||||
- **make vault edit** - отредактировать файл переменных
|
- **make vault edit** - отредактировать файл переменных
|
||||||
- **make vault show** - показать содержимое файла переменных
|
- **make vault show** - показать содержимое файла переменных
|
||||||
- **make vault rekey** - сменить пароль шифрования
|
- **make vault rekey** - сменить пароль шифрования
|
||||||
|
- **make vault encrypt** - зашифровать файл секретов
|
||||||
|
- **make vault decrypt** - расшифровать файл секретов
|
||||||
|
|
||||||
### Работа с Git
|
### Работа с Git
|
||||||
|
|
||||||
@@ -48,8 +52,10 @@
|
|||||||
molecule/default/molecule.yml
|
molecule/default/molecule.yml
|
||||||
```yaml
|
```yaml
|
||||||
- name: ubuntu-instance
|
- name: ubuntu-instance
|
||||||
image: "geerlingguy/docker-ubuntu2004-ansible:latest"
|
image: "your.docker-registry.com/your-image:latest"
|
||||||
privileged: true
|
privileged: true
|
||||||
pre_build_image: true
|
pre_build_image: true
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
```
|
```
|
||||||
помните, что образ обязательно должен содержать python не ниже версии 3.12
|
Помните, что образ обязательно должен содержать python не ниже версии 3.12 и systemd для нормального тестирования ролей.
|
||||||
8
molecule/default/destroy.yml
Normal file
8
molecule/default/destroy.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
- name: Destroy containers on interrupt
|
||||||
|
hosts: localhost
|
||||||
|
tasks:
|
||||||
|
- name: Ensure containers are destroyed
|
||||||
|
docker_container:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
state: absent
|
||||||
|
loop: "{{ molecule_yml.platforms }}"
|
||||||
@@ -9,15 +9,26 @@ driver:
|
|||||||
name: docker
|
name: docker
|
||||||
|
|
||||||
platforms:
|
platforms:
|
||||||
- name: centos-instance
|
- name: centos
|
||||||
image: "quay.io/fedora/python-312"
|
image: "hub.cism-ms.ru/ansible/centos:latest"
|
||||||
privileged: true
|
privileged: true
|
||||||
pre_build_image: true
|
pre_build_image: true
|
||||||
|
volumes:
|
||||||
- name: ubuntu-instance
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
image: "geerlingguy/docker-ubuntu2004-ansible:latest"
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
tmpfs:
|
||||||
|
- /tmp
|
||||||
|
- /run
|
||||||
|
- name: ubuntu
|
||||||
|
image: "hub.cism-ms.ru/ansible/ubuntu:latest"
|
||||||
privileged: true
|
privileged: true
|
||||||
pre_build_image: true
|
pre_build_image: true
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
tmpfs:
|
||||||
|
- /tmp
|
||||||
|
- /run
|
||||||
|
|
||||||
provisioner:
|
provisioner:
|
||||||
name: ansible
|
name: ansible
|
||||||
@@ -29,6 +40,22 @@ provisioner:
|
|||||||
lint:
|
lint:
|
||||||
name: ansible-lint
|
name: ansible-lint
|
||||||
|
|
||||||
|
|
||||||
verifier:
|
verifier:
|
||||||
name: ansible
|
name: ansible
|
||||||
|
|
||||||
|
scenario:
|
||||||
|
name: default
|
||||||
|
test_sequence:
|
||||||
|
- dependency
|
||||||
|
- cleanup
|
||||||
|
- destroy
|
||||||
|
- syntax
|
||||||
|
- create
|
||||||
|
- prepare
|
||||||
|
- converge
|
||||||
|
- idempotence
|
||||||
|
- side_effect
|
||||||
|
- verify
|
||||||
|
- cleanup
|
||||||
|
- destroy
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user