BlogWikiAbout

Kyle Pericak

"It works in my environment"

Adding Virtio drivers for KVM to RHEL's initrd

Adding Virtio drivers for KVM to RHEL's initrd

Created: 2020-10-21, Modified: 2020-10-21

Fix a RHEL VM that drops to the dracut prompt after migrating to KVM or OpenStack by chrooting in and injecting virtio drivers into the initrd with dracut.

OpenStack: Fixing the CLI (python2) error: No module named queue

OpenStack: Fixing the CLI (python2) error: No module named queue

Created: 2020-06-25, Modified: 2020-06-25

Fix the broken python-openstackclient install on Ubuntu 18.04 by swapping `import queue` for `from multiprocessing import Queue as queue` in the SDK files.

AWS CodeBuild CICD - Deploy to Lambda

AWS CodeBuild CICD - Deploy to Lambda

Created: 2020-01-27, Modified: 2020-01-27

Build a CI/CD pipeline for Python Lambda functions using CodeCommit, CodeBuild, and AWS SAM templates to test and auto-deploy on every commit.

OpenStack Cloudbase-init: PowerShell user_data Scripts

OpenStack Cloudbase-init: PowerShell user_data Scripts

Created: 2020-01-25, Modified: 2020-01-25

How to run PowerShell scripts via Cloudbase-init user_data when deploying Windows instances in OpenStack. Covers the #ps1 script format and the --user-data launch flag.

Authenticating with AWS IAM in AWS API Gateway

Authenticating with AWS IAM in AWS API Gateway

Created: 2020-01-21, Modified: 2020-01-21

Lock down an AWS API Gateway endpoint with IAM auth, wire it to a Python Lambda, and call it from a signed client using policies and access keys.

CodePipeline - Continuous Delivery to AWS ECR

CodePipeline - Continuous Delivery to AWS ECR

Created: 2020-01-15, Modified: 2020-01-15

Wire up AWS CodeCommit, CodePipeline, and CodeBuild with a buildspec.yml to auto-build Docker images and push them to ECR on every commit.

Create & Terminate EC2 Instances from Python

Create & Terminate EC2 Instances from Python

Created: 2020-01-09, Modified: 2020-01-09

Launch and terminate EC2 instances from Python using boto3, with a working example covering Ubuntu AMIs, security groups, tags, and wait_until_running.

IAM Auth for Lambda

IAM Auth for Lambda

Created: 2020-01-09, Modified: 2020-01-09

Restrict access to a specific AWS Lambda function using an IAM policy scoped to its ARN, then invoke it from Python with boto3 and access keys.

AWS Lambda - Basics

AWS Lambda - Basics

Created: 2020-01-08, Modified: 2020-01-08

Create your first AWS Lambda function in Python, define a test event, and understand pricing per request and per GB-second of execution duration.

Injecting KVM Drivers to Windows 10 for OpenStack

Injecting KVM Drivers to Windows 10 for OpenStack

Created: 2019-12-17, Modified: 2019-12-17

Inject VirtIO KVM drivers (viostor, Balloon, NetKVM) into a Windows 10 VHDX image with Dism so it can boot on OpenStack Glance after qcow2 conversion.

Operating OpenStack from Ansible

Operating OpenStack from Ansible

Created: 2019-12-03, Modified: 2019-12-03

Automate OpenStack workloads with Ansible os_ modules. Covers auth, projects, users, quotas, networks, volumes, and launching VMs on an existing cloud.

Google Cloud Firestore Basics - Python

Google Cloud Firestore Basics - Python

Created: 2019-10-14, Modified: 2019-10-14

Read and write Google Cloud Firestore documents from Python, with pricing comparisons against Datastore mode and a walk through collections and references.

Google Cloud Functions: Basics

Google Cloud Functions: Basics

Created: 2019-10-11, Modified: 2019-10-11

Deploy a Python 3.7 HTTP-triggered Google Cloud Function that returns the caller's IP, with notes on pricing, invocation costs, and testing from the console.

Using AWS S3 from Python

Using AWS S3 from Python

Created: 2019-09-26, Modified: 2019-09-26

Upload and download files to AWS S3 from Python using boto3, with IAM policies, user groups, and a dedicated service account for programmatic access.

AWS Fargate - Basics

AWS Fargate - Basics

Created: 2019-09-10, Modified: 2019-09-10

Step-by-step for launching a Docker container on AWS ECS Fargate from the web console, including task definitions, load balancer setup, and ECR image URLs.

AWS ECR - Elastic Container Registry - Basics

AWS ECR - Elastic Container Registry - Basics

Created: 2019-08-26, Modified: 2019-09-19

Set up an AWS Elastic Container Registry repo, create least-privilege IAM groups for push and pull access, and connect Docker using the AWS CLI.

Modifying OpenStack Kolla Docker Images

Modifying OpenStack Kolla Docker Images

Created: 2019-08-26, Modified: 2019-08-26

Add the Pure Storage Cinder plugin to a Kolla OpenStack image with a Jinja2 template override, keeping the upstream Kolla source untouched.

Install Non-Prod OpenStack on a Physical Server

Install Non-Prod OpenStack on a Physical Server

Created: 2019-08-13, Modified: 2019-08-13

Step-by-step Kolla-Ansible install of OpenStack Rocky on a single Ubuntu 18.04 server with Keystone, Nova, Neutron, Cinder LVM, Heat, and Magnum.

Install OpenStack with Kolla-Ansible in a VM

Install OpenStack with Kolla-Ansible in a VM

Created: 2019-08-11, Modified: 2019-08-11

Build a throwaway OpenStack Rocky dev cloud inside a single Ubuntu 18.04 VM using Kolla-Ansible, Cinder LVM, and a VLAN provider network.

Google Cloud Storage: Website Hosting

Google Cloud Storage: Website Hosting

Created: 2019-08-09, Modified: 2019-08-09

Host a static site on Google Cloud Storage with Search Console domain verification, bucket setup, a CNAME to c.storage.googleapis.com, and real pricing numbers.

Google Cloud Build: Basics

Google Cloud Build: Basics

Created: 2019-08-06, Modified: 2019-12-05

Intro to Google Cloud Build with real cloudbuild.yaml examples for pushing Docker images to GCR and rsyncing a static site to Cloud Storage on every Git commit.

Google Container Registry: Basics

Google Container Registry: Basics

Created: 2019-08-05, Modified: 2019-08-05

Getting started with Google Container Registry, covering why GCR beats a self-hosted Docker registry, setting up service accounts, and Docker auth via gcloud.

Blog code last updated on 2026-04-16: 8579f34f0a3ec5b8043d5eade8e87124d41cf83b