From eb9142b12d13c1512479620d9f74729a8bed8f5f Mon Sep 17 00:00:00 2001 From: KD Puvvadi Date: Tue, 4 Jul 2023 15:38:37 +0530 Subject: [PATCH 1/3] mysql support --- main.yml | 15 +++++++++----- tasks/proxy-mysql.yml | 46 +++++++++++++++++++++++++++++++++++++++++++ vars.yml.j2 | 8 ++++++++ 3 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 tasks/proxy-mysql.yml diff --git a/main.yml b/main.yml index 346e094..88ab55a 100644 --- a/main.yml +++ b/main.yml @@ -6,20 +6,20 @@ - name: Config include_vars: vars.yml - - name: apt cache update + - name: Apt cache update apt: update_cache: true cache_valid_time: 3600 when: - ansible_facts.os_family == "Debian" - - name: apt Upgrade + - name: Apt Upgrade apt: upgrade: true when: - ansible_facts.os_family == "Debian" - - name: yum cache update & upgrade + - name: Yum cache update & upgrade yum: name: "*" state: latest @@ -35,9 +35,14 @@ - name: Setup Docker. import_tasks: tasks/docker.yml - - name: Install Nginx Proxy Manager + - name: Install Nginx Proxy Manager with SQLite import_tasks: tasks/proxy.yml + when: not proxy_with_mysql - - name: install portainer + - name: Install Nginx Proxy Manager with MySQL + import_tasks: tasks/proxy-mysql.yml + when: proxy_with_mysql + + - name: Install portainer import_tasks: tasks/portainer.yml when: portainer_enable diff --git a/tasks/proxy-mysql.yml b/tasks/proxy-mysql.yml new file mode 100644 index 0000000..c498b52 --- /dev/null +++ b/tasks/proxy-mysql.yml @@ -0,0 +1,46 @@ +--- +- name: Create a network for proxy manager + community.docker.docker_network: + name: "{{ network }}" + +- name: Deploy mysql/mariadb + community.docker.docker_container: + name: "{{ mysql_host }}" + image: jc21/mariadb-aria:latest + ports: + - "3306:3306" + volumes: + - "/data/mysql:/var/lib/mysql" + env: + MYSQL_ROOT_PASSWORD: "{{ mysql_root_password }}" + MYSQL_DATABASE: "{{ mysql_database }}" + MYSQL_USER: "{{ mysql_database }}" + MYSQL_PASSWORD: "{{ mysql_password }}" + restart_policy: unless-stopped + networks: + - name: "{{ network }}" + container_default_behavior: compatibility + network_mode: "{{ network }}" + + +- name: Nginx Proxy Manager deploy + community.docker.docker_container: + name: nginx_proxy + image: jc21/nginx-proxy-manager:latest + ports: + - "80:80" + - "81:81" + - "443:443" + volumes: + - "/data:/data" + - "/letsencrypt:/etc/letsencrypt" + env: + DB_MYSQL_HOST: "{{ mysql_host }}" + DB_MYSQL_PORT: "3306" + DB_MYSQL_USER: "{{ mysql_user }}" + DB_MYSQL_PASSWORD: "{{ mysql_password }}" + DB_MYSQL_NAME: "{{ mysql_database }}" + restart_policy: unless-stopped + networks: + - name: "{{ network }}" + network_mode: "{{ network }}" diff --git a/vars.yml.j2 b/vars.yml.j2 index eef794d..f6fc782 100644 --- a/vars.yml.j2 +++ b/vars.yml.j2 @@ -9,3 +9,11 @@ network: proxy # portainer portainer_enable: false + +# Mysql vars +proxy_with_mysql: false +mysql_root_password: npm +mysql_database: npm +mysql_user: npm +mysql_password: npm +mysql_host: mysql From 86e0603fec16ce862e3ea0ddd243e2e7db9ef859 Mon Sep 17 00:00:00 2001 From: KD Puvvadi Date: Tue, 4 Jul 2023 15:43:45 +0530 Subject: [PATCH 2/3] fqcn --- README.md | 7 ++----- main.yml | 18 +++++++++--------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 6c6614b..c47d290 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,6 @@ [![lint](https://github.com/kdpuvvadi/proxy/actions/workflows/lint.yml/badge.svg?event=push)](https://github.com/kdpuvvadi/proxy/actions/workflows/lint.yml) -Playbook works on both Debian & Red Hat family hosts. Using Ubuntu 20.04 pc as control node. - -You need at least 2.9 or higher version of ansible. - ## Setup 1. Install pip `sudo apt install python3-pip -y` @@ -38,4 +34,5 @@ Password: changeme ## Portainer -To install portainer set `portainer_enable` value to `true`. +To install portainer, set `portainer_enable` value to `true`. +To install proxy manager with MySQL instead of SQLite, set `proxy_with_mysql` to true diff --git a/main.yml b/main.yml index 88ab55a..395c8c1 100644 --- a/main.yml +++ b/main.yml @@ -4,23 +4,23 @@ pre_tasks: - name: Config - include_vars: vars.yml + ansible.builtin.include_vars: vars.yml - name: Apt cache update - apt: + ansible.builtin.apt: update_cache: true cache_valid_time: 3600 when: - ansible_facts.os_family == "Debian" - name: Apt Upgrade - apt: + ansible.builtin.apt: upgrade: true when: - ansible_facts.os_family == "Debian" - name: Yum cache update & upgrade - yum: + ansible.builtin.yum: name: "*" state: latest update_cache: true @@ -30,19 +30,19 @@ tasks: - name: Install packages/prerequisites - import_tasks: tasks/packages.yml + ansible.builtin.import_tasks: tasks/packages.yml - name: Setup Docker. - import_tasks: tasks/docker.yml + ansible.builtin.import_tasks: tasks/docker.yml - name: Install Nginx Proxy Manager with SQLite - import_tasks: tasks/proxy.yml + ansible.builtin.import_tasks: tasks/proxy.yml when: not proxy_with_mysql - name: Install Nginx Proxy Manager with MySQL - import_tasks: tasks/proxy-mysql.yml + ansible.builtin.import_tasks: tasks/proxy-mysql.yml when: proxy_with_mysql - name: Install portainer - import_tasks: tasks/portainer.yml + ansible.builtin.import_tasks: tasks/portainer.yml when: portainer_enable From e4deac70b44e650b05a7fa29ec2a3e97fbcdb04d Mon Sep 17 00:00:00 2001 From: KD Puvvadi Date: Tue, 4 Jul 2023 15:46:13 +0530 Subject: [PATCH 3/3] editorconfig --- .editorconfig | 12 ++++++ tasks/proxy-mysql.yml | 92 +++++++++++++++++++++---------------------- 2 files changed, 58 insertions(+), 46 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5d47c21 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/tasks/proxy-mysql.yml b/tasks/proxy-mysql.yml index c498b52..ff0e79f 100644 --- a/tasks/proxy-mysql.yml +++ b/tasks/proxy-mysql.yml @@ -1,46 +1,46 @@ ---- -- name: Create a network for proxy manager - community.docker.docker_network: - name: "{{ network }}" - -- name: Deploy mysql/mariadb - community.docker.docker_container: - name: "{{ mysql_host }}" - image: jc21/mariadb-aria:latest - ports: - - "3306:3306" - volumes: - - "/data/mysql:/var/lib/mysql" - env: - MYSQL_ROOT_PASSWORD: "{{ mysql_root_password }}" - MYSQL_DATABASE: "{{ mysql_database }}" - MYSQL_USER: "{{ mysql_database }}" - MYSQL_PASSWORD: "{{ mysql_password }}" - restart_policy: unless-stopped - networks: - - name: "{{ network }}" - container_default_behavior: compatibility - network_mode: "{{ network }}" - - -- name: Nginx Proxy Manager deploy - community.docker.docker_container: - name: nginx_proxy - image: jc21/nginx-proxy-manager:latest - ports: - - "80:80" - - "81:81" - - "443:443" - volumes: - - "/data:/data" - - "/letsencrypt:/etc/letsencrypt" - env: - DB_MYSQL_HOST: "{{ mysql_host }}" - DB_MYSQL_PORT: "3306" - DB_MYSQL_USER: "{{ mysql_user }}" - DB_MYSQL_PASSWORD: "{{ mysql_password }}" - DB_MYSQL_NAME: "{{ mysql_database }}" - restart_policy: unless-stopped - networks: - - name: "{{ network }}" - network_mode: "{{ network }}" +--- +- name: Create a network for proxy manager + community.docker.docker_network: + name: "{{ network }}" + +- name: Deploy mysql/mariadb + community.docker.docker_container: + name: "{{ mysql_host }}" + image: jc21/mariadb-aria:latest + ports: + - "3306:3306" + volumes: + - "/data/mysql:/var/lib/mysql" + env: + MYSQL_ROOT_PASSWORD: "{{ mysql_root_password }}" + MYSQL_DATABASE: "{{ mysql_database }}" + MYSQL_USER: "{{ mysql_database }}" + MYSQL_PASSWORD: "{{ mysql_password }}" + restart_policy: unless-stopped + networks: + - name: "{{ network }}" + container_default_behavior: compatibility + network_mode: "{{ network }}" + + +- name: Nginx Proxy Manager deploy + community.docker.docker_container: + name: nginx_proxy + image: jc21/nginx-proxy-manager:latest + ports: + - "80:80" + - "81:81" + - "443:443" + volumes: + - "/data:/data" + - "/letsencrypt:/etc/letsencrypt" + env: + DB_MYSQL_HOST: "{{ mysql_host }}" + DB_MYSQL_PORT: "3306" + DB_MYSQL_USER: "{{ mysql_user }}" + DB_MYSQL_PASSWORD: "{{ mysql_password }}" + DB_MYSQL_NAME: "{{ mysql_database }}" + restart_policy: unless-stopped + networks: + - name: "{{ network }}" + network_mode: "{{ network }}"