diff --git a/README.md b/README.md new file mode 100644 index 0000000..fd4ec57 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# m2.nz + +Hugo +Theme: https://github.com/vaga/hugo-theme-m10c diff --git a/config.toml b/config.toml index 9b49843..6cb6c52 100644 --- a/config.toml +++ b/config.toml @@ -1,9 +1,12 @@ baseURL = 'https://m2.nz/' languageCode = 'en-us' -title = 'Daniel Mason' +title = 'm2.nz' theme = "m10c" +[markup.goldmark.renderer] + unsafe = true + [menu] [[menu.main]] identifier = "home" @@ -15,11 +18,11 @@ theme = "m10c" name = "Tags" url = "/tags/" weight = 2 -# [[menu.main]] -# identifier = "about" -# name = "About" -# url = "/about/" -# weight = 3 + [[menu.main]] + identifier = "about" + name = "CV" + url = "/cv/" + weight = 3 [params] author = "Daniel Mason" @@ -29,13 +32,25 @@ theme = "m10c" favicon = "/favicon.ico" [[params.social]] - icon = "gitlab" + icon = "git-pull-request" name = "GitLab" - url = "https://gitlab.com/idanoo" + url = "https://git.m2.nz/idanoo" + [[params.social]] + icon = "send" + name = "Mastodon" + url = "https://mastodon.nz/@idanoo" + [[params.social]] + icon = "camera" + name = "Pixelfed" + url = "https://pixelfed.nz/idanoo" + [[params.social]] + icon = "message-square" + name = "Matrix" + url = "https://matrix.to/#/@idanoo:mtrx.nz" - [params.style] - darkestColor = "#242930" - darkColor = "#353b43" - lightColor = "#afbac4" - lightestColor = "#ffffff" - primaryColor = "#57cc8a" +[params.style] + darkestColor = "#242930" + darkColor = "#353b43" + lightColor = "#afbac4" + lightestColor = "#ffffff" + primaryColor = "#57cc8a" diff --git a/content/.gitkeep b/content/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/content/cv.md b/content/cv.md new file mode 100644 index 0000000..5931bb9 --- /dev/null +++ b/content/cv.md @@ -0,0 +1,98 @@ ++++ +title = "Employment History" + ++++ + +
+
+ ezyVet Logo +
+
+

ezyVet

+

Site Reliability Engineer

+

August 2019 - Current

+
+
+ +My role at ezyVet is primarily focused on improving performance and response time across the full stack from PHP, MySQL and ElasticSearch improvements to optimizing AWS usage and cost. + +- Pushing for latest versions of services to keep frameworks up to date and utilize any performance improvements (PHP, MySQL, Elasticsearch, Redis upgrades) +- Building automation pipelines through GitLab CI +- Experience building a cross-platform Go application utilizing Websockets with AWS API Gateway and SQS/SNS/DynamoDB/Lambda/Terraform +- Creating a full docker development environment for engineers to improve development workflows +- Reducing RDS load and improving SQL query response time via query restructuring to make better use of compound indexes and foreign keys +- Rebuilding Elasticsearch clusters to improve redundancy and response time with optimised indexes +- Writing custom service monitoring tools in Go that interface directly with Docker, ElasticSearch and PHP-FPM +- Optimising MySQL parameter groups to get the most out of each instance + +
+
+
+ Catalyst IT Logo +
+
+

Catalyst IT

+

Devops Engineer

+

October 2018 - August 2019

+
+
+ +At Catalyst, I worked directly with several large corporate clients doing routine patching, performance improvements and general BAU. While primarily configuring CI/CD pipelines for full automated tested and deployments, I also gained experience with helm chart deployments into Kubernetes clusters hosted on OpenStack.I have also had the opportunity to gain more experience working with Puppet, Ansible and GitLab CI. + +
+
+
+ ezyVet Logo +
+
+

ezyVet

+

Cloud Environment and Application Engineer

+

August 2017 - October 2018

