- name: Install Broadcast hosts: Lothlorien tasks: - name: Create Broadcast bedroom speaker audio Docker volume directory become: true ansible.builtin.file: path: /data/broadcast-bedroom-speaker-audio state: directory - name: Create Broadcast bedroom speaker audio Docker volume community.docker.docker_volume: volume_name: broadcast-bedroom-speaker-audio driver: local driver_options: type: none o: bind device: /data/broadcast-bedroom-speaker-audio - name: Create temporary Docker build directory for broadcast-player ansible.builtin.tempfile: state: directory register: docker_build_dir - name: Copy Docker build directory ansible.builtin.copy: src: player/ dest: '{{docker_build_dir.path}}' mode: preserve - name: Build broadcast-player Docker image ansible.builtin.docker_image: build: path: '{{docker_build_dir.path}}' name: broadcast-player tag: latest source: build force_source: true state: present - name: Remove temporary Docker build directory become: true ansible.builtin.file: path: '{{docker_build_dir.path}}' state: absent - name: Read homelab config ansible.builtin.slurp: src: '{{ansible_user_dir}}/.homelab.json' register: homelab_config_file - name: Set homelab_config variable ansible.builtin.set_fact: homelab_config: '{{homelab_config_file.content|b64decode|from_json}}' - name: Insert into Postgres table service community.postgresql.postgresql_query: login_host: '{{homelab_config.database.host}}' login_user: '{{homelab_config.database.user}}' login_password: '{{homelab_config.database.password}}' db: '{{homelab_config.database.name}}' query: 'INSERT INTO service (name, host, source, config) VALUES (%s, %s, %s, %s) ON CONFLICT DO NOTHING;' positional_args: - '{{item.name}}' - '{{item.host}}' - '{{item.source}}' - '{{item.config}}' with_items: - {name: broadcast, host: '{{ansible_hostname}}', source: gitea/ashish/broadcast/master, config: null} - name: Insert into Postgres table service_port community.postgresql.postgresql_query: login_host: '{{homelab_config.database.host}}' login_user: '{{homelab_config.database.user}}' login_password: '{{homelab_config.database.password}}' db: '{{homelab_config.database.name}}' query: 'INSERT INTO service_port (service, port, domain, reverse_proxy, reverse_proxy_port) VALUES (%s, %s, %s, %s, %s) ON CONFLICT DO NOTHING;' positional_args: - '{{item.service}}' - '{{item.port}}' - '{{item.domain}}' - '{{item.reverse_proxy}}' - '{{item.reverse_proxy_port}}' with_items: - {service: broadcast, port: 10000, domain: null, reverse_proxy: null, reverse_proxy_port: null} - {service: broadcast, port: 10001, domain: null, reverse_proxy: null, reverse_proxy_port: null} - name: Insert into Postgres table service_data community.postgresql.postgresql_query: login_host: '{{homelab_config.database.host}}' login_user: '{{homelab_config.database.user}}' login_password: '{{homelab_config.database.password}}' db: '{{homelab_config.database.name}}' query: 'INSERT INTO service_data (service, data_name, storage_type, source) VALUES (%s, %s, %s, %s) ON CONFLICT DO NOTHING;' positional_args: - '{{item.service}}' - '{{item.data_name}}' - '{{item.storage_type}}' - '{{item.source}}' with_items: - {service: broadcast, data_name: bedroom_speaker_audio, storage_type: docker, source: broadcast-bedroom-speaker-audio}