#cassandra #ansible #datastax-enterprise
#cassandra #ansible #datastax-enterprise
Вопрос:
Попытка остановить службу (dse datastax enterprise) с помощью ansible 2.7
- 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
, для этой службы рекомендуется выполнять a, я не знаю, будет ли отсутствие sudo
иметь такое значение.
Комментарии:
1. Вы не сможете управлять системными службами, если вы не работаете как
root
. Попробуйте добавитьbecome: true
к этой задаче (или воспроизведению) и посмотреть, правильно ли она работает.
Ответ №1:
Я понимаю это так, поскольку у меня нет неограниченного sudo, и у меня нет возможности выполнить в /bin / sh, поэтому он терпит неудачу.
Та же команда работает при непосредственном запуске на сервере, и это потому, что
Ansible отправляет код Python для выполнения на целевых серверах. Поскольку Ansible запускает код Python и, как правило, не выполняет системные команды напрямую, вы не можете ограничивать системные команды с помощью sudo и ожидать, что они будут работать с Ansible. Подробнее: https://gist.github.com/nanobeep/3b3d614a709086ff832a
Не уверен, что у всех есть такая роскошь, но в моем случае изменение файла sudoers
От
TheGroupNameImPartOf ALL= ALL, !SU, !SHELLS
Для
TheGroupNameImPartOf ALL= ALL
Сотворил волшебство!