2013-10-14 2 views
36
- name: Go to the folder 
    command: chdir=/opt/tools/temp 

Когда я запускаю мой сборник пьес, я получаю:Ansible: Как изменить активный каталог в Ansible Playbook?

TASK: [Go to the folder] ***************************** 
failed: [host] => {"failed": true, "rc": 256} 
msg: no command given 

Любая помощь очень ценится.

+0

Что именно вы пытаетесь сделать с изменением активного каталога? – Mxx

+0

также chdir является атрибутом команды. Вы можете выполнить команду, а также объявить команду chdir ': ls chdir =/path/to/directory' – Robert

+0

Это не имеет никакого отношения к Microsoft ActiveDirectory, не так ли? – ThorSummoner

ответ

52

В Ansible нет концепции текущего каталога. Вы можете указать текущий каталог для конкретной задачи, как это было в вашем плейбуке. Единственной недостающей частью была фактическая команда для выполнения. Попробуйте следующее:

- name: Go to the folder and execute command 
    command: chdir=/opt/tools/temp ls 
+0

Хорошо иметь возможность запускать все игры в определенном каталоге – podarok

7

Если вам нужна консоль для входа в систему (например, для связки), вам необходимо выполнить команду следующим образом.

command: bash -lc "cd /path/to/folder && bundle install"

+0

Это также команда для использования с композитором (если модуль-композитор не достает вас): 'command: bash -lc 'cd/var/www/&&/usr/local/bin/composer install "' – deviavir

5

Этот вопрос был в результатах, когда я пытался понять, почему «оболочка» не уважая мои chdir записей, когда я должен был вернуться к анзиблю 1.9. Поэтому я отправлю свое решение.

Я имел

- name: task name 
    shell: 
    cmd: touch foobar 
    creates: foobar 
    chdir: /usr/lib/foobar 

Он работал с анзиблем> 2, но 1.9 мне пришлось изменить его.

- name: task name 
    shell: touch foobar 
    args: 
    creates: foobar 
    chdir: /usr/lib/foobar 

Просто хотел поделиться.

Смежные вопросы