diff --git a/README.md b/README.md index 7c5676e..5258348 100644 --- a/README.md +++ b/README.md @@ -339,6 +339,17 @@ TODO ### Enable development mode +To make development easier, you can enable development tools on any given environment with ansible. If I wanted to enable them on the stage environment, I would run the following command. + +```bash +ansible-playbook -i env/stage/inventory.yml --vault-password-file .vault_password -e @env/stage/vault.yml tools-development.yml +``` + +Some changes to the environment after running the tools-development playbook include the following: + +* This will switch the `mjb.panel` service out with an `mjb.dev-panel` service that automatically reloads Mojolicious when files in the `mjb/Web/lib/` and `mjb/Web/templates/` change. +* Docker is installed to use `create-classes` in `DB/` + ### Working on the web panel ### Working on the database models diff --git a/devops/ansible/roles/mjb-overlay-devel/files/mjb.dev-panel.service b/devops/ansible/roles/mjb-overlay-devel/files/mjb.dev-panel.service new file mode 100644 index 0000000..0e99c50 --- /dev/null +++ b/devops/ansible/roles/mjb-overlay-devel/files/mjb.dev-panel.service @@ -0,0 +1,23 @@ +[Unit] +Description=MyJekyllBlog Web Service +After=postgresql.target + +[Service] +User=manager +Group=manager + +Environment="PERL5LIB=/home/manager/perl5/lib/perl5" +Environment="PERL_MB_OPT=--install_base \"/home/manager/perl5\"" +Environment="PERL_MM_OPT=INSTALL_BASE=/home/manager/perl5" +Environment="PERL_LOCAL_LIB_ROOT=/home/manager/perl5" +Environment="PATH=/home/manager/perl5/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" + +ExecStart=/home/manager/perl5/bin/morbo -l http://127.0.0.1:8080 ./script/mjb +WorkingDirectory=/home/manager/mjb/Web +SyslogIdentifier=mjb-web +Restart=on-failure +Type=simple +KillMode=process + +[Install] +WantedBy=multi-user.target diff --git a/devops/ansible/roles/mjb-overlay-devel/tasks/docker.yml b/devops/ansible/roles/mjb-overlay-devel/tasks/docker.yml new file mode 100644 index 0000000..da3370c --- /dev/null +++ b/devops/ansible/roles/mjb-overlay-devel/tasks/docker.yml @@ -0,0 +1,68 @@ +- name: Install packages + apt: + name: [ + 'apt-transport-https', + 'ca-certificates', + 'curl', + 'gnupg', + 'lsb-release', + ] + state: present + +- name: Install Docker Keyring + shell: curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + args: + creates: /usr/share/keyrings/docker-archive-keyring.gpg + +- name: Install Docker Repo File + shell: echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" > + /etc/apt/sources.list.d/docker.list + args: + creates: /etc/apt/sources.list.d/docker.list + +- name: Update apt cache + apt: + name: "curl" + state: latest + update_cache: yes + +- name: Install Docker Packages + apt: + name: [ + 'docker-ce', + 'docker-ce-cli', + 'containerd.io', + ] + state: present + +- name: Make sure we have a wheel group + group: + name: wheel + state: present + +- name: Allow wheel group to have passwordless sudo + lineinfile: + dest: /etc/sudoers + state: present + regexp: '^%wheel' + line: '%wheel ALL=(ALL) NOPASSWD: ALL' + validate: 'visudo -cf %s' + +- name: Add manager to docker and wheel group + user: + name: manager + groups: docker,wheel + append: yes + +- name: Start & enable docker + service: + name: docker + state: started + enabled: true + +- name: Start & enable containerd + service: + name: containerd + state: started + enabled: true + diff --git a/devops/ansible/roles/mjb-overlay-devel/tasks/main.yml b/devops/ansible/roles/mjb-overlay-devel/tasks/main.yml new file mode 100644 index 0000000..3916cb4 --- /dev/null +++ b/devops/ansible/roles/mjb-overlay-devel/tasks/main.yml @@ -0,0 +1,5 @@ +- name: Add docker support for DBIC regeneration + include_tasks: docker.yml + +- name: Update systemd files for MyJekyllBlog + include_tasks: myjekyllblog_service.yml diff --git a/devops/ansible/roles/mjb-overlay-devel/tasks/myjekyllblog_service.yml b/devops/ansible/roles/mjb-overlay-devel/tasks/myjekyllblog_service.yml new file mode 100644 index 0000000..0f118ec --- /dev/null +++ b/devops/ansible/roles/mjb-overlay-devel/tasks/myjekyllblog_service.yml @@ -0,0 +1,20 @@ +- name: Install service file for mjb.dev-panel + copy: + dest: /etc/systemd/system/mjb.dev-panel.service + src: "{{ role_path }}/files/mjb.dev-panel.service" + owner: root + group: root + mode: 0644 + +- name: Stop and disable mjb.panel service + service: + name: mjb.panel + state: stopped + enabled: no + + +- name: Start and enable the mjb.dev-panel service + service: + name: mjb.dev-panel + state: started + enabled: yes