Currently, I work as an Infastructure and Cloud consultant at Red Hat within the consulting team. I predominantly work in the storage and container ecosystems but have an interest in most things Linux related.

Prior to this I worked in the hosting industry building solutions at a global scale.

The purpose of this site is for me to write about things I’ve found interesting, as well as a general scratch pad for labs and test.

Opinions expressed are my own and not related to/endorsed by my employer in any fashion.

The Website⌗

This is a static website stored entirely within GitLab. It use the Hugo static site generator to build the site.

The site is then hosted on Netlify on a global CDN.

Updates are done using the standard git workflow, then a trigger is sent from Gitlab to Netlify to rebuild and republish the site.

Infrastructure⌗

Gitlab⌗

The site is maintained in GitLab here.

For images and other large binary conetent, GitLab LFS is utilised. This is to prevent the main repo filling up with (non-necessary) versioning information for these data-types.

Hugo⌗

When adding new content for the site, running a preview can be very helpful. This can be done by having the hugo binary on your local machine and running hugo server -D from within the root of the git directory. This will then have a development version of the site at http://127.0.0.1:1313.

When using a local development hugo and Netlify, be sure to have the Hugo Version defined in a netlify.toml file to allow the site to build with the relevant version of Hugo.

The theme is a slightly butchered version of panr’s terminal theme

Netlify⌗

Netlify is a web developer platform that multiplies productivity.

By unifying the elements of the modern decoupled web, from local development to advanced edge logic, Netlify enables a 10x faster path to much more performant, secure, and scalable websites and apps.

Current build status from Netlify Netlify Status

Workflow⌗

