- 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
非常感谢任何帮助。
答案 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"