diff options
author | Elizabeth Alexander Hunt <me@liz.coffee> | 2025-05-07 18:10:57 -0700 |
---|---|---|
committer | Elizabeth Alexander Hunt <me@liz.coffee> | 2025-05-07 18:10:57 -0700 |
commit | b8ffbfe27eae919750ef4d3facf02393d1004287 (patch) | |
tree | 78a22cffd1a387a1f482aac78a93fb951dcc81bb /tasks | |
parent | 59417f290463d3aabbf3ec2ab8e75703928db217 (diff) | |
download | infra-b8ffbfe27eae919750ef4d3facf02393d1004287.tar.gz infra-b8ffbfe27eae919750ef4d3facf02393d1004287.zip |
.git was corrupted on the machine i worked on these many commits. so here it is all at once :P
Diffstat (limited to 'tasks')
-rw-r--r-- | tasks/copy-rendered-templates-recursive.yml | 60 | ||||
-rw-r--r-- | tasks/manage-docker-swarm-service.yml | 2 |
2 files changed, 48 insertions, 14 deletions
diff --git a/tasks/copy-rendered-templates-recursive.yml b/tasks/copy-rendered-templates-recursive.yml index 0733493..2b83834 100644 --- a/tasks/copy-rendered-templates-recursive.yml +++ b/tasks/copy-rendered-templates-recursive.yml @@ -7,7 +7,7 @@ state: directory register: tempdir -- name: Ensure parent directories exist for rendered templates +- name: Ensure parent directories exist for all files delegate_to: localhost become: false ansible.builtin.file: @@ -17,36 +17,69 @@ with_filetree: "{{ render_dir }}" when: item.state == "file" -- name: Recursively render templates +- name: Check if each file is text or binary + delegate_to: localhost + become: false + ansible.builtin.command: + cmd: file --mime-type "{{ item.src }}" + register: file_type_check + changed_when: false + with_filetree: "{{ render_dir }}" + when: item.state == "file" + loop_control: + label: "{{ item.path }}" + +- name: Separate text and binary files + set_fact: + text_files: >- + {{ + file_type_check.results + | selectattr('stdout', 'defined') + | selectattr('stdout', 'search', '^.*: text/') + | map(attribute='item') + | list + }} + binary_files: >- + {{ + file_type_check.results + | selectattr('stdout', 'defined') + | rejectattr('stdout', 'search', '^.*: text/') + | map(attribute='item') + | list + }} + +- name: Render templates (text files only) delegate_to: localhost become: false ansible.builtin.template: src: "{{ item.src }}" dest: "{{ tempdir.path }}/{{ item.path }}" mode: "{{ mode | default('0755') }}" - with_filetree: "{{ render_dir }}" - when: item.state == "file" + loop: "{{ text_files }}" -- name: Sync rendered templates to remote host +- name: Copy binary files directly delegate_to: localhost become: false - ansible.builtin.synchronize: - src: "{{ tempdir.path }}/" - dest: "{{ tempdir.path }}/" + ansible.builtin.copy: + src: "{{ item.src }}" + dest: "{{ tempdir.path }}/{{ item.path }}" + mode: "{{ mode | default('0644') }}" + loop: "{{ binary_files }}" -- name: Remove local temporary directory +- name: Sync rendered and copied files to remote host delegate_to: localhost become: false - ansible.builtin.file: - path: "{{ tempdir.path }}" - state: absent + ansible.builtin.synchronize: + src: "{{ tempdir.path }}/" + dest: "{{ tempdir.path }}/" + recursive: true - name: Ensure destination exists ansible.builtin.file: path: "{{ destination_dir }}" state: directory -- name: Update remote files +- name: Copy files to final destination ansible.builtin.command: cmd: bash -c 'cp -r {{ tempdir.path }}/* {{ destination_dir }}/' @@ -61,3 +94,4 @@ ansible.builtin.file: path: "{{ tempdir.path }}" state: absent + diff --git a/tasks/manage-docker-swarm-service.yml b/tasks/manage-docker-swarm-service.yml index 5332a3f..3d01e1c 100644 --- a/tasks/manage-docker-swarm-service.yml +++ b/tasks/manage-docker-swarm-service.yml @@ -9,7 +9,7 @@ - name: "Deploy stack for {{ service_name }}" ansible.builtin.command: - cmd: "docker stack deploy --resolve-image changed --detach=false --compose-file {{ stack_file | default(service_destination_dir + '/stacks/docker-compose.yml') }} {{ service_name }}" + cmd: "docker stack deploy --with-registry-auth --prune --detach=false --resolve-image=always --compose-file {{ stack_file | default(service_destination_dir + '/stacks/docker-compose.yml') }} {{ service_name }}" register: stack_result changed_when: true failed_when: stack_result.rc != 0 |