Где Ansible запустит команду, если каталог не указан? - PullRequest
0 голосов
/ 23 января 2020

Я столкнулся с проблемой, когда выполняю одни и те же задачи на 2 удаленных узлах, а каталоги, в которых выполняются эти команды, отличаются.

Если я запускаю pwd - Ansible на каждом удаленном хосте перед этой командой, они возвращают разные пути. Например /usr и /usr/src. Если я вхожу на удаленный хост вручную, я go до /usr/src для обоих (как указано в их файлах конфигурации).

Может кто-нибудь объяснить мне, почему это происходит? В какой каталог входит Ansible go, если вы запускаете команду без указания chdir?

1 Ответ

1 голос
/ 23 января 2020

Я ожидаю, что эта разница произойдет, потому что при входе в систему вручную у вас есть .bashrc, который cd находится в нужной папке на одном из этих двух хостов, когда Ansible не получает .bashrc файл.

По умолчанию s sh и, таким образом, Ansible регистрирует вас в папке $HOME пользователя, с которым вы определяете Ansible для подключения, который вы также можете найти в /etc/passwd

Другая причина, по которой я мог это увидеть, заключается в том, что вы используете одного пользователя для входа в узел, но затем становитесь другим.

inventory.yml

all:
  hosts:
    some.example.com:
      ansible_user: some_user

playbook.yml

---
- hosts: all
  tasks:

  - command: pwd # still you will be in /home/some_user
    become: yes
    become_user: some_other_user
...