Swarm

- name: Avvia Traefik in Swarm
  hosts: vps
  tasks:
    - name: Avvia servizio Traefik
      community.docker.docker_swarm_service:
        name: traefik
        image: traefik:v2.10
        state: present
        mode: replicated
        replicas: 1
        networks:
          - name: front         
        mounts:
          - type: bind
            source: /var/run/docker.sock
            target: /var/run/docker.sock
            readonly: false
          - type: volume
            source: letsencrypt
            target: /letsencrypt
        args:
          - --api
          - --accesslog
          - --accesslog.format=json
          - --providers.docker.exposedbydefault=false
          - --providers.docker
          - --providers.docker.swarmmode
          - --entrypoints.https.address=:443
          - --certificatesresolvers.myresolver.acme.tlschallenge=true
          - --certificatesresolvers.myresolver.acme.email=labnoterepair@gmail.com
          - --certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json
        labels:
          traefik.enable: "true"
          traefik.docker.network: "front"
          traefik.http.routers.dashboard.entrypoints: https
          traefik.http.routers.dashboard.rule: "Host(`ocal.com
          traefik.http.routers.dashboard.service: "api@internal"
          traefik.http.routers.dashboard.tls.certresolver: "myresolver"
          traefik.http.services.dashboard.loadbalancer.server.port: "8080"
          traefik.http.routers.dashboard.middlewares: "admin-auth"
          traefik.http.middlewares.admin-auth.basicauth.users: "user:password
          app: "casa"
        restart_config:
          condition: any
          delay: 5s
          max_attempts: 3
        publish:
          - published_port: 443
            target_port: 443
            protocol: tcp
            mode: host