diff options
Diffstat (limited to 'playbooks/roles/portainer')
-rw-r--r-- | playbooks/roles/portainer/tasks/main.yml | 19 | ||||
-rw-r--r-- | playbooks/roles/portainer/templates/stacks/docker-compose.yml | 46 | ||||
-rw-r--r-- | playbooks/roles/portainer/templates/volumes/data/.gitkeep | 0 |
3 files changed, 65 insertions, 0 deletions
diff --git a/playbooks/roles/portainer/tasks/main.yml b/playbooks/roles/portainer/tasks/main.yml new file mode 100644 index 0000000..db9146d --- /dev/null +++ b/playbooks/roles/portainer/tasks/main.yml @@ -0,0 +1,19 @@ +--- + +- name: Build portainer compose dirs + ansible.builtin.file: + state: directory + dest: '{{ portainer_base }}/{{ item.path }}' + with_filetree: '../templates' + when: item.state == 'directory' + +- name: Build portainer compose files + ansible.builtin.template: + src: '{{ item.src }}' + dest: '{{ portainer_base }}/{{ item.path }}' + with_filetree: '../templates' + when: item.state == 'file' + +- name: Deploy Portainer stack + ansible.builtin.command: + cmd: "docker stack deploy -c {{ portainer_base }}/stacks/docker-compose.yml portainer" diff --git a/playbooks/roles/portainer/templates/stacks/docker-compose.yml b/playbooks/roles/portainer/templates/stacks/docker-compose.yml new file mode 100644 index 0000000..1a02cef --- /dev/null +++ b/playbooks/roles/portainer/templates/stacks/docker-compose.yml @@ -0,0 +1,46 @@ +version: '3.2' + +services: + agent: + image: portainer/agent:2.21.5 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /var/lib/docker/volumes:/var/lib/docker/volumes + networks: + - agent_network + deploy: + mode: global + placement: + constraints: [node.platform.os == linux] + + portainer: + image: portainer/portainer-ce:alpine + command: -H tcp://tasks.agent:9001 --tlsskipverify + ports: + - "8000:8000" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - {{ portainer_base }}/volumes/data:/data + networks: + - proxy + - agent_network + deploy: + mode: replicated + replicas: 1 + placement: + constraints: [node.role == manager] + labels: + - traefik.enable=true + - traefik.swarm.network=proxy + - traefik.http.routers.portainer.rule=Host(`{{ portainer_host }}`) + - traefik.http.routers.portainer.entrypoints=websecure + - traefik.http.routers.portainer.tls=true + - traefik.http.routers.portainer.tls.certResolver=letsencrypt + - traefik.http.services.portainer.loadbalancer.server.port=9000 + +networks: + proxy: + external: true + agent_network: + driver: overlay + attachable: true diff --git a/playbooks/roles/portainer/templates/volumes/data/.gitkeep b/playbooks/roles/portainer/templates/volumes/data/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/playbooks/roles/portainer/templates/volumes/data/.gitkeep |