Ansible Playbook 错误:powershell shell 系列与 sudo 成为插件不兼容

Joh*_*nek 8 windows powershell ansible

我正在编写一个简单的剧本,最终能够启动/停止/重新启动 Windows 服务,但我遇到了一个问题:

fatal: [mspdbwn1w01]: FAILED! => {
"msg": "The powershell shell family is incompatible with the sudo become plugin"
}
Run Code Online (Sandbox Code Playgroud)

以下是剧本:

- name: Add Host
  hosts: localhost
  connection: local
  strategy: linear

  tasks:
  - name: Add Temp Host
    add_host:
      name: "{{ win_client }}"
      group: temp
  - name: Target Server
    connection: winrm
    hosts: temp

    tasks:
      - name: Stop a service
        win_service:
        name: "{{ service }}"
        state: stopped
Run Code Online (Sandbox Code Playgroud)

谷歌并没有提供太多帮助,我已经尝试了我能找到的一切,become*的每一个变体。

我不知道这是否重要,但由于我工作环境的性质,我有 2 个单独的用户登录 *nix 主机和 windows 主机。

任何帮助或指导将不胜感激。

sta*_*tor 5

您的系统似乎使用sudo默认的 come 方法,该方法与 PowerShell 不兼容。对于Windows(和PowerShell),您可以使用runas作为方法。添加:

become_method: runas
Run Code Online (Sandbox Code Playgroud)

到你的剧本或任务。您可以通过以下方式获取所有可用的成为方法的列表:

ansible-doc -t become -l
Run Code Online (Sandbox Code Playgroud)

例子:

become_method: runas
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令查看特定成为方法的文档:

ansible-doc -t become runas
Run Code Online (Sandbox Code Playgroud)

如果仍然出现错误,请注意错误消息,因为它很可能是不同的错误消息。例如,使用权限升级需要为此目的定义用户名和密码。