当服务实际运行时,Ansible服务模块将服务状态返回为已停止

时间:2019-04-10 21:13:02

标签: cassandra ansible datastax-enterprise

尝试使用Ansible 2.7停止服务(DSE Datastax Enterprise)

   - name: Stop service dse, if started
 service:
  name: dse
  state: stopped

我认为ansible所说的是,我什么也没做,因为该服务已停止。详细输出的一部分:

ok: [myhostname.domain.com] => {
"changed": false,
"invocation": {
    "module_args": {
        "daemon_reload": false,
        "enabled": null,
        "force": null,
        "masked": null,
        "name": "dse",
        "no_block": false,
        "scope": null,
        "state": "stopped",
        "user": null
    }
},
"name": "dse",
"state": "stopped",

当我检查远程主机上的服务时,这就是我看到的

[user@remotehost ~]$ service dse status
dse is running

那么我在这里想念什么? 仅供参考,建议为此服务使用sudo service dse stop,但不知道缺少sudo是否会有所作为。

1 个答案:

答案 0 :(得分:0)

我对此的理解是因为我没有不受限制的sudo,并且我没有能力在/ bin / sh中执行,因此它失败了。

直接在服务器上运行时,同一命令有效,这是因为

Ansible发送要在目标服务器上执行的Python代码。由于Ansible正在运行Python代码并且通常不直接执行系统命令,因此您不能使用sudo限制系统命令,并且不能期望它们与Ansible一起使用。 更多:https://gist.github.com/nanobeep/3b3d614a709086ff832a

不确定每个人都喜欢这种方式,但就我而言,修改sudoers文件

来自

TheGroupNameImPartOf ALL= ALL, !SU, !SHELLS

TheGroupNameImPartOf ALL= ALL

神奇了!