--- - name: Ensure community.docker collection is installed ansible.builtin.package: name: python3-docker state: present become: yes - name: Create Loki directories file: path: "{{ item }}" state: directory mode: '0755' loop: - "{{ loki_base_dir }}" - "{{ loki_config_dir }}" - "{{ loki_data_dir }}" - "{{ promtail_config_dir }}" become: yes - name: Create ALL Loki internal directories with correct permissions file: path: "{{ item }}" state: directory mode: '0755' owner: "10001" group: "10001" loop: - "{{ loki_data_dir }}/chunks" - "{{ loki_data_dir }}/rules" - "{{ loki_data_dir }}/boltdb-shipper-compactor" - "{{ loki_data_dir }}/boltdb-shipper-cache" - "{{ loki_data_dir }}/cache" - "{{ loki_data_dir }}/index" - "{{ loki_data_dir }}/wal" - "{{ loki_data_dir }}/tmp" become: yes - name: Set recursive ownership for Loki data directory file: path: "{{ loki_data_dir }}" state: directory owner: "10001" group: "10001" recurse: yes become: yes - name: Deploy Loki configuration template: src: loki-config.yml.j2 dest: "{{ loki_config_dir }}/loki-config.yml" mode: '0644' notify: restart loki stack become: yes - name: Deploy Promtail configuration template: src: promtail-config.yml.j2 dest: "{{ promtail_config_dir }}/promtail-config.yml" mode: '0644' notify: restart loki stack become: yes - name: Deploy Loki stack docker-compose template: src: docker-compose.yml.j2 dest: "{{ loki_base_dir }}/docker-compose.yml" mode: '0644' notify: restart loki stack become: yes - name: Check if monitoring network exists community.docker.docker_network_info: name: monitoring register: monitoring_network become: yes - name: Create monitoring network if it doesn't exist community.docker.docker_network: name: monitoring driver: bridge state: present when: not monitoring_network.exists become: yes - name: Start Loki stack with docker_compose_v2 community.docker.docker_compose_v2: project_src: "{{ loki_base_dir }}" state: present become: yes - name: Wait for Loki to be ready wait_for: host: "{{ ansible_default_ipv4.address }}" port: "{{ loki_port }}" timeout: 60 state: started delay: 10 become: no - name: Show Loki status debug: msg: "Loki is running and responding on port {{ loki_port }}" when: loki_ready_check.status == 200 - name: Check Loki services status community.docker.docker_compose_v2: project_src: "{{ loki_base_dir }}" state: present register: loki_services_status become: yes - name: Display Loki services status debug: msg: "Loki stack services status: {{ loki_services_status }}"