104 lines
3.2 KiB
YAML
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
|
|
|
|
===================================
|