78 lines
4.1 KiB
YAML
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 }}" |