这应该起作用,但不行并给出以下错误(下图)。
我已经在这里和这里阅读了几篇文章,但在这种情况下似乎没有一个好的答案。我真的希望我只是错过了一些愚蠢的东西,而且我已经呆了几个小时了,所以请不要介意我的蛇,但我需要发泄。
由于Ansible,2.3.0,不能像仅在远程主机上复制/移动/重命名文件那样简单,我的意思是谁愿意这样做?而且它也不能在地球仪上行动(*)(例如,当您不知道要执行哪些文件时),两步方法似乎是移动某些文件的唯一方法(我知道)远程主机)。但甚至没有可行。
migrate_rhel2centos.yml
---
- 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
复制具有标志远程_src
如果否,它将在Ointing/Master Machine时搜索SRC。
如果是,它将转到SRC的远程/目标计算机。默认值为
编辑:https://docs.ansible.com/ansible/latest/collections/collections/ansible/builtin/copy_module.html
现在确实支持递归复制。
如果仅在远程服务器上复制文件,则需要使用Ansible.builtin.copy模块使用key
remote_src: yes
dock的示例
- name: Copy a "sudoers" file on the remote machine for editing
ansible.builtin.copy:
src: /etc/sudoers
dest: /etc/sudoers.edit
remote_src: yes
validate: /usr/sbin/visudo -csf %s
name: copy files task
shell: cp source/path/file destination/path/file
这解决了我在远程主机上应对文件的问题。