community.vmware.vmware_vm_shell 模块 – 在 VMware 虚拟机操作系统中运行命令
注意
此模块是 community.vmware 集合 (版本 5.2.0) 的一部分。
如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用: ansible-galaxy collection install community.vmware。
要在 playbook 中使用它,请指定: community.vmware.vmware_vm_shell。
概要
- 该模块允许用户在客户机操作系统中运行常见的系统管理命令。 
参数
| 参数 | 注释 | 
|---|---|
| 托管虚拟机的群集。 如果设置,它将有助于加快虚拟机搜索速度。 | |
| 托管虚拟机的 vCenter 数据中心。 如果设置,它将有助于加快虚拟机搜索速度。 | |
| 目标文件夹,查找现有虚拟机或创建新虚拟机的绝对或相对路径。 该文件夹应包含数据中心。ESX 的数据中心是 ha-datacenter。 示例 folder: /ha-datacenter/vm folder: ha-datacenter/vm folder: /datacenter1/vm folder: datacenter1/vm folder: /datacenter1/vm/folder1 folder: datacenter1/vm/folder1 folder: /folder1/datacenter1/vm folder: folder1/datacenter1/vm folder: /folder1/datacenter1/vm/folder2 如果  | |
| vSphere vCenter 或 ESXi 服务器的主机名或 IP 地址。 如果任务中未指定该值,则将使用环境变量  | |
| vSphere vCenter 或 ESXi 服务器的密码。 如果任务中未指定该值,则将使用环境变量  | |
| 将接收所有 HTTPS 请求并转发它们的 HTTP 代理的端口。 如果任务中未指定该值,则将使用环境变量  | |
| vSphere vCenter 或 ESXi 服务器的用户名。 如果任务中未指定该值,则将使用环境变量  | |
| 要操作的虚拟机的名称。 | |
| 用于标识虚拟机的 VMware 标识方法。 选项 
 | |
| 用于登录虚拟机的密码。 | |
| 要启动的程序的绝对路径。 在 Linux 上,shell 通过 bash 执行。 | |
| 程序的参数。 必须转义到 shell 的字符也必须在提供的命令行上转义。 默认值:  | |
| 应用程序将从中运行的当前工作目录。 | |
| 以逗号分隔的环境变量列表,以访客操作系统表示法指定。 | |
| 用于登录虚拟机的用户名。 | |
| 如果设置为 选项 
 | 
备注
注意
- 即使有多个匹配项,也只使用与 vm_id 的第一个匹配项。 
- 所有模块都需要 API 写访问权限,因此在免费 ESXi 许可证上不受支持。 
- 所有变量和 VMware 对象名称都区分大小写。 
示例
- name: Run command inside a virtual machine
  community.vmware.vmware_vm_shell:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter }}"
    folder: "/{{datacenter}}/vm"
    vm_id: "{{ vm_name }}"
    vm_username: root
    vm_password: superSecret
    vm_shell: /bin/echo
    vm_shell_args: " $var >> myFile "
    vm_shell_env:
      - "PATH=/bin"
      - "VAR=test"
    vm_shell_cwd: "/tmp"
  delegate_to: localhost
  register: shell_command_output
- name: Run command inside a virtual machine with wait and timeout
  community.vmware.vmware_vm_shell:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter }}"
    folder: "/{{datacenter}}/vm"
    vm_id: NameOfVM
    vm_username: root
    vm_password: superSecret
    vm_shell: /bin/sleep
    vm_shell_args: 100
    wait_for_process: true
    timeout: 2000
  delegate_to: localhost
  register: shell_command_with_wait_timeout
- name: Change user password in the guest machine
  community.vmware.vmware_vm_shell:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter }}"
    folder: "/{{datacenter}}/vm"
    vm_id: "{{ vm_name }}"
    vm_username: sample
    vm_password: old_password
    vm_shell: "/bin/echo"
    vm_shell_args: "-e 'old_password\nnew_password\nnew_password' | passwd sample > /tmp/$$.txt 2>&1"
  delegate_to: localhost
- name: Change hostname of guest machine
  community.vmware.vmware_vm_shell:
    hostname: "{{ vcenter_hostname }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    datacenter: "{{ datacenter }}"
    folder: "/{{datacenter}}/vm"
    vm_id: "{{ vm_name }}"
    vm_username: testUser
    vm_password: SuperSecretPassword
    vm_shell: "/usr/bin/hostnamectl"
    vm_shell_args: "set-hostname new_hostname > /tmp/$$.txt 2>&1"
  delegate_to: localhost
返回值
常用的返回值已在此处记录,以下是此模块独有的字段
| 键 | 描述 | 
|---|---|
| 使用 wait_for_process 完成后关于新进程的元数据 返回:成功时 示例:  | 
