首页 > 解决方案 > 是否可以在 ArchLinux Docker 容器中运行 hostnamectl?

问题描述

我想为 Ansible 创建一个角色来配置我的网络。我也在尝试在 Arch Linux Docker 容器中测试我在分子中的角色。在我的角色中,我正在使用 Ansible 的主机名模块。但是当我运行我的分子测试时,我收到以下错误消息:“无法设置属性:无法设置静态主机名:设备或资源忙。”

我是 Docker 新手,所以我的配置中可能缺少一些功能。也许我的 Dockerfile 出了点问题。但也许根本不可能让 hostnamectl 命令在 Arch Linux Docker 容器中运行。我已经安装了 inetutils 包并运行了主机名命令,它有效。但至少 Ansibles 主机名模块不关心主机名命令。

我希望你能给我一些关于我的问题的信息!

这是我正在使用的文件:

网络/默认值/main.yml

---
network_hostname: archlinux

网络/分子/默认/converge.yml

---
- name: Converge
  hosts: all
  roles:
    - network

网络/分子/默认/molecule.yml

---
dependency:
  name: galaxy
driver:
  name: docker
lint: |
  set -e
  yamllint .
  ansible-lint
platforms:
  - name: instance
    image: marcstraube/docker-archlinux-base-ansible:latest
    pre_build_image: true
    privileged: true
    command: "/usr/lib/systemd/systemd"
    env:
      container: docker
    capabilities:
      - SYS_ADMIN
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
    tmpfs:
      - /run
      - /run/lock
      - /tmp
provisioner:
  name: ansible
  inventory:
    host_vars:
      instance:
        ansible_user: ansible
scenario:
  name: default
  create_sequence:
    - create
  check_sequence:
    - destroy
    - create
    - converge
    - check
    - destroy
  converge_sequence:
    - create
    - converge
  destroy_sequence:
    - destroy
  test_sequence:
    - lint
    - destroy
    - syntax
    - create
    - converge
    - idempotence
    - destroy
verifier:
  name: ansible

网络/任务/main.yml

---
- name: Set hostname 
  become: true 
  hostname: 
    name: "{{ network_hostname }}"

谢谢你的帮助!

标签: dockeransiblearchlinux

解决方案


推荐阅读