【发布时间】:2019-03-13 01:44:29
【问题描述】:
我有一个包含以下任务的剧本,必须将 2 Gb 文件从本地服务器复制到远程服务器并提取文件:
- name: Copy archived file to target server and extract
unarchive:
src: /path_to_source_dir/file.tar.gz
dest: /path_to_dest_dir
此任务失败,因为 ansible 将文件复制到目标服务器上的 /home 挂载点并且那里没有足够的空间:
sftp> put /path_to_source_dir/file.tar.gz /home/my_user_name/.ansible/tmp/ansible-tmp-1551129648.53-14181330218552/source
scp: /home/my_user_name/.ansible/tmp/ansible-tmp-1551129648.53-14181330218552/source: No space left on device
之所以这样,是因为ansible.cfg有一个默认参数:
remote_tmp = ~/.ansible/tmp
如何从剧本中覆盖此参数(如果可能)并使ansible将文件复制到任务中指定的相同目标目录?所以它会是这样的:
remote_tmp = /path_to_dest_dir/.ansible/tmp
对于不同的目标服务器,目标路径每次都会不同!
清洁 /home 不是我的选择。 不幸的是,答案here 对我来说不是很清楚。
【问题讨论】:
-
您可以在清单文件或 group_vars 目录中使用
ansible_remote_tmp为特定主机或主机组 (more info) 指定remote_tmp。
标签: ansible ansible-2.x