Ansible сервисный модуль возвращает статус сервиса как остановленный, когда сервис фактически запущен - PullRequest
0 голосов
/ 11 апреля 2019

Попытка остановить службу (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 для этой услуги, я не знаю, будет ли отсутствие sudo иметь такую ​​разницу.

1 Ответ

0 голосов
/ 21 мая 2019

Мое понимание этого таково, что у меня нет неограниченного sudo, и у меня нет возможности выполнять в / bin / sh, таким образом, это терпит неудачу.

Эта же команда работает при непосредственном запуске на сервере, потому что

Ansible отправляет код Python для выполнения на целевых серверах. Поскольку Ansible выполняет код Python и, как правило, не выполняет системные команды напрямую, вы не можете ограничивать системные команды с помощью sudo и ожидать, что они будут работать с Ansible. Подробнее: https://gist.github.com/nanobeep/3b3d614a709086ff832a

Не уверен, что у всех есть такая роскошь, но в моем случае изменение файла sudoers

от

TheGroupNameImPartOf ALL= ALL, !SU, !SHELLS

до

TheGroupNameImPartOf ALL= ALL

сотворил магию!

...