You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ansible的machinectl提权插件在systemd-nspawn容器中执行任务失败求助

使用Ansible的machinectl提权插件在systemd-nspawn容器中执行任务失败求助

我最近尝试在systemd-nspawn容器里用Ansible结合machinectl命令实现自动化操作,找到了machinectl这个become插件,看起来正好匹配我的需求,但实际运行时总是出问题,和预期的不一样,想请教大家我哪里配置错了。

我的操作环境与配置细节

  • Ansible执行命令:
ansible-playbook playbooks/machinectl_test.yml -i inventory/imagecreators --user ansibleuser
  • Inventory文件内容:
[Fedora]
fedoraimagecreator
  • Playbook文件(machinectl_test.yml):
- name: create machinectl user
  hosts: "*"
  become: yes
  tasks:
    - name: create machinectl user
      ansible.builtin.user:
        name: test
      become: yes
      become_method: machinectl
      become_flags: "--machine fedora36custom"
  • 用户权限配置:

    • ansibleuser已添加到sudoers并配置免密全权限:
      ansibleuser ALL=(ALL) NOPASSWD:ALL
      
    • ansibleuser同时属于wheel组:
      root@fedoraimagecreator:~ # groups ansibleuser
      ansibleuser : ansibleuser wheel
      
  • Polkit规则配置:
    我按照Ansible文档添加了Polkit规则文件60-machinectl-fast-user-auth.rules,内容如下:

    polkit.addRule(function(action, subject) {
      if(action.id == "org.freedesktop.machine1.host-shell" && subject.isInGroup("wheel")) {
        return polkit.Result.AUTH_SELF_KEEP;
      }
    });
    

执行后的错误结果

运行playbook后得到的报错信息如下:

root@ansible:~/ansible # ansible-playbook playbooks/machinectl_test.yml -i inventory/imagecreators --user ansibleuser

PLAY [create machinectl user] ******************************************************************************************

TASK [Gathering Facts] *************************************************************************************************
ok: [fedoraimagecreator]

TASK [create machinectl user] ******************************************************************************************
fatal: [fedoraimagecreator]: FAILED! => {"changed": false, "module_stderr": "Shared connection to fedoraimagecreator closed.\r\n", "module_stdout": "\u001b[0;1;31mFailed to connect to bus: El `host' no está operativo\u001b[0m\r\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}

PLAY RECAP *************************************************************************************************************
fedoraimagecreator         : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

错误里的西班牙语提示翻译过来是“主机未运行”,但我确认容器fedora36custom是正常启动状态的,实在搞不清哪里出问题了,有没有大佬能指点一下?

备注:内容来源于stack exchange,提问作者namregzepol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 06:49:34