- 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
任何帮助深表感谢。
- 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
任何帮助深表感谢。
Ansible 中没有当前目录的概念。您可以为特定任务指定当前目录,就像您在剧本中所做的那样。唯一缺少的部分是要执行的实际命令。尝试这个:
- name: Go to the folder and execute command
command: chdir=/opt/tools/temp ls
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
只是想分享。
如果你需要一个登录控制台(比如 bundler),那么你必须像这样执行命令。
command: bash -lc "cd /path/to/folder && bundle install"
您可以在使用 ansible with 运行命令之前切换到目录chdir
。
这是我刚刚设置的示例:
- name: Run a pipenv install
environment:
LANG: "en_GB.UTF-8"
command: "pipenv install --dev"
args:
chdir: "{{ dir }}/proj"