143 lines
4.3 KiB
YAML
143 lines
4.3 KiB
YAML
---
|
|
- name: Check if YT-DLP master deployment directory exists
|
|
stat:
|
|
path: "{{ airflow_master_dir }}"
|
|
register: master_dir_stat
|
|
|
|
- name: Ensure YT-DLP master deployment directory exists
|
|
file:
|
|
path: "{{ airflow_master_dir }}"
|
|
state: directory
|
|
owner: "{{ ssh_user }}"
|
|
group: "{{ deploy_group }}"
|
|
mode: '0755'
|
|
become: yes
|
|
when: not master_dir_stat.stat.exists
|
|
|
|
- name: Ensure YT-DLP master configs directory exists
|
|
file:
|
|
path: "{{ airflow_master_dir }}/configs"
|
|
state: directory
|
|
owner: "{{ ssh_user }}"
|
|
group: "{{ deploy_group }}"
|
|
mode: '0755'
|
|
become: yes
|
|
|
|
- name: "Log: Syncing YT-DLP service files"
|
|
debug:
|
|
msg: "Syncing YT-DLP service components (config generator, envoy/camoufox templates) to the master node."
|
|
|
|
- name: Sync YT-DLP config generator to master
|
|
synchronize:
|
|
src: "../airflow/generate_envoy_config.py"
|
|
dest: "{{ airflow_master_dir }}/"
|
|
archive: yes
|
|
rsync_path: "sudo rsync"
|
|
rsync_opts: "{{ rsync_default_opts }}"
|
|
|
|
- name: Sync YT-DLP config files to master
|
|
synchronize:
|
|
src: "../airflow/configs/{{ item }}"
|
|
dest: "{{ airflow_master_dir }}/configs/"
|
|
archive: yes
|
|
recursive: yes
|
|
rsync_path: "sudo rsync"
|
|
rsync_opts: "{{ rsync_default_opts }}"
|
|
loop:
|
|
- "docker-compose-ytdlp-ops.yaml.j2"
|
|
- "docker-compose.config-generate.yaml"
|
|
- "envoy.yaml.j2"
|
|
|
|
- name: Create .env file for YT-DLP master service
|
|
template:
|
|
src: "../../templates/.env.j2"
|
|
dest: "{{ airflow_master_dir }}/.env"
|
|
mode: "{{ file_permissions }}"
|
|
owner: "{{ ssh_user }}"
|
|
group: "{{ deploy_group }}"
|
|
become: yes
|
|
vars:
|
|
service_role: "management"
|
|
server_identity: "ytdlp-ops-service-mgmt"
|
|
|
|
- name: Create symlink for .env in configs directory for manual docker-compose commands
|
|
file:
|
|
src: "../.env"
|
|
dest: "{{ airflow_master_dir }}/configs/.env"
|
|
state: link
|
|
force: yes
|
|
owner: "{{ ssh_user }}"
|
|
group: "{{ deploy_group }}"
|
|
become: yes
|
|
|
|
- name: Template docker-compose file for YT-DLP master service
|
|
template:
|
|
src: "../airflow/configs/docker-compose-ytdlp-ops.yaml.j2"
|
|
dest: "{{ airflow_master_dir }}/configs/docker-compose-ytdlp-ops.yaml"
|
|
mode: "{{ file_permissions }}"
|
|
owner: "{{ ssh_user }}"
|
|
group: "{{ deploy_group }}"
|
|
become: yes
|
|
vars:
|
|
service_role: "management"
|
|
|
|
- name: "Log: Generating YT-DLP service configurations"
|
|
debug:
|
|
msg: "Running the configuration generator script inside a temporary Docker container. This creates docker-compose and envoy files based on .env variables."
|
|
|
|
- name: Ensure envoy.yaml is removed before generation
|
|
file:
|
|
path: "{{ airflow_master_dir }}/envoy.yaml"
|
|
state: absent
|
|
become: yes
|
|
|
|
- name: Create placeholder envoy.yaml to prevent Docker from creating a directory
|
|
file:
|
|
path: "{{ airflow_master_dir }}/envoy.yaml"
|
|
state: touch
|
|
owner: "{{ ssh_user }}"
|
|
group: "{{ deploy_group }}"
|
|
mode: '0664'
|
|
become: yes
|
|
|
|
- name: Generate YT-DLP service configurations
|
|
shell:
|
|
cmd: "docker compose --project-directory {{ airflow_master_dir }} -f configs/docker-compose.config-generate.yaml run --rm config-generator"
|
|
chdir: "{{ airflow_master_dir }}"
|
|
become: yes
|
|
become_user: "{{ ssh_user }}"
|
|
|
|
- name: Ensure correct permissions for build context after generation
|
|
file:
|
|
path: "{{ airflow_master_dir }}"
|
|
state: directory
|
|
owner: "{{ ssh_user }}"
|
|
group: "{{ deploy_group }}"
|
|
recurse: yes
|
|
become: yes
|
|
|
|
|
|
- name: Check for shadowsocks-rust proxy compose file
|
|
stat:
|
|
path: "/srv/shadowsocks-rust/docker-compose.proxies.yaml"
|
|
register: proxy_compose_file
|
|
|
|
- name: "Log: Starting YT-DLP management service"
|
|
debug:
|
|
msg: "Starting the YT-DLP management service on the master node. This service handles account and proxy management."
|
|
|
|
- name: Log in to Docker Hub to pull private images
|
|
community.docker.docker_login:
|
|
username: "{{ dockerhub_user }}"
|
|
password: "{{ vault_dockerhub_password }}"
|
|
when: vault_dockerhub_password is defined and vault_dockerhub_password | length > 0
|
|
|
|
- name: Start YT-DLP master service
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ airflow_master_dir }}"
|
|
files:
|
|
- "configs/docker-compose-ytdlp-ops.yaml"
|
|
state: present
|
|
remove_orphans: true
|
|
pull: "{{ 'never' if fast_deploy | default(false) else 'missing' }}"
|