diff --git a/roles/sync/files_sync/defaults/main.yml b/roles/sync/files_sync/defaults/main.yml new file mode 100644 index 00000000..06f6a818 --- /dev/null +++ b/roles/sync/files_sync/defaults/main.yml @@ -0,0 +1,14 @@ +--- +files_sync: + directories: + - source: + # Location of the files to sync from. + files_dir: "/home/{{ deploy_user }}/shared/{{ project_name }}_prod/assets/{{ project_name }}_prod_default_public_files" + # Host that can connect to the database. + host: "localhost" + # For "rolling builds", so we can compute the database name. + build_id: mybuildprod + target: + # Location of the files to sync to. + files_dir: "/home/{{ deploy_user }}/shared/{{ project_name }}_dev/assets/{{ project_name }}_dev_default_public_files" + build_id: mybuilddev diff --git a/roles/sync/files_sync/tasks/main.yml b/roles/sync/files_sync/tasks/main.yml new file mode 100644 index 00000000..47c3667a --- /dev/null +++ b/roles/sync/files_sync/tasks/main.yml @@ -0,0 +1,7 @@ +--- +- name: Sync files. + include_tasks: "sync.yml" + with_items: "{{ files_sync.directories }}" + loop_control: + loop_var: files + run_once: true diff --git a/roles/sync/files_sync/tasks/sync.yml b/roles/sync/files_sync/tasks/sync.yml new file mode 100644 index 00000000..cb34430b --- /dev/null +++ b/roles/sync/files_sync/tasks/sync.yml @@ -0,0 +1,22 @@ +--- +- name: Create a temporary directory for source files on localhost. + ansible.builtin.file: + path: "/tmp/{{ files.source.build_id }}" + state: directory + owner: "{{ deploy_user }}" + group: "{{ deploy_user }}" + delegate_to: localhost + run_once: true + +- name: Copy the source files onto the deploy server. + ansible.posix.synchronize: + mode: pull + src: "{{ files.source.files_dir }}" + dest: "/tmp/{{ files.source.build_id }}" + +- name: Copy the source files from the deploy server onto the destination server. + ansible.builtin.copy: + src: "/tmp/{{ files.source.build_id }}" + dest: "{{ files.target.files_dir }}" + owner: "{{ deploy_user }}" + group: "{{ deploy_user }}"