fix: исправлены Dockerfile для systemd и molecule для тестирования
- Исправлены все Dockerfile (удален USER ansible перед CMD) Причина: systemd должен запускаться от root (PID 1) - Исправлены параметры в molecule/default/create.yml (environment → env для модуля community.docker.docker_container) - Добавлен -u root в Makefile для запуска контейнера - Добавлена переменная MOLECULE_EPHEMERAL_DIRECTORY - Удалена роль nginx из deploy.yml (не существует) Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
4
Makefile
4
Makefile
@@ -73,10 +73,12 @@ role:
|
|||||||
echo "🔧 Запуск ansible-controller контейнера..."; \
|
echo "🔧 Запуск ansible-controller контейнера..."; \
|
||||||
docker run --rm --name $(CONTAINER_NAME) -v "$(PWD):/workspace" -w /workspace \
|
docker run --rm --name $(CONTAINER_NAME) -v "$(PWD):/workspace" -w /workspace \
|
||||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
-u root \
|
||||||
-e ANSIBLE_FORCE_COLOR=1 \
|
-e ANSIBLE_FORCE_COLOR=1 \
|
||||||
-e MOLECULE_PRESET=$$PRESET \
|
-e MOLECULE_PRESET=$$PRESET \
|
||||||
|
-e MOLECULE_EPHEMERAL_DIRECTORY=/tmp/molecule_workspace \
|
||||||
$(DOCKER_IMAGE) \
|
$(DOCKER_IMAGE) \
|
||||||
bash -c "cd molecule/default && ansible-playbook -i localhost, create.yml --connection=local && ansible-playbook -i /tmp/molecule_workspace/inventory/hosts.ini site.yml && ansible-playbook -i localhost, destroy.yml --connection=local" || echo "✅ Тестирование завершено"; \
|
bash -c "mkdir -p /tmp/molecule_workspace/inventory && cd molecule/default && ansible-playbook -i localhost, create.yml --connection=local -e molecule_ephemeral_directory=/tmp/molecule_workspace && ansible-playbook -i /tmp/molecule_workspace/inventory/hosts.ini site.yml && ansible-playbook -i localhost, destroy.yml --connection=local -e molecule_ephemeral_directory=/tmp/molecule_workspace" || echo "✅ Тестирование завершено"; \
|
||||||
fi;; \
|
fi;; \
|
||||||
deploy) \
|
deploy) \
|
||||||
echo "🚀 Развертывание ролей на реальные серверы..."; \
|
echo "🚀 Развертывание ролей на реальные серверы..."; \
|
||||||
|
|||||||
@@ -11,12 +11,3 @@
|
|||||||
tags:
|
tags:
|
||||||
- ping
|
- ping
|
||||||
- test
|
- test
|
||||||
|
|
||||||
- name: Test nginx role
|
|
||||||
hosts: all
|
|
||||||
become: true
|
|
||||||
roles:
|
|
||||||
- nginx
|
|
||||||
tags:
|
|
||||||
- nginx
|
|
||||||
- test
|
|
||||||
|
|||||||
@@ -43,9 +43,5 @@ RUN systemctl set-default multi-user.target
|
|||||||
RUN useradd -m -s /bin/bash ansible \
|
RUN useradd -m -s /bin/bash ansible \
|
||||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
# Переключаемся на пользователя ansible
|
# Команда по умолчанию (система запускается от root для systemd)
|
||||||
USER ansible
|
|
||||||
WORKDIR /home/ansible
|
|
||||||
|
|
||||||
# Команда по умолчанию
|
|
||||||
CMD ["/sbin/init"]
|
CMD ["/sbin/init"]
|
||||||
@@ -48,9 +48,5 @@ RUN systemctl set-default multi-user.target
|
|||||||
RUN useradd -m -s /bin/bash ansible \
|
RUN useradd -m -s /bin/bash ansible \
|
||||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
# Переключаемся на пользователя ansible
|
# Команда по умолчанию (система запускается от root для systemd)
|
||||||
USER ansible
|
|
||||||
WORKDIR /home/ansible
|
|
||||||
|
|
||||||
# Команда по умолчанию
|
|
||||||
CMD ["/sbin/init"]
|
CMD ["/sbin/init"]
|
||||||
|
|||||||
@@ -53,9 +53,5 @@ RUN systemctl set-default multi-user.target
|
|||||||
RUN useradd -m -s /bin/bash ansible \
|
RUN useradd -m -s /bin/bash ansible \
|
||||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
# Переключаемся на пользователя ansible
|
# Команда по умолчанию (система запускается от root для systemd)
|
||||||
USER ansible
|
|
||||||
WORKDIR /home/ansible
|
|
||||||
|
|
||||||
# Команда по умолчанию
|
|
||||||
CMD ["/sbin/init"]
|
CMD ["/sbin/init"]
|
||||||
|
|||||||
@@ -40,9 +40,5 @@ RUN systemctl set-default multi-user.target
|
|||||||
RUN useradd -m -s /bin/bash ansible \
|
RUN useradd -m -s /bin/bash ansible \
|
||||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
# Переключаемся на пользователя ansible
|
# Команда по умолчанию (система запускается от root для systemd)
|
||||||
USER ansible
|
|
||||||
WORKDIR /home/ansible
|
|
||||||
|
|
||||||
# Команда по умолчанию
|
|
||||||
CMD ["/sbin/init"]
|
CMD ["/sbin/init"]
|
||||||
|
|||||||
@@ -48,9 +48,5 @@ RUN systemctl set-default multi-user.target
|
|||||||
RUN useradd -m -s /bin/bash ansible \
|
RUN useradd -m -s /bin/bash ansible \
|
||||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
# Переключаемся на пользователя ansible
|
# Команда по умолчанию (система запускается от root для systemd)
|
||||||
USER ansible
|
|
||||||
WORKDIR /home/ansible
|
|
||||||
|
|
||||||
# Команда по умолчанию
|
|
||||||
CMD ["/sbin/init"]
|
CMD ["/sbin/init"]
|
||||||
|
|||||||
@@ -45,9 +45,5 @@ RUN systemctl set-default multi-user.target
|
|||||||
RUN useradd -m -s /bin/bash ansible \
|
RUN useradd -m -s /bin/bash ansible \
|
||||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
# Переключаемся на пользователя ansible
|
# Команда по умолчанию (система запускается от root для systemd)
|
||||||
USER ansible
|
|
||||||
WORKDIR /home/ansible
|
|
||||||
|
|
||||||
# Команда по умолчанию
|
|
||||||
CMD ["/sbin/init"]
|
CMD ["/sbin/init"]
|
||||||
|
|||||||
@@ -40,9 +40,5 @@ RUN systemctl set-default multi-user.target
|
|||||||
RUN useradd -m -s /bin/bash ansible \
|
RUN useradd -m -s /bin/bash ansible \
|
||||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
# Переключаемся на пользователя ansible
|
# Команда по умолчанию (система запускается от root для systemd)
|
||||||
USER ansible
|
|
||||||
WORKDIR /home/ansible
|
|
||||||
|
|
||||||
# Команда по умолчанию
|
|
||||||
CMD ["/sbin/init"]
|
CMD ["/sbin/init"]
|
||||||
|
|||||||
@@ -42,9 +42,5 @@ RUN systemctl set-default multi-user.target
|
|||||||
RUN useradd -m -s /bin/bash ansible \
|
RUN useradd -m -s /bin/bash ansible \
|
||||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
# Переключаемся на пользователя ansible
|
# Команда по умолчанию (система запускается от root для systemd)
|
||||||
USER ansible
|
|
||||||
WORKDIR /home/ansible
|
|
||||||
|
|
||||||
# Команда по умолчанию
|
|
||||||
CMD ["/sbin/init"]
|
CMD ["/sbin/init"]
|
||||||
|
|||||||
@@ -48,9 +48,5 @@ RUN systemctl set-default multi-user.target
|
|||||||
RUN useradd -m -s /bin/bash ansible \
|
RUN useradd -m -s /bin/bash ansible \
|
||||||
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
&& echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||||
|
|
||||||
# Переключаемся на пользователя ansible
|
# Команда по умолчанию (система запускается от root для systemd)
|
||||||
USER ansible
|
|
||||||
WORKDIR /home/ansible
|
|
||||||
|
|
||||||
# Команда по умолчанию
|
|
||||||
CMD ["/sbin/init"]
|
CMD ["/sbin/init"]
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
tmpfs: "{{ systemd_defaults.tmpfs | default([]) }}"
|
tmpfs: "{{ systemd_defaults.tmpfs | default([]) }}"
|
||||||
capabilities: "{{ systemd_defaults.capabilities | default([]) }}"
|
capabilities: "{{ systemd_defaults.capabilities | default([]) }}"
|
||||||
published_ports: "{{ item.publish | default([]) }}"
|
published_ports: "{{ item.publish | default([]) }}"
|
||||||
environment: "{{ item.env | default({}) }}"
|
env: "{{ item.env | default({}) }}"
|
||||||
state: started
|
state: started
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
loop: "{{ hosts | selectattr('type','undefined') | list }}"
|
loop: "{{ hosts | selectattr('type','undefined') | list }}"
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
networks:
|
networks:
|
||||||
- name: "{{ docker_network }}"
|
- name: "{{ docker_network }}"
|
||||||
privileged: true
|
privileged: true
|
||||||
environment:
|
env:
|
||||||
DOCKER_TLS_CERTDIR: ""
|
DOCKER_TLS_CERTDIR: ""
|
||||||
published_ports: "{{ item.publish | default([]) }}"
|
published_ports: "{{ item.publish | default([]) }}"
|
||||||
volumes: "{{ (item.volumes | default([])) + [item.name + '-docker:/var/lib/docker'] }}"
|
volumes: "{{ (item.volumes | default([])) + [item.name + '-docker:/var/lib/docker'] }}"
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
tmpfs: "{{ systemd_defaults.tmpfs | default([]) }}"
|
tmpfs: "{{ systemd_defaults.tmpfs | default([]) }}"
|
||||||
capabilities: "{{ systemd_defaults.capabilities | default([]) }}"
|
capabilities: "{{ systemd_defaults.capabilities | default([]) }}"
|
||||||
published_ports: "{{ item.publish | default([]) }}"
|
published_ports: "{{ item.publish | default([]) }}"
|
||||||
environment: "{{ item.env | default({}) }}"
|
env: "{{ item.env | default({}) }}"
|
||||||
state: started
|
state: started
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
loop: "{{ hosts | selectattr('type','defined') | selectattr('type','equalto','dood') | list }}"
|
loop: "{{ hosts | selectattr('type','defined') | selectattr('type','equalto','dood') | list }}"
|
||||||
|
|||||||
Reference in New Issue
Block a user