# Сборка контейнера с systemd для удобного тестирования ролей Ansible через Molecule # Используем готовый образ с Ansible (более старый, но стабильный) FROM geerlingguy/docker-ubuntu2004-ansible:latest # Устанавливаем переменные окружения ENV DEBIAN_FRONTEND=noninteractive ENV container=docker # Устанавливаем дополнительные пакеты для тестирования RUN apt-get update && \ apt-get install -y --no-install-recommends \ systemd \ systemd-sysv \ rsync \ git \ ssh \ gcc \ libffi-dev \ libssl-dev \ make \ sudo \ sshpass \ openssh-client \ nano \ less \ ca-certificates \ curl \ gnupg \ lsb-release \ && rm -rf /var/lib/apt/lists/* # Устанавливаем Python пакеты для Ansible с обновлением зависимостей RUN pip install --upgrade pip && \ pip install --upgrade \ requests \ PyYAML \ ansible-core \ && pip install \ ansible \ "ansible-vault<4.0.0" \ molecule \ molecule-docker \ ansible-lint \ yamllint \ docker \ && rm -rf /root/.cache/pip # Устанавливаем docker-compose RUN curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \ chmod +x /usr/local/bin/docker-compose # Указываем, что контейнер использует systemd в качестве init-системы ENV container=docker STOPSIGNAL SIGRTMIN+3 # Создаем необходимые директории для systemd VOLUME [ "/sys/fs/cgroup" ] # Запускаем systemd при старте контейнера CMD ["/sbin/init"]