尝试使用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
是否会有所作为。
答案 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
神奇了!