Providing Data Persisence on Prometheus Containers with NFS on Synology

Made some progress on one of my distraction projects over the past couple days. I’d been working on creating an Ansible role to deploy a Prometheus container with persistent data backed by NFS on my rPi cluster. Getting the NFS mount to work with Prometheus was a challenge. Relevant stanzas from the role’s main.yml:


      - name: "Creates named docker volume for prometheus persistent data" 
        docker_volume:
            volume_name: prometheus_persist
            state: present
            driver_options: 
                type: nfs
                o: "addr={{ nfs_server }},rw"
                device: ":{{ prometheus_nfs_path }}"
            
            
      - name: "Deploy prometheus container"
        docker_container:
            name: prometheus
            hostname: prometheus
            image: prom/prometheus
            restart_policy: always
            state: started
            ports: 9090:9090
            volumes:
              - "{{ prometheus_config_path }}:/etc/prometheus"
            mounts:
              - source: prometheus_persist
                target: /prometheus
                read_only: no
                type: volume        
            comparisons:        
                env: strict

However I was getting permission denied on /prometheus when deploying the container. A redditor pointed me in the direction of the solution. Since NFS is provided by my Synology, I can’t set no_root_squash, but by mapping all users to admin in the share’s squashing settings, I could allow the container to set permissions appropriately. Progress!

*****
Written on