clustered-fucks/playbooks/deploy-matrix-ansible-controller.yml

104 lines
3.2 KiB
YAML

---
# Deploy Matrix Ansible Controller
#
# Usage:
# ansible-playbook playbooks/deploy-matrix-ansible-controller.yml
#
# After deployment:
# ssh replicant
# docker exec -it matrix-ansible-controller bash
# # Copy your vars.yml to data/inventory/host_vars/matrix.yourdomain.com/
- name: Deploy Matrix Ansible Controller
hosts: replicant
vars:
service_name: matrix-ansible-controller
service_dir: /home/maddox/docker/appdata/{{ service_name }}
compose_src: "{{ playbook_dir }}/../compose-files/replicant/{{ service_name }}"
tasks:
- name: Create service directory structure
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: '0755'
loop:
- "{{ service_dir }}"
- "{{ service_dir }}/data"
- "{{ service_dir }}/data/playbook"
- "{{ service_dir }}/data/inventory"
- "{{ service_dir }}/data/inventory/host_vars"
- "{{ service_dir }}/data/ansible-cache"
- name: Copy Dockerfile
ansible.builtin.copy:
src: "{{ compose_src }}/Dockerfile"
dest: "{{ service_dir }}/Dockerfile"
mode: '0644'
- name: Copy entrypoint script
ansible.builtin.copy:
src: "{{ compose_src }}/entrypoint.sh"
dest: "{{ service_dir }}/entrypoint.sh"
mode: '0755'
- name: Copy docker-compose.yml
ansible.builtin.copy:
src: "{{ compose_src }}/docker-compose.yml"
dest: "{{ service_dir }}/docker-compose.yml"
mode: '0644'
- name: Build Docker image
community.docker.docker_image:
name: matrix-ansible-controller
tag: latest
source: build
build:
path: "{{ service_dir }}"
pull: yes
state: present
force_source: yes
- name: Deploy container
community.docker.docker_compose_v2:
project_src: "{{ service_dir }}"
state: present
pull: always
- name: Display next steps
ansible.builtin.debug:
msg: |
✅ Matrix Ansible Controller deployed!
=== NEXT STEPS ===
1. Copy your Matrix inventory to the container:
ssh replicant
cd /home/maddox/docker/appdata/matrix-ansible-controller/data/inventory
# Create the structure:
mkdir -p host_vars/matrix.yourdomain.com
# Copy your vars.yml (from wherever it currently lives):
# Option A: From another machine via scp
# Option B: Create/paste manually
# Also create/copy the hosts file:
cat > hosts << 'HOSTS'
[matrix_servers]
matrix.yourdomain.com ansible_host=YOUR_MATRIX_IP ansible_ssh_user=root
HOSTS
2. Enter the container and test:
docker exec -it matrix-ansible-controller bash
ansible -i inventory/hosts all -m ping
3. Run Matrix updates:
just update # Update playbook + roles
just install-all # Deploy changes
===================================