这应该可行,但不会,并给出以下错误(如下)。
我已经在stackoverflow here和here上阅读了几篇帖子,但在这种情况下似乎没有一个好的答案。我真的希望我只是缺少一些愚蠢的东西而且我已经在这里待了几个小时所以请不要介意我的嗤之以鼻,但我需要发泄。
既然ansible,2.3.0,只能在远程主机上复制/移动/重命名文件那么简单,我的意思是谁想要这样做?而且它也不能作用于globs(*)(比如当你不知道要处理什么文件时),两步法似乎是移动某些文件的唯一方法(仅限于远程主机)。但即使这样也行不通。
---
- hosts: RedHat
become: true
become_user: root
become_method: sudo
vars:
repo_dir: /etc/yum.repos.d
tasks:
- name: create directory
file: path=/etc/yum.repos.d/bak/ state=directory
- name: get repo files
shell: "ls {{ repo_dir }}/*.repo"
register: repo_list
- debug: var=repo_list.stdout_lines
- name: move repo files
command: "/bin/mv -f {{ item }} bak"
args:
chdir: "{{repo_dir}}"
with_items: repo_list.stdout_lines
#################################
TASK [get repo files]
**********************************************************************
changed: [myhost]
TASK [debug]
**********************************************************************
ok: [myhost] => {
"repo_list.stdout_lines": [
"/etc/yum.repos.d/centric.repo",
"/etc/yum.repos.d/redhat.repo",
"/etc/yum.repos.d/rhel-source.repo"
]
}
TASK [move repo files]
*******************************************************************
failed: [myhost] (item=repo_list.stdout_lines) => {"changed": true, "cmd": ["/bin/mv", "-f", "repo_list.stdout_lines", "bak"], "delta": "0:00:00.001945", "end": "2016-12-13 15:07:14.103823", "failed": true, "item": "repo_list.stdout_lines", "rc": 1, "start": "2016-12-13 15:07:14.101878", "stderr": "/bin/mv: cannot stat `repo_list.stdout_lines': No such file or directory", "stdout": "", "stdout_lines": [], "warnings": []}
to retry, use: --limit @/home/jimm/.ansible/migrate_rhel2centos.retry
PLAY RECAP
********************************
myhost : ok=5 changed=1 unreachable=0 failed=1
答案 0 :(得分:0)
name: copy files task
shell: cp source/path/file destination/path/file
这解决了我在远程主机上处理文件的问题。
答案 1 :(得分:0)
复制带有标志 remote_src
如果否,它将在始发/主计算机上搜索src。
如果是,它将转到src的远程/目标计算机。默认为否。
当前remote_src不支持递归复制。
https://docs.ansible.com/ansible/2.5/modules/copy_module.html
答案 2 :(得分:0)
您需要使用以下内容
with_items: "{{repo_list.stdout_lines}}"