Files
learning-platform/infra/production/site/deploy-playbook.yml
RaymondVerhoef fa5dcaeb01
All checks were successful
On Push to Main / test (push) Successful in 30s
On Push to Main / publish (push) Successful in 59s
On Push to Main / deploy-dev (push) Successful in 1m36s
feat: add docker-compose configuration and ansible playbook for production deployment
2026-05-19 07:54:52 +02:00

65 lines
1.7 KiB
YAML

- name: Deploy Learning Platform with Ansible
hosts: all
become: yes
gather_facts: yes
vars:
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
tasks:
- name: Set destination directory
ansible.builtin.set_fact:
dest_dir: "/opt/learning-platform"
- name: Ensure dependencies are installed
ansible.builtin.package:
name:
- docker-ce
state: present
ignore_errors: yes
register: docker_valid
- name: Include geerlingguy.docker role conditionally
include_role:
name: geerlingguy.docker
when: docker_valid is failed
- name: Ensure target directory exists
ansible.builtin.file:
path: "{{ dest_dir }}"
state: directory
owner: root
group: root
mode: "0755"
- name: Copy compose.yml to destination
ansible.builtin.copy:
src: compose.yml
dest: "{{ dest_dir }}/compose.yml"
- name: Copy pb_migrations to destination
ansible.builtin.copy:
src: ../../../pb_migrations
dest: "{{ dest_dir }}/"
mode: "0755"
- name: Create .env file for secrets
ansible.builtin.copy:
dest: "{{ dest_dir }}/.env"
content: |
ANTHROPIC_API_KEY={{ anthropic_api_key | default('') }}
mode: '0600'
- name: Pull latest image
community.docker.docker_compose_v2:
project_src: "{{ dest_dir }}"
state: present
files: compose.yml
pull: always
- name: Start services with Docker Compose
community.docker.docker_compose_v2:
project_src: "{{ dest_dir }}"
state: present
files: compose.yml
recreate: always