ansible 与排除文件角色同步

ansible synchronize with excludes file role

我正在为部署 laravel5 项目创建一个 ansible 角色, 现在我用 "synchronize" (rsync)

我有 rsync 的排除文件,文件结构如下:

角色:"deploy-laravel5"角色:

 files
   excludes
 tasks
   main.yml

现在是main.yml中的任务:

- name: deploy laravel projects
  synchronize:
    src: "{{item.src}}"
    dest: "{{item.dest}}"
    rsync_opts:
      - "--exclude-from=excludes"
  with_items: "{{projects}}"

一些剧本:

---

- hosts: php
  gather_facts: no

  vars:
  projects:
    - {src: "../../twitter/", dest: "/web/boom/", envFile: "twitter.env"}


  roles:
    - deploy-laravel5

现在当我 运行 时,ansible 说找不到 "excludes" 文件

 msg: rsync: failed to open exclude file excludes: No such file or directory (2)

我尝试了很多不同的路径,但都没有,关于如何指向排除文件的任何想法?

在广泛浏览网页和文档后,我发现您无法在 "role" 中定义其他文件,仅用于模板化或复制。

但是你可以在剧本里面定义文件,所以现在文件结构是这样的:

 roles/
    deploy/  (NOT "deploy-laravel5" as before)

 playbooks/
     deploy-laravel5/
        excludes-file
        deploy-playbook.yml

剧本看起来很像:

---

- hosts: php
  gather_facts: no

  vars:
    projects:
      - {src: "../../twitter/",
         dest: "/web/boom/", 
         excludes-file: "path/to/excludes/file",
         envFile: "twitter.env"}


  roles:
    - deploy