From fadca7c322f269c52ed7487136b979ca37ed72be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=90=D0=BD=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=BF=D0=BE=D0=B2?= Date: Sat, 25 Oct 2025 17:29:41 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20Dockerfile=20=D0=B4=D0=BB=D1=8F=20sy?= =?UTF-8?q?stemd=20=D0=B8=20molecule=20=D0=B4=D0=BB=D1=8F=20=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Исправлены все 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 --- Makefile | 4 +++- deploy.yml | 9 --------- dockerfiles/alma/Dockerfile | 6 +----- dockerfiles/alt-linux/Dockerfile | 6 +----- dockerfiles/astra-linux/Dockerfile | 6 +----- dockerfiles/centos/Dockerfile | 6 +----- dockerfiles/debian/Dockerfile | 6 +----- dockerfiles/redos/Dockerfile | 6 +----- dockerfiles/rhel/Dockerfile | 6 +----- dockerfiles/rocky/Dockerfile | 6 +----- dockerfiles/ubuntu/Dockerfile | 6 +----- molecule/default/create.yml | 6 +++--- 12 files changed, 15 insertions(+), 58 deletions(-) diff --git a/Makefile b/Makefile index 333d94b..c086207 100644 --- a/Makefile +++ b/Makefile @@ -73,10 +73,12 @@ role: echo "🔧 Запуск ansible-controller контейнера..."; \ docker run --rm --name $(CONTAINER_NAME) -v "$(PWD):/workspace" -w /workspace \ -v /var/run/docker.sock:/var/run/docker.sock \ + -u root \ -e ANSIBLE_FORCE_COLOR=1 \ -e MOLECULE_PRESET=$$PRESET \ + -e MOLECULE_EPHEMERAL_DIRECTORY=/tmp/molecule_workspace \ $(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;; \ deploy) \ echo "🚀 Развертывание ролей на реальные серверы..."; \ diff --git a/deploy.yml b/deploy.yml index 46d94a2..423cbfb 100644 --- a/deploy.yml +++ b/deploy.yml @@ -11,12 +11,3 @@ tags: - ping - test - -- name: Test nginx role - hosts: all - become: true - roles: - - nginx - tags: - - nginx - - test diff --git a/dockerfiles/alma/Dockerfile b/dockerfiles/alma/Dockerfile index e8fb453..4bcd105 100644 --- a/dockerfiles/alma/Dockerfile +++ b/dockerfiles/alma/Dockerfile @@ -43,9 +43,5 @@ RUN systemctl set-default multi-user.target RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -# Переключаемся на пользователя ansible -USER ansible -WORKDIR /home/ansible - -# Команда по умолчанию +# Команда по умолчанию (система запускается от root для systemd) CMD ["/sbin/init"] \ No newline at end of file diff --git a/dockerfiles/alt-linux/Dockerfile b/dockerfiles/alt-linux/Dockerfile index 21b22cb..3d1b171 100644 --- a/dockerfiles/alt-linux/Dockerfile +++ b/dockerfiles/alt-linux/Dockerfile @@ -48,9 +48,5 @@ RUN systemctl set-default multi-user.target RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -# Переключаемся на пользователя ansible -USER ansible -WORKDIR /home/ansible - -# Команда по умолчанию +# Команда по умолчанию (система запускается от root для systemd) CMD ["/sbin/init"] diff --git a/dockerfiles/astra-linux/Dockerfile b/dockerfiles/astra-linux/Dockerfile index f8f21c1..aeaa198 100644 --- a/dockerfiles/astra-linux/Dockerfile +++ b/dockerfiles/astra-linux/Dockerfile @@ -53,9 +53,5 @@ RUN systemctl set-default multi-user.target RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -# Переключаемся на пользователя ansible -USER ansible -WORKDIR /home/ansible - -# Команда по умолчанию +# Команда по умолчанию (система запускается от root для systemd) CMD ["/sbin/init"] diff --git a/dockerfiles/centos/Dockerfile b/dockerfiles/centos/Dockerfile index 16c8672..b65487b 100644 --- a/dockerfiles/centos/Dockerfile +++ b/dockerfiles/centos/Dockerfile @@ -40,9 +40,5 @@ RUN systemctl set-default multi-user.target RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -# Переключаемся на пользователя ansible -USER ansible -WORKDIR /home/ansible - -# Команда по умолчанию +# Команда по умолчанию (система запускается от root для systemd) CMD ["/sbin/init"] diff --git a/dockerfiles/debian/Dockerfile b/dockerfiles/debian/Dockerfile index 52da404..9378f22 100644 --- a/dockerfiles/debian/Dockerfile +++ b/dockerfiles/debian/Dockerfile @@ -48,9 +48,5 @@ RUN systemctl set-default multi-user.target RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -# Переключаемся на пользователя ansible -USER ansible -WORKDIR /home/ansible - -# Команда по умолчанию +# Команда по умолчанию (система запускается от root для systemd) CMD ["/sbin/init"] diff --git a/dockerfiles/redos/Dockerfile b/dockerfiles/redos/Dockerfile index 02f447b..1be73b7 100644 --- a/dockerfiles/redos/Dockerfile +++ b/dockerfiles/redos/Dockerfile @@ -45,9 +45,5 @@ RUN systemctl set-default multi-user.target RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -# Переключаемся на пользователя ansible -USER ansible -WORKDIR /home/ansible - -# Команда по умолчанию +# Команда по умолчанию (система запускается от root для systemd) CMD ["/sbin/init"] diff --git a/dockerfiles/rhel/Dockerfile b/dockerfiles/rhel/Dockerfile index 22cbbc5..94bdea3 100644 --- a/dockerfiles/rhel/Dockerfile +++ b/dockerfiles/rhel/Dockerfile @@ -40,9 +40,5 @@ RUN systemctl set-default multi-user.target RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -# Переключаемся на пользователя ansible -USER ansible -WORKDIR /home/ansible - -# Команда по умолчанию +# Команда по умолчанию (система запускается от root для systemd) CMD ["/sbin/init"] diff --git a/dockerfiles/rocky/Dockerfile b/dockerfiles/rocky/Dockerfile index 970fbaa..53b1e41 100644 --- a/dockerfiles/rocky/Dockerfile +++ b/dockerfiles/rocky/Dockerfile @@ -42,9 +42,5 @@ RUN systemctl set-default multi-user.target RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -# Переключаемся на пользователя ansible -USER ansible -WORKDIR /home/ansible - -# Команда по умолчанию +# Команда по умолчанию (система запускается от root для systemd) CMD ["/sbin/init"] diff --git a/dockerfiles/ubuntu/Dockerfile b/dockerfiles/ubuntu/Dockerfile index 7261a20..50dabbd 100644 --- a/dockerfiles/ubuntu/Dockerfile +++ b/dockerfiles/ubuntu/Dockerfile @@ -48,9 +48,5 @@ RUN systemctl set-default multi-user.target RUN useradd -m -s /bin/bash ansible \ && echo "ansible ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -# Переключаемся на пользователя ansible -USER ansible -WORKDIR /home/ansible - -# Команда по умолчанию +# Команда по умолчанию (система запускается от root для systemd) CMD ["/sbin/init"] diff --git a/molecule/default/create.yml b/molecule/default/create.yml index 12ef899..204d6e5 100644 --- a/molecule/default/create.yml +++ b/molecule/default/create.yml @@ -71,7 +71,7 @@ tmpfs: "{{ systemd_defaults.tmpfs | default([]) }}" capabilities: "{{ systemd_defaults.capabilities | default([]) }}" published_ports: "{{ item.publish | default([]) }}" - environment: "{{ item.env | default({}) }}" + env: "{{ item.env | default({}) }}" state: started restart_policy: unless-stopped loop: "{{ hosts | selectattr('type','undefined') | list }}" @@ -86,7 +86,7 @@ networks: - name: "{{ docker_network }}" privileged: true - environment: + env: DOCKER_TLS_CERTDIR: "" published_ports: "{{ item.publish | default([]) }}" volumes: "{{ (item.volumes | default([])) + [item.name + '-docker:/var/lib/docker'] }}" @@ -108,7 +108,7 @@ tmpfs: "{{ systemd_defaults.tmpfs | default([]) }}" capabilities: "{{ systemd_defaults.capabilities | default([]) }}" published_ports: "{{ item.publish | default([]) }}" - environment: "{{ item.env | default({}) }}" + env: "{{ item.env | default({}) }}" state: started restart_policy: unless-stopped loop: "{{ hosts | selectattr('type','defined') | selectattr('type','equalto','dood') | list }}"