Ansible 分子测试错误:无法重新加载 udev 规则:退出状态 1

问题描述

我正在尝试设置 Ansible 分子以测试不同操作系统上的角色。例如,此角色在执行使用 snap install core 安装的任务时失败:

https://github.com/ProfessorManhattan/Ansible-Role-Snapd

molecule.yml

---
dependency:
  name: galaxy
  options:
    role-file: requirements.yml
    requirements-file: requirements.yml
driver:
  name: docker
platforms:
  - name: Ubuntu-20.04
    image: professormanhattan/ansible-molecule-ubuntu2004
    command: /sbin/init
    tmpfs:
      - /run
      - /tmp
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    privileged: true
    pre_build_image: true
provisioner:
  name: ansible
  connection_options:
    ansible_connection: docker
    ansible_password: ansible
    ansible_ssh_user: ansible
  inventory:
    group_vars:
      all:
        molecule_test: true
  options:
    vvv: true
  playbooks:
    converge: converge.yml
verifier:
  name: ansible
scenario:
  create_sequence:
    - dependency
    - create
    - prepare
  check_sequence:
    - dependency
    - cleanup
    - destroy
    - create
    - prepare
    - converge
    - check
    - destroy
  converge_sequence:
    - dependency
    - create
    - prepare
    - converge
  destroy_sequence:
    - dependency
    - cleanup
    - destroy
  test_sequence:
    - lint
    - dependency
    - cleanup
    - destroy
    - Syntax
    - create
    - prepare
    - converge
    - idempotence
    - side_effect
    - verify
    - cleanup
    - destroy

install-Debian.yml

---
- name: Ensure snapd is installed
  apt:
    name: snapd
    state: present
    update_cache: true

- name: Ensure fuse filesystem is installed
  apt:
    name: fuse
    state: present

- name: Ensure snap is started and enabled on boot
  ansible.builtin.systemd:
    enabled: true
    name: snapd
    state: started

- name: Ensure snap core is installed # This task is failing
  community.general.snap:
    name: core
    state: present

我收到的错误是:

TASK [professormanhattan.snapd : Ensure fuse filesystem is installed] **********
ok: [Ubuntu-20.04]

TASK [professormanhattan.snapd : Ensure snap is started and enabled on boot] ***
changed: [Ubuntu-20.04]

TASK [professormanhattan.snapd : Ensure snap core is installed] ****************
fatal: [Ubuntu-20.04]: Failed! => {"changed": false,"channel": "stable","classic": false,"cmd": "sh -c \"/usr/bin/snap install core\"","msg": "Ooops! Snap installation Failed while executing 'sh -c \"/usr/bin/snap install core\"',please examine logs and error output for more details.","rc": 1,"stderr": "error: cannot perform the following tasks:\n- Setup snap \"core\" (10823) security profiles (cannot reload udev rules: exit status 1\nudev output:\nFailed to send reload request: No such file or directory\n)\n","stderr_lines": ["error: cannot perform the following tasks:","- Setup snap \"core\" (10823) security profiles (cannot reload udev rules: exit status 1","udev output:","Failed to send reload request: No such file or directory",")"],"stdout": "","stdout_lines": []}

我尝试测试的所有其他操作系统也是如此。这是我用来构建 Ubuntu 映像的 Dockerfile 的链接

Dockerfile

FROM ubuntu:20.04
LABEL maintainer="help@megabyte.space"

ENV container docker
ENV DEBIAN_FRONTEND noninteractive

# Source: https://github.com/ansible/molecule/issues/1104
RUN set -xe \
  && apt-get update \
  && apt-get install -y apt-utils \
  && apt-get upgrade -y \
  && apt-get install -y \
      build-essential \
      libyaml-dev \
      python3-apt \
      python3-dev \
      python3-pip \
      python3-setuptools \
      python3-yaml \
      software-properties-common \
      sudo \
      systemd \
      systemd-sysv \
  && apt-get clean \
  && pip3 install \
      ansible \
      ansible-lint \
      Flake8 \
      molecule \
      yamllint \
  && mkdir -p /etc/ansible \
  && echo "[local]\nlocalhost ansible_connection=local" > /etc/ansible/hosts \
  && groupadd -r ansible \
  && useradd -m -g ansible ansible \
  && usermod -aG sudo ansible \
  && sed -i "/^%sudo/s/ALL\$/nopASSWD:ALL/g" /etc/sudoers

VOLUME ["/sys/fs/cgroup","/tmp","/run"]

CMD ["/sbin/init"]

正在寻找一个geerlingguy。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...