我有一个可用的 playbook ,它使用vmware_vm_shell module将网络配置命令推送到运行在VMware中的Linux VM.仅当我使用vm_username作为'root'时,这才起作用.我想使用不同的用户,而不是‘根’,并成为‘su’来运行网络配置CLI命令.请参考下面的工作手册:

  - name: Edit Network Interfaces for VM
    vmware_vm_shell:
        hostname: "{{ vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        validate_certs: "{{ vcenter_validate_certs }}"
        datacenter: "{{ vcenter_datacenter }}"
        folder: "{{ vcenter_destination_folder }}"
        vm_id: VM-Test
        vm_username: root
        vm_password: "{{ vm-password }}"
        vm_shell: "/bin/nmcli"
        vm_shell_args: "{{ item }}"
    with_items:
    - "con mod ens192 ipv4.address '{{ vmintip }}'"
    - "con mod ens192 ipv4.gateway '{{ intup }}'"
    - "con mod ens192 ipv4.dns '{{ dnsip }}'"
    - "con mod ens192 ipv4.method manual"
    - "con mod ens192 ipv6.method disabled"
    - "con up ens192"
    - "con mod 'Wired connection 1' ipv4.address '{{ vmmgip}}'"
    - "con mod 'Wired connection 1' ipv4.gateway '{{ mgup }}'"
    - "con mod 'Wired connection 1' ipv4.dns '{{ dnsip }}'"
    - "con mod 'Wired connection 1' ipv4.method manual"
    - "con mod 'Wired connection 1' ipv6.method disabled"
    - "con up 'Wired connection 1'"

当我使用不同的用户名时没有成功,它无法发出这些命令,因为我需要拥有根权限(我需要使用该不同的用户名变成su).将不同的用户与vmware_vm_shell模块一起使用时,有没有办法变成su?

推荐答案

将 comments 转化为答案:

如果允许用户在不使用额外密码的情况下执行这些sudo命令,您应该能够将vm_shell: "/bin/nmcli"替换为vm_shell: "/path/to/sudo"(对于我来说,它是/usr/bin/sudo,并在参数vm_shell_args: "/bin/nmcli {{ item }}"中添加network mangler.

Linux相关问答推荐

GO:当使用NewManager调用创建cgroup时,权限被拒绝

C++17:G++8.5版似乎无法正确生成无符号64位伪随机整数

在Zenity进度窗口上单击取消后如何停止bash脚本

在程序集x86_64中跳转后调用ret时出现分段故障

如何将参数传递给Bash函数

奇怪的 Bash 脚本行为

如何在脚本中使用sudo修改其他用户的crontab

如何添加Linux格式的时间输出

如何将一个变量的 2 行添加到另一个变量的特定行?

sed:用空格替换

中的换行符

如何从 2 个文件中获取内容并使用 shell 脚本将该内容附加到新文件中

tmux:挂起不加载,不响应任何选项命令

Bash 命令 :(){ :|:& };: 将产生进程导致内核死亡.你能解释一下语法吗?

如何 grep 精确的文字字符串(无正则表达式)

为 django 项目安装 memcached

使用 Bash 脚本查找文件中字符串的行号

限制程序在 Linux 中运行的时间

如何在 Linux 中查看日志(log)文件并在查看时应用自定义过滤器?

env和set(在 Mac OS X 或 Linux 上)有什么区别?

如何在我的终端中编辑文本文件