ANSIBLE - задача оболочки возвращает ненулевой код возврата, но в противном случае работает в терминале - PullRequest
1 голос
/ 08 апреля 2020

У меня есть задача ansible:

  - name: Get vault's binary path
    shell: type -p vault
    register: vault_binary_path

возвращает

 TASK [update_vault : Get vault's binary path] **********************************************************************************************************************************************************************
fatal: [xxxxx]: FAILED! => {"changed": true, "cmd": "type -p vault", "delta": "0:00:00.003303", "end": "2020-04-08 11:37:19.636528", "msg": "non-zero return code", "rc": 1, "start": "2020-04-08 11:37:19.633225", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}

, но когда я запускаю его в оболочке, он возвращается просто отлично

[root@ip-xxxxx]# type -p vault
/usr/local/bin/vault

Я запускаю ansible как root с , становящимся: true . Все предыдущие шаги в порядке до этого. Любой совет приветствуется.

1 Ответ

1 голос
/ 08 апреля 2020

Определите обновление для вашего PATH в вашей игровой книге:

environment:
  PATH: "{{ ansible_env.PATH }}:/usr/local/bin"

... так, чтобы /usr/local/bin гарантированно было включено.

(Кроме того, во время записи bash -specifi c код type почти всегда предпочтительнее which, это не тот случай, так как ваш shell может быть /bin/sh, который не гарантирует поддержку каких-либо функций, которые не указаны в спецификации POSIX * 1016. * Рассмотрите возможность изменения на shell: command -v vault, который гарантированно будет работать как положено на всех POSIX-совместимых оболочках).

...