community.windows.win_nssm 模块 – 使用 NSSM 安装服务

注意

此模块是 community.windows 集合 (版本 2.3.0) 的一部分。

如果您使用的是 ansible 软件包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.windows。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求

要在剧本中使用它,请指定:community.windows.win_nssm

概要

  • 使用 NSSM 包装器安装 Windows 服务。

  • NSSM 是一款不错的服务辅助工具。有关更多信息,请参阅 https://nssm.cc/

要求

以下要求是在执行此模块的主机上所需的。

参数

参数

注释

app_environment

字典

在 community.windows 1.2.0 中添加

将添加到服务应用程序环境的键值对。

app_rotate_bytes

整数

NSSM 不会旋转小于配置字节数的任何文件。

默认值: 104858

app_rotate_online

整数

如果设置为 1,nssm 可以在服务运行时旋转增长到配置的文件大小限制的文件。

选项

  • 0 ← (默认)

  • 1

app_stop_method_console

整数

发送 Control-C 后等待的时间。

app_stop_method_skip

整数

要禁用服务关闭方法,设置为一个或多个数字的总和

1 - 不要向控制台发送 Control-C。

2 - 不要向窗口发送 WM_CLOSE。

4 - 不要向线程发送 WM_QUIT。

8 - 不要调用 TerminateProcess()。

选项

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

application

路径

要作为服务运行的应用程序二进制文件

当 *state* 为 presentstartedstoppedrestarted 时必需。

arguments

别名:app_parameters_free_form

字符串

启动应用程序时要传递的参数。

这可以是简单的字符串或列表。

dependencies

列表 / 元素=字符串

必须启动以触发启动的服务依赖项,用逗号分隔。

description

字符串

要为服务设置的描述。

display_name

字符串

要为服务设置的显示名称。

executable

路径

NSSM 实用程序的位置(如果它不在您的 PATH 中)。

默认值: "nssm.exe"

name

字符串 / 必需

要操作的服务的名称。

password

字符串

用于服务启动的密码。

对于众所周知的服务帐户和组托管服务帐户,不需要此项。

start_mode

字符串

如果选择 auto,服务将在启动时启动。

delayed 表示启动后延迟但自动启动。

manual 表示服务仅在其他服务需要它时才启动。

disabled 表示服务将保持关闭状态,无论是否需要。

选项

  • "auto" ← (默认)

  • "delayed"

  • “已禁用”

  • “手动”

状态

字符串

系统上服务的狀態。

选项

  • “不存在”

  • "present" ← (默认)

  • “已启动”

  • “已停止”

  • “已重启”

stderr_file

路径

接收错误输出的路径。

stdout_file

路径

接收输出的路径。

用户名

别名:user

字符串

用于服务启动的用户。

组托管的服务帐户必须以$结尾。

1.8.0之前,此参数只是user

工作目录

别名:app_directory, chdir

路径

运行服务可执行文件的目录(默认为包含应用程序二进制文件的目录)

注释

注意

  • state=present时,服务创建后将不会启动。

  • 服务创建后,可以使用ansible.windows.win_service模块启动它或配置一些附加属性,例如其启动类型、依赖项、服务帐户等。

另见

另见

ansible.windows.win_service

管理和查询Windows服务。

示例

- name: Install the foo service
  community.windows.win_nssm:
    name: foo
    application: C:\windows\foo.exe

# This will yield the following command: C:\windows\foo.exe bar "true"
- name: Install the Consul service with a list of parameters
  community.windows.win_nssm:
    name: Consul
    application: C:\consul\consul.exe
    arguments:
      - agent
      - -config-dir=C:\consul\config

# This is strictly equivalent to the previous example
- name: Install the Consul service with an arbitrary string of parameters
  community.windows.win_nssm:
    name: Consul
    application: C:\consul\consul.exe
    arguments: agent -config-dir=C:\consul\config


# Install the foo service, and then configure and start it with win_service
- name: Install the foo service, redirecting stdout and stderr to the same file
  community.windows.win_nssm:
    name: foo
    application: C:\windows\foo.exe
    stdout_file: C:\windows\foo.log
    stderr_file: C:\windows\foo.log

- name: Configure and start the foo service using win_service
  ansible.windows.win_service:
    name: foo
    dependencies: [adf, tcpip]
    username: foouser
    password: secret
    start_mode: manual
    state: started

- name: Install a script based service and define custom environment variables
  community.windows.win_nssm:
    name: <ServiceName>
    application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    arguments:
      - <path-to-script>
      - <script arg>
    app_environment:
      AUTH_TOKEN: <token value>
      SERVER_URL: https://example.com
      PATH: "<path-prepends>;{{ ansible_env.PATH }};<path-appends>"

- name: Remove the foo service
  community.windows.win_nssm:
    name: foo
    state: absent

作者

  • Adam Keech (@smadam813)

  • George Frank (@georgefrank)

  • Hans-Joachim Kliemeck (@h0nIg)

  • Michael Wild (@themiwi)

  • Kevin Subileau (@ksubileau)

  • Shachaf Goldstein (@Shachaf92)