Ansible: Как изменить активный каталог в Ansible Playbook?
- name: Go to the folder
command: chdir=/opt/tools/temp
Когда я запускаю свою книгу, я получаю:
TASK: [Go to the folder] *****************************
failed: [host] => {"failed": true, "rc": 256}
msg: no command given
Любая помощь очень ценится.
Ответы
Ответ 1
В Ansible нет понятия текущего каталога. Вы можете указать текущий каталог для конкретной задачи, как это было в вашем плейбуке. Единственной недостающей частью была фактическая команда для выполнения. Попробуйте следующее:
- name: Go to the folder and execute command
command: chdir=/opt/tools/temp ls
Ответ 2
Если вам нужна консоль входа (например, для bundler), вам необходимо выполнить команду следующим образом.
command: bash -lc "cd /path/to/folder && bundle install"
Ответ 3
Этот вопрос был в результатах, когда я пытался выяснить, почему "shell" не уважал мои записи chdir
, когда мне приходилось возвращаться к Ansible 1.9. Поэтому я отправлю свое решение.
У меня был
- name: task name
shell:
cmd: touch foobar
creates: foobar
chdir: /usr/lib/foobar
Он работал с Ansible > 2, но для 1.9 мне пришлось его изменить.
- name: task name
shell: touch foobar
args:
creates: foobar
chdir: /usr/lib/foobar
Просто хотел поделиться.