--- - 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: 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: 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: Verify Loki is responding uri: url: "http://{{ ansible_default_ipv4.address }}:{{ loki_port }}/ready" status_code: 200 timeout: 15 register: loki_ready_check become: no retries: 3 delay: 10 - 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: {{ loki_services_status.services }}"