dvirlabs 8d55618ef9
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
test
2026-06-09 17:38:33 +03:00

78 lines
4.1 KiB
YAML

---
# =============================================================================
# APPLY PLAYBOOK
# Purpose: Deploy files from deploy-config.yml to target servers
# Usage: ansible-playbook apply.yml
# Note: Uses Ansible's register mechanism to capture deployed files
# =============================================================================
- name: Deploy files to servers
hosts: all
become: true
vars_files:
- ../deploy-config.yml
tasks:
# ─────────────────────────────────────────────────────────────────────
# TASK 1: Deploy each configured file/folder
# Loops through deploy_items and copies each to destination
# Registers which files were successfully deployed
# ─────────────────────────────────────────────────────────────────────
- name: Deploy configured files
copy:
src: "{{ playbook_dir }}/{{ '../../' + item.src }}"
dest: "{{ item.dest }}"
owner: "{{ item.owner | default('root') }}"
group: "{{ item.group | default('root') }}"
mode: "{{ item.mode | default('0644') }}"
backup: yes
register: deploy_results
loop: "{{ deploy_items }}"
loop_control:
loop_var: item
label: "{{ item.name }}"
# ─────────────────────────────────────────────────────────────────────
# TASK 2: Extract deployed file information
# Builds a list of deployed files from the copy task results
# ─────────────────────────────────────────────────────────────────────
- name: Extract deployed file information
set_fact:
deployed_file_list: |
[
{%- for result in deploy_results.results -%}
{
"name": "{{ result.item.name }}",
"src": "{{ result.item.src }}",
"dest": "{{ result.item.dest }}",
"changed": {{ result.changed | lower }}
}{{ "," if not loop.last else "" }}
{%- endfor -%}
]
# ─────────────────────────────────────────────────────────────────────
# TASK 3: Save deployed files list to a temporary file
# This file will be read by the GitOps status script
# ─────────────────────────────────────────────────────────────────────
- name: Save deployed files list
copy:
content: "{{ deployed_file_list }}"
dest: "/tmp/deployed_files_{{ inventory_hostname }}.json"
owner: root
group: root
mode: "0644"
# ─────────────────────────────────────────────────────────────────────
# TASK 4: Confirm deployment success
# Displays summary of deployed files
# ─────────────────────────────────────────────────────────────────────
- name: Display deployment summary
debug:
msg: "✅ Deployed {{ deploy_results.results | length }} file(s) to {{ inventory_hostname }}"
- name: Display deployed files
debug:
msg: " - {{ item.item.name }} → {{ item.item.dest }} ({{ 'changed' if item.changed else 'unchanged' }})"
loop: "{{ deploy_results.results }}"
loop_control:
label: "{{ item.item.name }}"