cassandra - Ansible 服务模块在服务实际运行时返回服务状态为已停止
问题描述
尝试使用 ansible 2.7 停止服务(dse datastax 企业)
- 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
是否会产生这样的影响。
解决方案
我对此的理解是因为我没有不受限制的 sudo 并且我没有能力在 /bin/sh 中执行,因此它失败了。
直接在服务器上运行时,相同的命令也有效,这是因为
Ansible 发送 Python 代码以在目标服务器上执行。由于 Ansible 正在运行 Python 代码并且通常不直接执行系统命令,因此您不能使用 sudo 限制系统命令并期望它们与 Ansible 一起使用。更多:https ://gist.github.com/nanobeep/3b3d614a709086ff832a
不确定每个人都有这种奢侈,但在我的情况下修改 sudoers 文件
从
TheGroupNameImPartOf ALL= ALL, !SU, !SHELLS
至
TheGroupNameImPartOf ALL= ALL
施了魔法!
推荐阅读
- python - 在 Python 中使用频率列表创建列表
- angular - Angular Material 对话框打开时导航
- android - 没有这样的属性:类的 ABI:org.gradle.api.tasks.OutputFile
- c++ - 将返回的迭代器强制转换为 const
- r - 快速对 R 数据框中的多列求和
- reactjs - React 无法读取未定义的 setState
- javascript - 从按钮调用 jquery 函数(不使用 onclick)
- asp.net-mvc - 使用 Azure Key Vault 中的列主密钥为 Always Encrypted 解密列
- mercurial - Mercurial:hg pull --bookmark 不添加其他书签?
- python - 如何在 webscraping 中使用 python 正则表达式提取值 fom 脚本?