首页 > 解决方案 > 在 Ansible 中以异步模式运行服务

问题描述

我想使用 Ansible shell 模块但在异步模式下运行 Hashicorp Vault 服务。

vault server -config=config.hcl

否则它之后的任务不会执行并且终端会卡住。怎么做?

我看到 Ansible 中有一个异步模块。在这种情况下会起作用吗?但这需要我们指定服务将在后台运行的时间,但我想在后台无限执行它。请告诉我。

标签: asynchronousansiblehashicorp-vault

解决方案


这不是使用 Ansible 运行 Vault 的方式。您应该做的是使用 Ansible 在将运行 Vault 的主机上设置服务。如果您的主机正在运行 systemd,则此服务定义可能有效:

[Unit]
Description=a tool for managing secrets
Documentation=https://vaultproject.io/docs/
After=network.target
ConditionFileNotEmpty={{ vault_config_path }}

[Service]
User=vault
Group=vault
ExecStart=/usr/local/bin/vault server -config={{ vault_config_path }}
ExecReload=/usr/bin/kill --signal HUP $MAINPID
CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK
Capabilities=CAP_IPC_LOCK+ep
SecureBits=keep-caps
NoNewPrivileges=yes
KillSignal=SIGINT

[Install]
WantedBy=multi-user.target

vault_config_path保存路径的 Ansible 变量在哪里config.hcl- 您当然可以随心所欲地更改它。

安装此服务定义(到/etc/systemd/system/vault.service)后,您可以使用 Ansible 任务启动 Vault 服务,例如:

- name: Enable Vault service
  service:
    name: vault
    state: started
    enabled: yes

推荐阅读