84
- 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

4 回答 4

116

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

- name: Go to the folder and execute command
  command: chdir=/opt/tools/temp ls
于 2013-10-15T04:22:58.343 回答
33

chdir当我不得不恢复到 Ansible 1.9 时,当我试图弄清楚为什么“shell”不尊重我的条目时,这个问题就出现在了结果中。所以我将发布我的解决方案。

我有

- 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

只是想分享。

于 2016-04-28T20:37:55.193 回答
10

如果你需要一个登录控制台(比如 bundler),那么你必须像这样执行命令。

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

于 2014-06-02T12:53:25.143 回答
6

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

这是我刚刚设置的示例:

- name: Run a pipenv install
  environment:
    LANG: "en_GB.UTF-8"
  command: "pipenv install --dev"
  args:
    chdir: "{{ dir }}/proj"
于 2021-01-20T10:53:12.603 回答