+
+
+ +At ezyVet, I was primarily in charge of reviewing and merging code into our production environment as well as being our in-house DevOps/Infrastructure person. I occasionally did development work as well. In this position I gained vast experience in multiple areas as outlined below. + +The position currently included the following responsibilities: +- Setting up and improving our CI/CD processes. +- Maintaining and constantly improving our environment. (AWS/Terraform) +- Setting up custom alerts / metrics with Cloudwatch & Grafana. +- Responding proactively to the above alerts to fix potential issues. +- Heavily involved in rolling out new technologies to our stack. +- Revision, escalation and resolution of tickets and other critical issues. +- Mentored Junior Developers through their induction into ezyVet. + +DevOps: +- AWS: Consistently Improving our infrastructure to be efficient and reliable +- Linux: Daily experience with Debian, Ubuntu and Arch. +- CI / CD: Setting up and maintaining GitLab runners to run our Unit Tests / Automatic deploy pipelines inside docker containers. +- Packer/Chef/Vagrant: Building custom AMI images for AWS & Vagrant for our development machines. +- Terraform: Assisted migration of our AWS environments to code. +- Virtualization: Setting up Vagrant / Virtual Box environments that mock our production environment. + +Programming: +- PHP: Building small features and day-to-day bug fixes as well. +- MySQL. +- Shell / Bash: Created custom scripts to achieve specific goals. +- Python / Node.js: Lambda functions in serverless. +- HTML / CSS / JS / jQuery. + +Management: +- Code Review: In charge of reviewing all code before it gets merged in to our production branches. +- JIRA / Confluence / Freshdesk: Primarily used JIRA for ticket-tracking and Confluence for In-house documentation. +- Mentoring: I have taken on several junior developers over the 2 years to train them and assist them in becoming familiar with out code-base and work-flow. + +
+
+
+ ezyVet Logo +
+
+

ezyVet

+

Full Stack Developer

+

March 2016 - August 2017

+
+
+ + +Focused on building new features and improving our cloud environment. Primarily working in PHP. diff --git a/content/posts/proxmox_rm_recovery.md b/content/posts/proxmox_rm_recovery.md new file mode 100644 index 0000000..3887df0 --- /dev/null +++ b/content/posts/proxmox_rm_recovery.md @@ -0,0 +1,24 @@ ++++ +title = "Recovering from a root 'rm' and why you need backups" +tags = ["recovery", "backup", "proxmox"] +date = "2021-02-06" +description = "test" ++++ + +Last week I was finally getting around to fixing my backup tooling and validating the recovery procedures. I thought it would be a good idea to have rolling nightly backups on a secondary ZFS pool with weekly syncs to an external disk. I ended up using this exact command to purge the rolling backups: + +> `$ find ${BACKUP_FOLDER}/* -mtime +${DAYS_TO_KEEP} -exec rm {} \;` + +Before we go any further, I want to point out that I was using the variable `${BACKUP_DIR}`, not `${BACKUP_FOLDER}`. +Can you see where this is going? Yeah.. I didn't pick that up before running my new majestic backup script. Half an hour later I came back to pages of ssh logs resembling `/bin/rm: command not found`. Oops. I instantly knew what had happened, I'd completely written off my Proxmox host and I was lucky it removed the `/bin/rm` binary before removing any actual data. + +Further investigation showed that I'd wiped most of /bin and the system was barely usable, I still had rsync.. yay! I quickly shutdown all of my containers/vms and rsync'd `/etc` to my primary ZFS cluster before rebooting to a fresh Proxmox install. After reformatting my root drive and reinstalling from scratch, I copied `/etc/pve/lxc` and +`/etc/pve/qemu-sever` back into place, ran zpool import `{data,storage}` and gave it one more reboot. + +I have never been so relieved to check and see all of my containers booting up back to their normal state. There was one or two other small things I had to fix up post-install such as reinstall `nfs-kernel-server` and several other packages. Overal I was pretty lucky I could copy my container configs before reinstalling and total downtime was under an hour. + +### Backups are important + +**Test your backups.** + +Don't get caught out and expect everything to be there when you really need it. diff --git a/static/catalyst_logo.png b/static/catalyst_logo.png new file mode 100644 index 0000000..02a0aeb Binary files /dev/null and b/static/catalyst_logo.png differ diff --git a/static/ezyvet_logo.png b/static/ezyvet_logo.png new file mode 100644 index 0000000..369ed08 Binary files /dev/null and b/static/ezyvet_logo.png differ diff --git a/static/profile.png b/static/profile.png index 99dabb7..7529cf7 100755 Binary files a/static/profile.png and b/static/profile.png differ diff --git a/themes/.gitkeep b/themes/.gitkeep deleted file mode 100644 index e69de29..0000000