Ansible副本或仅在远程主机上移动文件



这应该起作用,但不行并给出以下错误(下图)。

我已经在这里和这里阅读了几篇文章,但在这种情况下似乎没有一个好的答案。我真的希望我只是错过了一些愚蠢的东西,而且我已经呆了几个小时了,所以请不要介意我的蛇,但我需要发泄。

由于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 

这解决了我在远程主机上应对文件的问题。

最新更新