Adding content to the site is done using this method:

  • Checkout the GitLab repository
  • Update or add content to content/posts
  • Check the new content with aspell and the --markdown filter
    
    aspell --mode=markdown check gluster-3.8.4-upgrade.md`
    
  • Push new content back to GitLab
  • NetLify triggers a build once git is updated - it checks out the content from git, applies the Hugo generator to the site and then publishes it on a specific URL
    
    11:32:36 AM: Build ready to start
    11:32:38 AM: build-image version: 53b83b6bede2920f236b25b6f5a95334320dc849
    11:32:38 AM: build-image tag: v3.6.0
    11:32:38 AM: buildbot version: a706ec7a557bcc28584843816a376a10c08955ca
    11:32:38 AM: Fetching cached dependencies
    11:32:38 AM: Starting to download cache of 97.0MB
    11:32:39 AM: Finished downloading cache in 655.401572ms
    11:32:39 AM: Starting to extract cache
    11:32:41 AM: Finished extracting cache in 2.536508163s
    11:32:41 AM: Finished fetching cache in 3.2091451s
    11:32:41 AM: Starting to prepare the repo for build
    11:32:41 AM: Git LFS enabled
    11:32:42 AM: Preparing Git Reference refs/heads/master
    11:32:44 AM: using git lfs fetchinclude override of: *
    11:32:45 AM: Different build command detected, going to use the one specified in the Netlify configuration file: 'hugo --gc --minify' versus 'hugo' in the Netlify UI
    11:32:45 AM: Starting build script
    11:32:45 AM: Installing dependencies
    11:32:45 AM: Python version set to 2.7
    11:32:45 AM: Started restoring cached node version
    11:32:47 AM: Finished restoring cached node version
    11:32:48 AM: v12.18.0 is already installed.
    11:32:49 AM: Now using node v12.18.0 (npm v6.14.4)
    11:32:49 AM: Started restoring cached build plugins
    11:32:49 AM: Finished restoring cached build plugins
    11:32:49 AM: Attempting ruby version 2.7.1, read from environment
    11:32:50 AM: Using ruby version 2.7.1
    11:32:50 AM: Using PHP version 5.6
    11:32:50 AM: Installing Hugo 0.70.0
    11:32:50 AM: Hugo Static Site Generator v0.70.0-7F47B99E/extended linux/amd64 BuildDate: 2020-05-06T11:26:13Z
    11:32:50 AM: Started restoring cached go cache
    11:32:50 AM: Finished restoring cached go cache
    11:32:50 AM: go version go1.14.4 linux/amd64
    11:32:50 AM: go version go1.14.4 linux/amd64
    11:32:50 AM: Installing missing commands
    11:32:50 AM: Verify run directory
    11:32:52 AM: ​
    11:32:52 AM: ────────────────────────────────────────────────────────────────
    11:32:52 AM:   Netlify Build                                                 
    11:32:52 AM: ────────────────────────────────────────────────────────────────
    11:32:52 AM: ​
    11:32:52 AM: ❯ Version
    11:32:52 AM:   @netlify/build 8.0.3
    11:32:52 AM: ​
    11:32:52 AM: ❯ Flags
    11:32:52 AM:   deployId: 5ffeda54dcc39f0008f2544c
    11:32:52 AM:   mode: buildbot
    11:32:52 AM: ​
    11:32:52 AM: ❯ Current directory
    11:32:52 AM:   /opt/build/repo
    11:32:52 AM: ​
    11:32:52 AM: ❯ Config file
    11:32:52 AM:   /opt/build/repo/netlify.toml
    11:32:52 AM: ​
    11:32:52 AM: ❯ Context
    11:32:52 AM:   production
    11:32:52 AM: ​
    11:32:52 AM: ────────────────────────────────────────────────────────────────
    11:32:52 AM:   1. build.command from netlify.toml                            
    11:32:52 AM: ────────────────────────────────────────────────────────────────
    11:32:52 AM: ​
    11:32:52 AM: $ hugo --gc --minify
    11:32:52 AM: Building sites … WARNING: calling IsSet with unsupported type "invalid" (<nil>) will always return false.
    11:32:52 AM:                    | EN
    11:32:52 AM: -------------------+-----
    11:32:52 AM:   Pages            | 49
    11:32:52 AM:   Paginator pages  |  0
    11:32:52 AM:   Non-page files   |  0
    11:32:52 AM:   Static files     | 19
    11:32:52 AM:   Processed images |  0
    11:32:52 AM:   Aliases          | 16
    11:32:52 AM:   Sitemaps         |  1
    11:32:52 AM:   Cleaned          |  0
    11:32:52 AM: Total in 147 ms
    11:32:52 AM: ​
    11:32:52 AM: (build.command completed in 199ms)
    11:32:52 AM: ​
    11:32:52 AM: ────────────────────────────────────────────────────────────────
    11:32:52 AM:   Netlify Build Complete                                        
    11:32:52 AM: ────────────────────────────────────────────────────────────────
    11:32:52 AM: ​
    11:32:52 AM: (Netlify Build completed in 259ms)
    11:32:52 AM: Caching artifacts
    11:32:52 AM: Started saving build plugins
    11:32:52 AM: Finished saving build plugins
    11:32:52 AM: Started saving pip cache
    11:32:52 AM: Finished saving pip cache
    11:32:52 AM: Started saving emacs cask dependencies
    11:32:52 AM: Finished saving emacs cask dependencies
    11:32:52 AM: Started saving maven dependencies
    11:32:52 AM: Finished saving maven dependencies
    11:32:52 AM: Started saving boot dependencies
    11:32:52 AM: Finished saving boot dependencies
    11:32:52 AM: Started saving rust rustup cache
    11:32:52 AM: Finished saving rust rustup cache
    11:32:52 AM: Started saving rust cargo bin cache
    11:32:52 AM: Finished saving rust cargo bin cache
    11:32:52 AM: Started saving go dependencies
    11:32:52 AM: Finished saving go dependencies
    11:32:52 AM: Build script success
    11:32:52 AM: Starting to deploy site from 'public'
    11:32:52 AM: Creating deploy tree 
    11:32:53 AM: Creating deploy upload records
    11:32:53 AM: 47 new files to upload
    11:32:53 AM: 0 new functions to upload
    11:32:54 AM: Starting post processing
    11:32:54 AM: Post processing - HTML
    11:32:57 AM: Post processing - header rules
    11:32:57 AM: Post processing - redirect rules
    11:32:57 AM: Post processing done
    11:32:57 AM: Site is live ✨
    11:33:09 AM: Finished processing build request in 31.475283799s