Ansible:如何更改Ansible Playbook中的活动目录?

时间:2013-10-14 21:55:20

标签: ansible

- 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

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:76)

Ansible中没有当前目录的概念。您可以为特定任务指定当前目录,就像在剧本中一样。唯一缺少的部分是执行的实际命令。试试这个:

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

答案 1 :(得分:10)

这个问题出现在我试图弄清楚为什么'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

只是想分享。

答案 2 :(得分:8)

如果你需要一个登录控制台(比如打包机),那么你必须这样做。

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

答案 3 :(得分:2)

您可以在使用 chdir 使用 ansible 运行命令之前切换到目录。

这是我刚刚设置的示例:

- name: Run a pipenv install
  environment:
    LANG: "en_GB.UTF-8"
  command: "pipenv install --dev"
  args:
    chdir: "{{ dir }}/proj"