summaryrefslogtreecommitdiff
path: root/playbooks/roles/portainer
diff options
context:
space:
mode:
Diffstat (limited to 'playbooks/roles/portainer')
-rw-r--r--playbooks/roles/portainer/tasks/main.yml19
-rw-r--r--playbooks/roles/portainer/templates/stacks/docker-compose.yml46
-rw-r--r--playbooks/roles/portainer/templates/volumes/data/.gitkeep0
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