From 93c8aa558ed74a6e2f274114386268c35b100824 Mon Sep 17 00:00:00 2001 From: Thedro Neely Date: Mon, 23 Mar 2020 16:30:03 -0400 Subject: roles/mkdocs: Add mkdocs --- inventory/hosts | 4 ++ roles/mkdocs/files/index.md | 3 + roles/mkdocs/files/mkdocs.yml | 4 ++ roles/mkdocs/files/supervisord.conf | 30 +++++++++ roles/mkdocs/main.yml | 119 ++++++++++++++++++++++++++++++++++++ roles/variables.yml | 5 ++ 6 files changed, 165 insertions(+) create mode 100644 roles/mkdocs/files/index.md create mode 100644 roles/mkdocs/files/mkdocs.yml create mode 100644 roles/mkdocs/files/supervisord.conf create mode 100644 roles/mkdocs/main.yml diff --git a/inventory/hosts b/inventory/hosts index 99749a3..7679808 100644 --- a/inventory/hosts +++ b/inventory/hosts @@ -16,6 +16,7 @@ k8s_centos8 postgresql health_checks docker_registry +mkdocs [isso] isso.lxc @@ -26,6 +27,9 @@ healthchecks [vault] vault.lxc +[mkdocs] +mkdocs.lxc + [fathom] fathom.lxc diff --git a/roles/mkdocs/files/index.md b/roles/mkdocs/files/index.md new file mode 100644 index 0000000..44bdf38 --- /dev/null +++ b/roles/mkdocs/files/index.md @@ -0,0 +1,3 @@ +# Home Page + +Welcome. This wiki contains domain knowledge for the local network. diff --git a/roles/mkdocs/files/mkdocs.yml b/roles/mkdocs/files/mkdocs.yml new file mode 100644 index 0000000..59e009c --- /dev/null +++ b/roles/mkdocs/files/mkdocs.yml @@ -0,0 +1,4 @@ +site_name: 'Documentation' + +theme: + name: 'material' diff --git a/roles/mkdocs/files/supervisord.conf b/roles/mkdocs/files/supervisord.conf new file mode 100644 index 0000000..acce2c6 --- /dev/null +++ b/roles/mkdocs/files/supervisord.conf @@ -0,0 +1,30 @@ +; Supervisor config file. + +[program:mkdocs] +command=/opt/mkdocs/bin/mkdocs serve --dev-addr=0.0.0.0:8000 +directory=/opt/%(program_name)s +stopasgroup=true +stdout_logfile=/var/log/%(program_name)s.log +stdout_logfile_maxbytes=0 +stdout_logfile_backups=0 +redirect_stderr=true +user=%(program_name)s + +[inet_http_server] +port = 9100 +username = mkdocs +password = mkdocs + +[unix_http_server] +file=/run/supervisord.sock + +[supervisord] +logfile=/var/log/supervisord.log +loglevel=info +user=root + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl=unix:///run/supervisord.sock diff --git a/roles/mkdocs/main.yml b/roles/mkdocs/main.yml new file mode 100644 index 0000000..78a437e --- /dev/null +++ b/roles/mkdocs/main.yml @@ -0,0 +1,119 @@ +--- +- name: Container Setup + + vars: + lxc_base: ansible-alpine3.11 + lxc_name: mkdocs + + import_playbook: ../common/tasks/lxc.yml + +- name: Installing MkDocs + hosts: mkdocs + + vars_files: + - ../variables.yml + + tasks: + + - name: Ensuring group exists + group: + name: "{{ mkdocs_user }}" + state: present + + - name: Creating user and making home directory + user: + system: yes + state: present + name: "{{ mkdocs_user }}" + groups: "{{ mkdocs_user }}" + home: "{{ mkdocs_home }}" + + - name: Installing the required dependencies + apk: + state: present + update_cache: yes + name: + - sudo + - git + - supervisor + + - block: + + - name: Setting up python virtual environment + shell: python3 -m venv . + args: + chdir: "{{ mkdocs_home }}" + creates: bin/activate + + - name: Installing application + shell: | + . bin/activate + pip install git+https://github.com/mkdocs/mkdocs@{{ mkdocs_version }} + pip install -Iv mkdocs-material=={{ mkdocs_material_version }} + args: + chdir: "{{ mkdocs_home }}" + creates: bin/mkdocs + + - name: Copying config file + copy: + src: mkdocs.yml + dest: "{{ mkdocs_home }}" + mode: '0644' + register: mkdocsConfig + + - name: Creating document directory + file: + path: "{{ mkdocs_home }}/docs" + state: directory + + - name: Copying index file + copy: + src: index.md + dest: "{{ mkdocs_home }}/docs" + mode: '0644' + + become: true + become_user: "{{ mkdocs_user }}" + + - name: Copying supervisord config file + copy: + src: supervisord.conf + dest: /etc/supervisord.conf + mode: '0644' + register: supervisorConfig + + - name: Ensuring supervisord has been started and enabled + service: + name: supervisord + state: started + enabled: yes + + - name: Waiting for supervisor to become active + wait_for: + port: 9100 + + - name: Restarting supervisord due to config change + service: + name: supervisord + state: restarted + when: supervisorConfig.changed + + - name: Ensuring application has been started + supervisorctl: + name: mkdocs + state: started + + - name: Waiting for application to become active + wait_for: + port: 8000 + + - name: Restarting application due to config change + supervisorctl: + name: mkdocs + state: restarted + when: mkdocsConfig.changed + + - name: Testing if webpage exists + uri: + url: http://0.0.0.0:8000 + return_content: yes diff --git a/roles/variables.yml b/roles/variables.yml index 912e72c..e5f457a 100644 --- a/roles/variables.yml +++ b/roles/variables.yml @@ -24,3 +24,8 @@ docker_registry_version: 2.7.1 fathom_user: fathom fathom_home: "/opt/{{ fathom_user }}" fathom_version: 1.2.1 + +mkdocs_user: mkdocs +mkdocs_home: "/opt/{{ mkdocs_user }}" +mkdocs_version: 2505a907f4ef6cc4492031faef06192f9eddf0bc +mkdocs_material_version: 4.6.3 -- cgit v1.2.3