I often develop personal tooling for work so I don’t have to do repetitive tasks manually. It’s best to create shared tooling, but sometimes shared tooling grows out of personal tooling. I have a toolbox repository with code that automates various troubleshooting and workaround tasks that fits into my personal workflow. This particular tool probably wouldn’t be used by anyone…
I had an old Radeon RX 5500 sitting around and wanted to see if I could get ollama to use it. It is not officially supported , but there is a way to get it working. Setup This was setup on a clean install of Fedora 41. I’m using Open WebUI to access the models, but will not go into detail on how that is setup nor how to install Fedora. Instead, I’ll explain how I got ollama using an…
My name is Luke. I’ve been working professionally with tech since 2001, and working as a Site Reliability Engineer for the past four years. Currently supporting a complex SaaS platform that runs in several regions on a few fairly large Kubernetes clusters. I have a few side projects I’ve been working. Hopefully will finish one or two in the near future. Tech I’m currently working…
I’m not picky about terminals in general. I mostly want them to stay out of my way and be able to switch between light and dark themes with the system. I’d been using the standard Gnome Console, but started becoming annoyed with not being able to copy to my local clipboard from Neovim and Tmux on remote systems. Gnome Console does not support the OSC-52 escape sequence that can be used…
Overview Recently, I was creating a terraform module that creates an S3 bucket. An S3 bucket can only have one aws_s3_bucket_policy , and the module needed to include a default policy to force TLS v1.2. I also needed to be able to pass additional policy statements to the module which may or may not include a condition . Unfortunately, there is not an obvious way to include the condition only when…
Overview Wanted to write this up because it’s not something I do regularly, and I always have to lookup how to find the start of the root partition. I specially only do this for my Raspberry Pi’s, but this should work with any image that is configured similarly. The goal is to download an OS image, in this case Debian, and mount the image locally to add a public SSH key.
The vault-client-go SDK has some great examples, but doesn’t explicitly show how to perform OIDC authentication. This may have limited use cases, but it is something I needed to do and wanted to write about it and hopefully save someone else some time figure out how to make this work. Prerequisites The first thing we need is a Vault server with the JWT/OIDC auth method configured. During…
I recently read an article that was linked on hacker news about the power of two load balancing algorithm. This isn’t a new or complicated concept, but I’d never explored it and wanted to experiment with it a bit for fun. This is a very over simplified example, but it’s pretty cool nonetheless. I will be using balls and requests interchangeably in this post. Overview Suppose you…
EKS Addon Configuration via Terraform This is a quick overview of how to pass custom configuration values to EKS managed addons using Terraform. Configuration Schema Before you begin find the addon version you need and describe the available configuration options: ❯ aws eks describe-addon-versions --addon-name coredns --kubernetes-version 1.27 | jq -r '.addons[].addonVersions[] |…
I recently came across a base64 encoded json string that contained data that was encrypted by php’s Laravel framework. The json contained three keys, iv , value , and mac . I hadn’t seen this before and wanted to learn more about what the data represented and how to decrypt it without using the Laravel framework. Based on the documentation I read, this functionality uses openssl and I…
Kubernetes Shell Exec All Containers fish script to loop through all pods This is not great, but a start. Does not take into account pods with multiple containers, and probably other failure cases. for n in ( k get ns -o json | jq -r .items [] .metadata.name ) for p in ( k get pods -n $n -o json | jq -r .items [] .metadata.name ) echo -n ' $p : ' ; k exec $p -n $n -- ls /usr/bin/pkexec 2>…
I wasn’t able to find much information online on how to install and use traefik in a kind cluster so decided to write a short post about how I got it working. Basically, it requires using setting the traefik service to NodePort and the mapping the ports to the control-plane container. To force the traefik pod to run on the control-plane container [node] you have to add a node selector and…
Summary DISCLAIMER #1 : I am not a cryptography expert. I’m not even good at rust. Please be diligent when handling other people’s private information. There is a lot more detail and authoritative information in the references section at the end of this post. DISCLAIMER #2 : If you have the option using of an external authentication provider that is probably better than building your…
Rust Programming & ST Nucleo-F302R8 STM32 Nucleo-F302R8 development board with STM32F302R8 MCU Introduction I’m new to rust and new to embedded programming. I wanted to document my experience getting started. This started when I bought an Arduino kit to do some projects with my family while we’re stuck inside avoiding the pandemic. If you notice any incorrect information or ways to…
Why I find it useful when I generate automated reports to have a link directly to the virtual machine(s) in the report. The example below is written in C#, but the link format is the same regardless of way it is generated. Link Structure Info Link contains: VM MoRef (value only) vCenter UUID HTML Format…
Data Protection and Dependency Injection Dependency injection is the process of passing an object to another object that depends on the first object. In most examples using data protection you’ll find that they use dependency injection. I am using dotnet core to automate virtual machine deployments and was looking for a safe way to store credentials. PowerShell provides the…
List AD Group Members Getting an active directory group’s member list is as simple as Get-ADGroupMember if the group only has members from the current domain. However, if you need to get group members for a group that has foreign security principals (users from another domain) things get a bit more complicated. Even more so when some of those objects have been orphaned. If you’re lucky…
Install features on demand offline on Windows Server and Windows 10 This also works with the Insider Preview version. Download FoD ISO (I use my.visualstudio.com . I used the most recent version. Install using dism. To perform the installation from the FOD ISO you must first mount the ISO. Then use the /source: option to the dism command. Note, the /source: option must be after the /add-capability…
Overview A storage migration is eventually going to get to a phase where the old datastores need to be unmounted and detached from hosts. I found a script showing how to do this via PowerCLI, but I wanted to expand on it to better serve my use case. What I came up with is below and also on my github . When running the script you must specify the vCenter name and the folder containing the…
What are PowerShell Functions PowerShell functions are similar to scripts, but can be loaded into a PowerShell profile or manually when needed. Once loaded, the function can be run by merely typing the name. This differs from a ps1 script where you must specify the file path when executing. More detailed information about PowerShell functions can be found on Microsoft’s site. Loading…
Windows 10 Snap Window Feature I use MS Outlook and Windows 10 at work. I also use Linux and a tiling window manager at home. I long for the day that Windows can manage windows in that way. It’s getting better though. I make use of the windows-key snap window feature in Windows 10 all day everyday (that I’m at work). It’s as close to a tiling window manager as MS Windows has ever…
Overview I like using an old fashioned desktop machine at home. It’s always on and acts as a hub machine, or “server” , if you will. Unfortunately, my current home isn’t cabled with Ethernet, and I’ve recently rearranged furniture and needed a wireless card. We had a TP-Link TL-WN725N laying around and decided to use that. I’m using Arch Linux and do all…
Overview Changing NTFS permissions with PowerShell saves a lot of time when you need to make changes to a large group of files or when it is required as part of a larger automation project. This article should help you understand everything you need to know to manipulate security permissions with PowerShell. When changing ownership of files or folders you must run PowerShell as an Administrator.…
Account Locked? A good domain security policy is to expire passwords every 30-180 days. Another good security practice is to lockout an account after 3-5 failed logon attempts. This keeps an attacker from quickly trying to “brute force” a user’s password. This can also create a scenario where a cached credential causes a user account to be repeatedly locked after a password…
1. What are jumbo frames? Some network devices allow the standard size of an Ethernet packet to be changed. By default each network packet can carry 1500 bytes of data (also referred to as the packet’s payload). Any payload larger than 1500 bytes sent over the network will be split into more than one packet. If we enable jumbo frames we reduce the number of packets sent over the network when…
VirtualBox VirtualBox is an open source virtualization product that allows you to run VMs on your desktop for free. It works extremely well and allows you to run almost every modern operating system. Unfortunately, it isn’t quite as polished as other products such as VMware Workstation . To make a virtual disk larger we need to power off our VM and go to the command line. Prerequisites We…
Overview Virtualization makes it easy to add more disk capacity to a virtual machine. Extending a virtual disk in VMware will grant the VM access to more storage, but we still have to make that storage usable to the operating system. This post will explain the steps required to make this additional storage usable within a Linux virtual machine. These steps work with both CentOS7 and Ubuntu 16 and…
We Deserve Better When you work with Linux servers, routers, switches, virtualization hosts, and SANs you’ll find yourself using SSH often. When you also work with Windows Servers, Exchange, Active Directory, etc you’ll find yourself in PowerShell often. More often than not I find myself on a Windows machine working on all of the above, but if you’ve spent much time using a Linux…
Self-Hosted WordPress on Ubuntu 16.04LTS There are a lot of good reasons to use a hosting provider for your website or blog. A hosting provider will give you a platform to host your site without the responsibility of maintaining a server or needing to know the low level configuration details of the server software and WordPress. But, if you’re a little bit technical, want to learn to be a…
LINUX TOP The Linux TOP command provides valuable monitoring and troubleshooting information. However, there is a lot of information in a very condensed format and it can be tricky to sort through what is important and what isn’t. This post was written using Ubuntu 16.04.2 LTS and TOP 3.3.10. THE TOP OF TOP 1. top - 18:45:48 up 14 days, 2:31, 1 user, load average: 0.00, 0.00, 0.00 2. Tasks:…
USING lsb_release TO DISPLAY THE RUNNING UBUNTU VERSION This is a QuickPost™ (not really trademarked), and I’ll get to the point. To find out what version of Ubuntu a system is running use the command lsb_release . This isn’t something you’ll need everyday, but when you do it’s good to know. There several options when running lsb_release , but the two you’re most…
WHAT IS DNS A Domain Name Service (DNS) is a critical service that everyone uses every time they surf the web. Before we get into the technical details let’s talk about telephone numbers. PHONE BOOK ANALOGY DNS is similar to a phone book. In the long, long ago when you needed to call someone and didn’t already know their number you had to look them up by name in a telephone book, see…
HTTP/2 ON CENTOS7 WITH NGINX You’ve probably heard about the fancy new lightning fast HTTP/2 protocol, right? Fortunately, the latest versions of NGINX support HTTP/2. Unfortunately, most distributions are still stuck on OpenSSL < 1.0.2. Versions of OpenSSL below 1.0.2 don’t support the new Application-Layer Protocol Negotition standard (ALPN) which means browsers must use Next…
INSTALL CERTBOT (official instructions at certbot.eff.org ) There is no packaged version of certbot for Amazon Linux so we have to download and set it up manually. Running it the first time will install all dependencies and should then work to create and renew certificates. Unfortunately, the first run on Amazon Linux gives us and error instead of a working certbot. :(
WHAT IS SSL? SSL is short for Secure Sockets Layer and provides a means to communicate securely from one device to another. The website server is identified by a certificate and uses a public and private key to create a secure connection between the client and server.