Last push from mac os
This commit is contained in:
186
dockerapps.yml
186
dockerapps.yml
@@ -1,77 +1,145 @@
|
|||||||
---
|
---
|
||||||
- name: Docker-Compose playbook
|
- name: Docker-Compose playbook
|
||||||
hosts: controller
|
hosts: monitoring
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
# #
|
# #
|
||||||
# # @author Stéphane Gratias (2021).
|
# # @author Stéphane Gratias (2021).
|
||||||
#
|
#
|
||||||
|
|
||||||
roles:
|
pre_tasks:
|
||||||
# manage docker-compose@dev systemd unit file
|
- name: Create node_exporter cert dir
|
||||||
- { role: tumf.systemd-service, tags: docker-compose,
|
|
||||||
when: ansible_service_mgr == 'systemd',
|
|
||||||
vars: {
|
|
||||||
# do not restart service via systemd
|
|
||||||
ansible_unit_test: true,
|
|
||||||
systemd_service_name: "docker-compose@lab",
|
|
||||||
# [Unit]
|
|
||||||
systemd_service_Unit_Description: "%i service with docker compose",
|
|
||||||
systemd_service_Service_Type: "simple",
|
|
||||||
systemd_service_Unit_After: [ "docker.service" ],
|
|
||||||
systemd_service_Unit_Requires: [ "docker.service" ],
|
|
||||||
# [Service]
|
|
||||||
systemd_service_Service_WorkingDirectory: "{{ dockerapp_tree_base_dir | last }}/{{ dockerapp_service }}",
|
|
||||||
# Remove old containers, images and volumes
|
|
||||||
systemd_service_Service_ExecStartPre: [
|
|
||||||
"{{ '/usr/local/bin' if docker_install_compose else '/usr/bin' }}/docker-compose down -v",
|
|
||||||
"{{ '/usr/local/bin' if docker_install_compose else '/usr/bin' }}/docker-compose rm -fv",
|
|
||||||
],
|
|
||||||
# Compose up
|
|
||||||
systemd_service_Service_ExecStart: "{{ '/usr/local/bin' if docker_install_compose else '/usr/bin' }}/docker-compose up",
|
|
||||||
# Compose down, remove containers and volumes
|
|
||||||
systemd_service_Service_ExecStop: "{{ '/usr/local/bin' if docker_install_compose else '/usr/bin' }}/docker-compose down -v",
|
|
||||||
systemd_service_Service_Restart: "always",
|
|
||||||
# [Install]
|
|
||||||
systemd_service_Install_WantedBy: "multi-user.target"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
- name: create docker app base dir
|
|
||||||
file:
|
file:
|
||||||
path: "{{ item }}"
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: 0755
|
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
with_items:
|
loop:
|
||||||
- "{{ dockerapp_tree_base_dir | last }}"
|
- /etc/node_exporter
|
||||||
- "{{ dockerapp_tree_base_dir | last }}/{{ dockerapp_service }}"
|
|
||||||
- "{{ dockerapp_tree_base_dir | last }}/{{ dockerapp_service }}/logs"
|
|
||||||
- "{{ dockerapp_tree_base_dir | last }}/{{ dockerapp_service }}/logs/homeserver"
|
|
||||||
tags:
|
|
||||||
- docker-compose
|
|
||||||
- bootstrap_dockerapp_create_base_dir
|
|
||||||
|
|
||||||
- name: create docker volumes tree for containers
|
- name: Generate an OpenSSL private key with the default values (4096 bits, RSA)
|
||||||
file:
|
community.crypto.openssl_privatekey:
|
||||||
path: "{{ dockerapp_tree_base_dir | last }}/{{ dockerapp_service }}/{{ item | default('') }}"
|
path: /etc/node_exporter/tls.key
|
||||||
state: directory
|
mode: 0644
|
||||||
mode: 0755
|
|
||||||
with_items: "{{ dockerapp_tree_volumes | default([]) }}"
|
|
||||||
tags:
|
|
||||||
- docker-compose
|
|
||||||
- bootstrap_dockerapp_create_app_dir
|
|
||||||
|
|
||||||
- name: create the main docker-compose file (docker-compose.yml)
|
# /etc/node_exporter# chmod 644 tls.key
|
||||||
template:
|
|
||||||
src: "../templates/docker-compose.yml.j2"
|
- name: Generate an OpenSSL Certificate Signing Request
|
||||||
dest: "{{ dockerapp_tree_base_dir | last }}/{{ dockerapp_service }}/docker-compose-test.yml"
|
community.crypto.openssl_csr:
|
||||||
mode: 0600
|
path: /etc/node_exporter/tls.csr
|
||||||
tags:
|
privatekey_path: /etc/node_exporter/tls.key
|
||||||
- docker-compose
|
common_name: "{{ inventory_hostname }}.netbird.cloud"
|
||||||
- bootstrap_dockerapp_configure_docker_compose
|
|
||||||
|
- name: Generate a Self Signed OpenSSL certificate
|
||||||
|
community.crypto.x509_certificate:
|
||||||
|
path: /etc/node_exporter/tls.cert
|
||||||
|
privatekey_path: /etc/node_exporter/tls.key
|
||||||
|
csr_path: /etc/node_exporter/tls.csr
|
||||||
|
provider: selfsigned
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- { role: geerlingguy.pip, tags: pip }
|
||||||
|
- { role: geerlingguy.docker, tags: docker }
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: Ensure Docker is installed and running
|
||||||
|
service:
|
||||||
|
name: docker
|
||||||
|
state: started
|
||||||
|
enabled: yes
|
||||||
|
|
||||||
|
- name: Create Docker network for Traefik (optional, adjust if needed)
|
||||||
|
docker_network:
|
||||||
|
name: traefik_network
|
||||||
|
|
||||||
|
- name: Deploy Traefik container
|
||||||
|
docker_container:
|
||||||
|
name: traefik
|
||||||
|
image: traefik:v2.11
|
||||||
|
command:
|
||||||
|
- --api.insecure=true
|
||||||
|
- --providers.docker
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "8080:8080" # Web UI (optional)
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
networks:
|
||||||
|
- name: traefik_network # Optional, adapt network name
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
- name: Deploy Traefik Forward Auth container
|
||||||
|
docker_container:
|
||||||
|
name: forward-auth
|
||||||
|
image: thomseddon/traefik-forward-auth:2.2.0
|
||||||
|
env_file:
|
||||||
|
- ./traefik-auth-conf.env # Path to your environment file
|
||||||
|
volumes:
|
||||||
|
- ./traefik-auth-conf.env:/config.ini:ro # Configuration file
|
||||||
|
labels:
|
||||||
|
- traefik.enable=true
|
||||||
|
- traefik.http.routers.auth.rule=Host(`auth.local.net`)
|
||||||
|
# Additional labels for authentication and TLS (uncomment and adjust as needed)
|
||||||
|
# - traefik.http.routers.auth.entrypoints=https # Enable HTTPS
|
||||||
|
# - traefik.http.routers.auth.tls.domains[0].main=your_domain.com # Main domain
|
||||||
|
# - traefik.http.routers.auth.tls.domains[0].sans=*.your_domain.com # Wildcard for subdomains
|
||||||
|
# - traefik.http.routers.auth.tls.certresolver=letsencrypt-resolver # Use Let's Encrypt
|
||||||
|
- traefik.http.routers.auth.service=auth@docker
|
||||||
|
- traefik.http.services.auth.loadbalancer.server.port=4181
|
||||||
|
- traefik.http.middlewares.forward-auth.forwardauth.address=http://forward-auth:4181 # Adjusted container name
|
||||||
|
- traefik.http.middlewares.forward-auth.forwardauth.trustForwardHeader=true
|
||||||
|
- traefik.http.middlewares.forward-auth.forwardauth.authResponseHeaders=X-Forwarded-User
|
||||||
|
- traefik.http.routers.auth.middlewares=forward-auth
|
||||||
|
networks:
|
||||||
|
- name: traefik_network # Optional, adapt network name
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
- name: Deploy Whoami container for testing (optional)
|
||||||
|
docker_container:
|
||||||
|
name: whoami
|
||||||
|
image: traefik/whoami
|
||||||
|
labels:
|
||||||
|
- traefik.http.routers.whoami.rule=Host(`whoami.local.net`)
|
||||||
|
- traefik.http.routers.whoami.middlewares=forward-auth
|
||||||
|
networks:
|
||||||
|
- name: traefik_network # Optional, adapt network name
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# - name: create docker app base dir
|
||||||
|
# file:
|
||||||
|
# path: "{{ item }}"
|
||||||
|
# state: directory
|
||||||
|
# mode: 0755
|
||||||
|
# owner: root
|
||||||
|
# group: root
|
||||||
|
# with_items:
|
||||||
|
# - "{{ dockerapp_tree_base_dir | last }}"
|
||||||
|
# - "{{ dockerapp_tree_base_dir | last }}/{{ dockerapp_service }}"
|
||||||
|
# - "{{ dockerapp_tree_base_dir | last }}/{{ dockerapp_service }}/logs"
|
||||||
|
# - "{{ dockerapp_tree_base_dir | last }}/{{ dockerapp_service }}/logs/homeserver"
|
||||||
|
# tags:
|
||||||
|
# - docker-compose
|
||||||
|
# - bootstrap_dockerapp_create_base_dir
|
||||||
|
|
||||||
|
# - name: create docker volumes tree for containers
|
||||||
|
# file:
|
||||||
|
# path: "{{ dockerapp_tree_base_dir | last }}/{{ dockerapp_service }}/{{ item | default('') }}"
|
||||||
|
# state: directory
|
||||||
|
# mode: 0755
|
||||||
|
# with_items: "{{ dockerapp_tree_volumes | default([]) }}"
|
||||||
|
# tags:
|
||||||
|
# - docker-compose
|
||||||
|
# - bootstrap_dockerapp_create_app_dir
|
||||||
|
|
||||||
|
# - name: create the main docker-compose file (docker-compose.yml)
|
||||||
|
# template:
|
||||||
|
# src: "../templates/docker-compose.yml.j2"
|
||||||
|
# dest: "{{ dockerapp_tree_base_dir | last }}/{{ dockerapp_service }}/docker-compose-test.yml"
|
||||||
|
# mode: 0600
|
||||||
|
# tags:
|
||||||
|
# - docker-compose
|
||||||
|
# - bootstrap_dockerapp_configure_docker_compose
|
||||||
|
|
||||||
# - name: Run `docker-compose pull`
|
# - name: Run `docker-compose pull`
|
||||||
# community.docker.docker_compose:
|
# community.docker.docker_compose:
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
|
#* DOCKER
|
||||||
|
docker_install_compose: true
|
||||||
|
pip_executable: pip3
|
||||||
|
|
||||||
|
#*PIP
|
||||||
|
pip_install_packages:
|
||||||
|
- docker-compose
|
||||||
|
|
||||||
#* SSH
|
#* SSH
|
||||||
#ssh_listen_to: "{{ host_private_address }}"
|
#ssh_listen_to: "{{ host_private_address }}"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user