首页 > 解决方案 > 如何在 Ansible 中使用 remote_src 复制多个文件?

问题描述

当我运行命令 remote_src: true 我得到错误 ERROR!'remote_src' 不是任务的有效属性 我想知道是否有更好的方法来编写代码或者这是一个错误

试图删除有问题的代码行,但是,文件存在于远程主机上,所以我无法将文件复制到正确的位置

- hosts: openvpn_server

  vars:
    file_vars:
     - { name: ca }
     - { name: server }

  tasks:

   - name: check if ca.crt and server.crt exists
     stat:
       path: /tmp/{{ item.name }}.crt
     with_items: "{{ file_vars }}"
     register: ensure_ca_crt_exists

   - name: copying server.crt and ca.crt
     become: true
     copy: src={{ item.src }} dest={{ item.dest }} 
     with_items:
      - { src: '/tmp/server.crt' , dest: '/etc/openvpn/server.crt' }
      - { src: '/tmp/ca.crt' , dest: '/etc/openvpn/ca.crt' } 
     remote_src: true


     when: ensure_ca_crt_exists.results

   - name: creating Diffie-Helman key to use during key exchange
     shell: ./easyrsa gen-dh
     args:
      chdir: ~/EasyRSA-v3.0.6/

   - name: Generating HMAC signature to strengthen servers TLS integrity
     shell: openvpn --genkey --secret ta.key

   - name: copying ta.key and dh.pem to /etc/openvpn
     become: true
     copy: src={{ item.src }} dest={{ item.dest }} 
     with_items:
       - { src: '/home/dc/EasyRSA-v3.0.6/ta.key' , dest: '/etc/openvpn/ta.key' }
       - { src: '/home/dc/EasyRSA-v3.0.6/dh.pem' , dest: '/etc/openvpn/dh.pem' }

我应该能够通过 remote_src 命令将文件从 tmp 文件夹复制到 /etc/openvpn 文件夹,为配置错误的寄存器道歉我对 ansible 还很陌生

标签: ansibleyaml

解决方案


错误!“remote_src”不是任务的有效属性

缩进是错误的

- name: copying server.crt and ca.crt
     become: true
     copy: src={{ item.src }} dest={{ item.dest }} 
     with_items:
      - { src: '/tmp/server.crt' , dest: '/etc/openvpn/server.crt' }
      - { src: '/tmp/ca.crt' , dest: '/etc/openvpn/ca.crt' } 
     remote_src: true

正确的

- name: copying server.crt and ca.crt
  copy:
    src: "{{ item.src }}"
    dest: "{{ item.dest }}"
    remote_src: true
  loop:
    - {src: '/tmp/server.crt', dest: '/etc/openvpn/server.crt'}
    - {src: '/tmp/ca.crt', dest: '/etc/openvpn/ca.crt'}
  become: true

推荐阅读