Служба Ansible Molecule Docker не запускается

У меня работает ansible playbook, однако, пытаясь протестировать его с помощью молекулы, я не могу запустить службу докеров.

Вот что у меня есть в molecule.yml

platforms:
- name: instance
  image: oraclelinux:7
  command: /usr/sbin/init
  tmpfs:
   - /run
   - /run/lock
   - /tmp
 capabilities:
   - SYS_ADMIN
 volumes:
   - /sys/fs/cgroup:/sys/fs/cgroup:ro
 port_bindings:
   2424: 2424,
   2480: 2480
 pre_build_image: true

Когда я запускаю свой ansible playbook, я использую следующую команду для создания контейнера докеров:

docker run -it --name=testing -d --rm --privileged --cap-add=SYS_ADMIN --tmpfs /run --tmpfs /run/lock --tmpfs /tmp -p 2424:2424 -p 2480:2480 -v /sys/fs/cgroup:/sys/fs/cgroup:ro  oraclelinux:7  /usr/sbin/init

Ошибка при тестировании с молекулой:

    TASK [docker-role : Start docker] ******************************************
    fatal: [instance]: FAILED! => {"changed": true, "cmd": "sudo systemctl start docker", 
"delta": "0:00:00.613116", "end": "2020-10-21 03:24:47.268335", "msg": "non-zero return code", 
"rc": 1, "start": "2020-10-21 03:24:46.655219", "stderr": "Job for docker.service failed because 
the control process exited with error code. See \"systemctl status docker.service\" and 
\"journalctl -xe\" for details.", "stderr_lines": ["Job for docker.service failed because the 
control process exited with error code. See \"systemctl status docker.service\" and \"journalctl 
-xe\" for details."], "stdout": "", "stdout_lines": []}

Как понять, в чем проблема с молекулярным тестом?

Обновлять:

    [root@instance /]# systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since Wed 2020-10-21 07:05:55 UTC; 2min 22s ago
     Docs: https://docs.docker.com
  Process: 17373 ExecStart=/usr/bin/dockerd -g /tmp (code=exited, status=1/FAILURE)
 Main PID: 17373 (code=exited, status=1/FAILURE)

Oct 21 07:05:55 instance systemd[1]: start request repeated too quickly for docker.service
Oct 21 07:05:55 instance systemd[1]: Failed to start Docker Application Container Engine.
Oct 21 07:05:55 instance systemd[1]: Unit docker.service entered failed state.
Oct 21 07:05:55 instance systemd[1]: docker.service failed.
Oct 21 07:06:13 instance systemd[1]: start request repeated too quickly for docker.service
Oct 21 07:06:13 instance systemd[1]: Failed to start Docker Application Container Engine.
Oct 21 07:06:13 instance systemd[1]: docker.service failed.
Oct 21 07:06:34 instance systemd[1]: start request repeated too quickly for docker.service
Oct 21 07:06:34 instance systemd[1]: Failed to start Docker Application Container Engine.
Oct 21 07:06:34 instance systemd[1]: docker.service failed.


[root@instance /]# docker info
Client:
 Debug Mode: false

Server:
ERROR: Cannot connect to the Docker daemon at 
unix:///var/run/docker.sock. Is the docker daemon running?

    # journalctl -xe
-- 
-- Unit docker.socket has finished shutting down.
Oct 21 07:09:13 instance systemd[1]: Stopping Docker Socket for the API.
-- Subject: Unit docker.socket has begun shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit docker.socket has begun shutting down.
Oct 21 07:09:13 instance systemd[1]: Starting Docker Socket for the API.
-- Subject: Unit docker.socket has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit docker.socket has begun starting up.
Oct 21 07:09:13 instance systemd[1]: Listening on Docker Socket for the API.
-- Subject: Unit docker.socket has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit docker.socket has finished starting up.
-- 
-- The start-up result is done.
Oct 21 07:09:13 instance systemd[1]: start request repeated too quickly for docker.service
Oct 21 07:09:13 instance systemd[1]: Failed to start Docker Application Container Engine.
-- Subject: Unit docker.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit docker.service has failed.

Насколько я понимаю, его нужно запускать в контейнере докеров, где был установлен докер, и его служба должна быть запущена.


person iDev    schedule 21.10.2020    source источник
comment
Сообщение об ошибке уже говорит, что делать. Проверьте systemctl status docker.service и journalctl -xe, чтобы получить подробную информацию. Если вы не можете понять проблему из этого, обновите свой пост и включите эту информацию, чтобы мы могли вам помочь.   -  person toydarian    schedule 21.10.2020
comment
Извините за вопрос типа 101, но я не вижу контейнер при запуске: docker container ls -a. Так что не уверен, как мне выполнить эти команды?   -  person iDev    schedule 21.10.2020
comment
Вам не нужен докер или какой-либо контейнер. То есть systemd сообщает вам, что не удалось запустить docker.service. Просто запустите их в оболочке.   -  person toydarian    schedule 21.10.2020
comment
тест молекулы уничтожает созданные экземпляры, повторно запуская молекулу сходятся и обновляет вывод вышеуказанных команд   -  person iDev    schedule 21.10.2020


Ответы (1)


Может быть, я не очень хорошо понимаю вопрос, но с молекулой вам не нужно запускать контейнер, молекула сделает это за вас.

Вы можете попробовать это:

molecule create # This would create the instance
molecule list # This would show you the molecule scenario status
molecule converge # This would run you molecule playbook that would run the role

На самом деле команда molecule test выполнит все эти шаги:

    --> Test matrix

└── default
    ├── lint
    ├── destroy
    ├── dependency
    ├── syntax
    ├── create
    ├── prepare
    ├── converge
    ├── idempotence
    ├── side_effect
    ├── verify
    └── destroy

Чтобы контейнер был доступен с примененной ролью, вам нужно выполнить команду converge.

После схождения вы можете попасть в контейнер и через молекулу:

molecule login --host instance
person Moises Barba Perez    schedule 01.02.2021