59 lines
1.5 KiB
YAML
59 lines
1.5 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: 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
|