首页 > 解决方案 > 如何使用 ansible 将文件从 Jenkins Workspace 上传到远程 dest

问题描述

我需要使用 ansible 将 Docker-compose 文件从我的 Jenkins 工作区复制到远程机器。这就是我现在所拥有的

---
- hosts: [...].es

  tasks:
  - name: copy Docker Compose files
    copy:
      remote_src: ~/docker-compose.yml
      dest: ./opt/ydilo/ydilo-acalls/

  - name: Run container
    become: True
    shell:
      cmd: "docker-compose up"
      chdir: ./opt/ydilo/ydilo-acalls/

它正确连接到主机,因为 docker-compose up 命令已经完成。但我无法正确复制文件。我已将 remote_src 中的 ~ 更改为 - 但它并没有改变任何东西。

标签: dockerjenkinsansiblejenkins-pipeline

解决方案


在您的 ansible 游戏中,复制任务

  - name: copy Docker Compose files
    copy:
      remote_src: ~/docker-compose.yml
      dest: ./opt/ydilo/ydilo-acalls/

remote_src属性不正确remote_src根据 ansible docs here,应该是 yes 或 no,它会影响执行复制任务时的行为;但是,您需要添加定义要复制的文件路径的src属性。

应该是这样的(假设您在本地和远程主机上都提供了正确的路径)

  - name: copy Docker Compose files
    copy:
      src: ~/docker-compose.yml
      dest: ./opt/ydilo/ydilo-acalls/

推荐阅读