Are you over 18 and want to see adult content?
More Annotations
A complete backup of leasingoptions.co.uk
Are you over 18 and want to see adult content?
A complete backup of barristerandmann.com
Are you over 18 and want to see adult content?
A complete backup of maisesports.com.br
Are you over 18 and want to see adult content?
A complete backup of adventistfaith.com
Are you over 18 and want to see adult content?
A complete backup of elcolombiano.com
Are you over 18 and want to see adult content?
A complete backup of centrointerapia.it
Are you over 18 and want to see adult content?
Favourite Annotations
A complete backup of tischlerforum.info
Are you over 18 and want to see adult content?
A complete backup of laurainthekitchen.com
Are you over 18 and want to see adult content?
A complete backup of bluebacksquare.com
Are you over 18 and want to see adult content?
A complete backup of forumsbeitrage.com
Are you over 18 and want to see adult content?
A complete backup of allaboutbeer.com
Are you over 18 and want to see adult content?
Text
repository).
CONFIGURING LINUX POLICY ROUTING USING ANSIBLE Configuring Linux Policy Routing using Ansible Published on 16 Jun 2016 · Filed in Explanation · 637 words (estimated 3 minutes to read) In this post, I’m going to talk about using Ansible to configure policy routing on Linux. If you’re not familiar with Linux policy routing, have a look at this post, and also review this post for one potential use case (I’m sure there are a number of A QUICK INTRODUCTION TO LINUX POLICY ROUTING USING VAGRANT WITH AZURE USING VLANS WITH OVS AND LIBVIRT REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. USING KUBECTL VIA AN SSH TUNNEL Using kubectl via an SSH Tunnel Published on 16 Jun 2020 · Filed in Tutorial · 700 words (estimated 4 minutes to read) In this post, I’d like to share one way (not the only way!) to use kubectl to access your Kubernetes cluster via an SSH tunnel. In the future, I may explore some other ways (hit me on Twitter if you’re interested). I’m sharing this information because I suspect it is USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three REVIEW: CPLAY2AIR WIRELESS CARPLAY ADAPTER Review: CPLAY2air Wireless CarPlay Adapter Published on 10 Nov 2020 · Filed in Review · 363 words (estimated 2 minutes to read) In late September, I was given a MANUALLY LOADING CONTAINER IMAGES WITH CONTAINERD Manually Loading Container Images with containerD Published on 25 Jan 2020 · Filed in Tutorial · 760 words (estimated 4 minutes to read) I recently had a need to manually load some container images into a Linux system running containerd (instead of Docker) as the container runtime.I say “manually load some images” because this system was isolated from the Internet, and so simply AN INTRODUCTION TO KUSTOMIZE An Introduction to Kustomize Published on 13 Sep 2019 · Filed in Explanation · 991 words (estimated 5 minutes to read) kustomize is a tool designed to let users “customize raw, template-free YAML files for multiple purposes, leaving the original YAML untouched and usable as is” (wording taken directly from the kustomize GitHubrepository).
CONFIGURING LINUX POLICY ROUTING USING ANSIBLE Configuring Linux Policy Routing using Ansible Published on 16 Jun 2016 · Filed in Explanation · 637 words (estimated 3 minutes to read) In this post, I’m going to talk about using Ansible to configure policy routing on Linux. If you’re not familiar with Linux policy routing, have a look at this post, and also review this post for one potential use case (I’m sure there are a number of A QUICK INTRODUCTION TO LINUX POLICY ROUTING USING VAGRANT WITH AZURE USING VLANS WITH OVS AND LIBVIRT REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three USING POSTMAN TO LAUNCH AN EC2 INSTANCE VIA API CALLS Using Postman to Launch an EC2 Instance via API Calls Published on 10 Apr 2020 · Filed in Explanation · 2027 words (estimated 10 minutes to read) As I mentioned in this post on region and endpoint match in AWS API requests, exploring the AWS APIs is something I’ve been doing off and on for several months.There’s a couple reasons for this; I’ll go into those in a bit more detail shortly. USING DOCKER MACHINE WITH AWS Using Docker Machine with AWS Published on 22 Mar 2016 · Filed in Tutorial · 789 words (estimated 4 minutes to read) As part of a broader effort (see the post on my 2016 projects) to leverage public cloud resources more than I have in the past, some Docker Engine-related testing I’ve been conducting recently has been done using AWS EC2 instances instead of VMs in my home lab. USING KVM WITH LIBVIRT AND MACVTAP INTERFACES You would use the virsh net-define command with this XML to define the actual Libvirt network. Assuming the XML code above was stored in a file named macvtap-def.xml, you’d run this command:. virsh net-define macvtap-def.xml Then you’d set the resulting Libvirtnetwork to
REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. ADDING A NAME TO THE KUBERNETES API SERVER CERTIFICATE Adding a Name to the Kubernetes API Server Certificate Published on 30 Jul 2019 · Filed in Tutorial · 1337 words (estimated 7 minutes to read) In this post, I’m going to walk you through how to add a name (specifically, a Subject Alternative Name) to the TLS certificate usedby the Kubernetes
UNDERSTANDING NPIV AND NPV Understanding NPIV and NPV Published on 27 Nov 2009 · Filed in Education · 1266 words (estimated 6 minutes to read) Two technologies that seem to have come to the fore recently are NPIV (N_Port ID Virtualization) and NPV (N_Port Virtualization). AN INTRODUCTION TO TERRAFORM An Introduction to Terraform Published on 25 Nov 2015 · Filed in Education · 1539 words (estimated 8 minutes to read) In this post, I’m going to provide a quick introduction to Terraform, a tool that is used to provision and configure infrastructure.Terraform allows you to define infrastructure configurations and then have those configurations implemented/created by Terraform automatically. REMOTELY SETTING THE DNS SUFFIX SEARCH ORDER Remotely Setting the DNS Suffix Search Order Published on 6 Jul 2006 Filed in Education · 732 words (estimated 4 minutes to read) Invariably, larger organizations end up with a fragmented DNS namespace that has grown over the years due to name changes andacquisitions.
DISABLING AD REPLICATION Disabling AD Replication Published on 2 Aug 2006 · Filed in Tutorial 295 words (estimated 2 minutes to read) Replication is bidirectional, occurring both inbound and outbound. Each of these directions can be disabled/enabled indepedently of the other using the repadmin command. The repadmin command is part of the support tools, included on the Windows 2000 and Windows Server USING KUBECTL VIA AN SSH TUNNEL Using kubectl via an SSH Tunnel Published on 16 Jun 2020 · Filed in Tutorial · 700 words (estimated 4 minutes to read) In this post, I’d like to share one way (not the only way!) to use kubectl to access your Kubernetes cluster via an SSH tunnel. In the future, I may explore some other ways (hit me on Twitter if you’re interested). I’m sharing this information because I suspect it is USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three REVIEW: CPLAY2AIR WIRELESS CARPLAY ADAPTER Review: CPLAY2air Wireless CarPlay Adapter Published on 10 Nov 2020 · Filed in Review · 363 words (estimated 2 minutes to read) In late September, I was given a MANUALLY LOADING CONTAINER IMAGES WITH CONTAINERD Manually Loading Container Images with containerD Published on 25 Jan 2020 · Filed in Tutorial · 760 words (estimated 4 minutes to read) I recently had a need to manually load some container images into a Linux system running containerd (instead of Docker) as the container runtime.I say “manually load some images” because this system was isolated from the Internet, and so simply AN INTRODUCTION TO KUSTOMIZE An Introduction to Kustomize Published on 13 Sep 2019 · Filed in Explanation · 991 words (estimated 5 minutes to read) kustomize is a tool designed to let users “customize raw, template-free YAML files for multiple purposes, leaving the original YAML untouched and usable as is” (wording taken directly from the kustomize GitHubrepository).
CONFIGURING LINUX POLICY ROUTING USING ANSIBLE Configuring Linux Policy Routing using Ansible Published on 16 Jun 2016 · Filed in Explanation · 637 words (estimated 3 minutes to read) In this post, I’m going to talk about using Ansible to configure policy routing on Linux. If you’re not familiar with Linux policy routing, have a look at this post, and also review this post for one potential use case (I’m sure there are a number of A QUICK INTRODUCTION TO LINUX POLICY ROUTING USING VAGRANT WITH AZURE USING VLANS WITH OVS AND LIBVIRT REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. USING KUBECTL VIA AN SSH TUNNEL Using kubectl via an SSH Tunnel Published on 16 Jun 2020 · Filed in Tutorial · 700 words (estimated 4 minutes to read) In this post, I’d like to share one way (not the only way!) to use kubectl to access your Kubernetes cluster via an SSH tunnel. In the future, I may explore some other ways (hit me on Twitter if you’re interested). I’m sharing this information because I suspect it is USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three REVIEW: CPLAY2AIR WIRELESS CARPLAY ADAPTER Review: CPLAY2air Wireless CarPlay Adapter Published on 10 Nov 2020 · Filed in Review · 363 words (estimated 2 minutes to read) In late September, I was given a MANUALLY LOADING CONTAINER IMAGES WITH CONTAINERD Manually Loading Container Images with containerD Published on 25 Jan 2020 · Filed in Tutorial · 760 words (estimated 4 minutes to read) I recently had a need to manually load some container images into a Linux system running containerd (instead of Docker) as the container runtime.I say “manually load some images” because this system was isolated from the Internet, and so simply AN INTRODUCTION TO KUSTOMIZE An Introduction to Kustomize Published on 13 Sep 2019 · Filed in Explanation · 991 words (estimated 5 minutes to read) kustomize is a tool designed to let users “customize raw, template-free YAML files for multiple purposes, leaving the original YAML untouched and usable as is” (wording taken directly from the kustomize GitHubrepository).
CONFIGURING LINUX POLICY ROUTING USING ANSIBLE Configuring Linux Policy Routing using Ansible Published on 16 Jun 2016 · Filed in Explanation · 637 words (estimated 3 minutes to read) In this post, I’m going to talk about using Ansible to configure policy routing on Linux. If you’re not familiar with Linux policy routing, have a look at this post, and also review this post for one potential use case (I’m sure there are a number of A QUICK INTRODUCTION TO LINUX POLICY ROUTING USING VAGRANT WITH AZURE USING VLANS WITH OVS AND LIBVIRT REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three USING POSTMAN TO LAUNCH AN EC2 INSTANCE VIA API CALLS Using Postman to Launch an EC2 Instance via API Calls Published on 10 Apr 2020 · Filed in Explanation · 2027 words (estimated 10 minutes to read) As I mentioned in this post on region and endpoint match in AWS API requests, exploring the AWS APIs is something I’ve been doing off and on for several months.There’s a couple reasons for this; I’ll go into those in a bit more detail shortly. USING DOCKER MACHINE WITH AWS Using Docker Machine with AWS Published on 22 Mar 2016 · Filed in Tutorial · 789 words (estimated 4 minutes to read) As part of a broader effort (see the post on my 2016 projects) to leverage public cloud resources more than I have in the past, some Docker Engine-related testing I’ve been conducting recently has been done using AWS EC2 instances instead of VMs in my home lab. USING KVM WITH LIBVIRT AND MACVTAP INTERFACES You would use the virsh net-define command with this XML to define the actual Libvirt network. Assuming the XML code above was stored in a file named macvtap-def.xml, you’d run this command:. virsh net-define macvtap-def.xml Then you’d set the resulting Libvirtnetwork to
REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. ADDING A NAME TO THE KUBERNETES API SERVER CERTIFICATE Adding a Name to the Kubernetes API Server Certificate Published on 30 Jul 2019 · Filed in Tutorial · 1337 words (estimated 7 minutes to read) In this post, I’m going to walk you through how to add a name (specifically, a Subject Alternative Name) to the TLS certificate usedby the Kubernetes
UNDERSTANDING NPIV AND NPV Understanding NPIV and NPV Published on 27 Nov 2009 · Filed in Education · 1266 words (estimated 6 minutes to read) Two technologies that seem to have come to the fore recently are NPIV (N_Port ID Virtualization) and NPV (N_Port Virtualization). AN INTRODUCTION TO TERRAFORM An Introduction to Terraform Published on 25 Nov 2015 · Filed in Education · 1539 words (estimated 8 minutes to read) In this post, I’m going to provide a quick introduction to Terraform, a tool that is used to provision and configure infrastructure.Terraform allows you to define infrastructure configurations and then have those configurations implemented/created by Terraform automatically. REMOTELY SETTING THE DNS SUFFIX SEARCH ORDER Remotely Setting the DNS Suffix Search Order Published on 6 Jul 2006 Filed in Education · 732 words (estimated 4 minutes to read) Invariably, larger organizations end up with a fragmented DNS namespace that has grown over the years due to name changes andacquisitions.
DISABLING AD REPLICATION Disabling AD Replication Published on 2 Aug 2006 · Filed in Tutorial 295 words (estimated 2 minutes to read) Replication is bidirectional, occurring both inbound and outbound. Each of these directions can be disabled/enabled indepedently of the other using the repadmin command. The repadmin command is part of the support tools, included on the Windows 2000 and Windows Server USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three REVIEW: CPLAY2AIR WIRELESS CARPLAY ADAPTER Review: CPLAY2air Wireless CarPlay Adapter Published on 10 Nov 2020 · Filed in Review · 363 words (estimated 2 minutes to read) In late September, I was given a USING KUBECTL VIA AN SSH TUNNEL Using kubectl via an SSH Tunnel Published on 16 Jun 2020 · Filed in Tutorial · 700 words (estimated 4 minutes to read) In this post, I’d like to share one way (not the only way!) to use kubectl to access your Kubernetes cluster via an SSH tunnel. In the future, I may explore some other ways (hit me on Twitter if you’re interested). I’m sharing this information because I suspect it is AN INTRODUCTION TO KUSTOMIZE An Introduction to Kustomize Published on 13 Sep 2019 · Filed in Explanation · 991 words (estimated 5 minutes to read) kustomize is a tool designed to let users “customize raw, template-free YAML files for multiple purposes, leaving the original YAML untouched and usable as is” (wording taken directly from the kustomize GitHubrepository).
MANUALLY LOADING CONTAINER IMAGES WITH CONTAINERD Manually Loading Container Images with containerD Published on 25 Jan 2020 · Filed in Tutorial · 760 words (estimated 4 minutes to read) I recently had a need to manually load some container images into a Linux system running containerd (instead of Docker) as the container runtime.I say “manually load some images” because this system was isolated from the Internet, and so simply A QUICK INTRODUCTION TO LINUX POLICY ROUTING USING VAGRANT WITH AZURE USING VLANS WITH OVS AND LIBVIRT OVS INTEGRATION WITH DEBIAN NETWORK SCRIPTS OVS Integration with Debian Network Scripts Published on 30 Jun 2016 Filed in Explanation · 544 words (estimated 3 minutes to read) I had a reader contact me recently with some questions regarding the use of Open vSwitch (OVS) on Debian “Jessie” 8.5 and using the OVS integration with the Debian network scripts. For those of you that might be unfamiliar with this functionality, it’s REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three REVIEW: CPLAY2AIR WIRELESS CARPLAY ADAPTER Review: CPLAY2air Wireless CarPlay Adapter Published on 10 Nov 2020 · Filed in Review · 363 words (estimated 2 minutes to read) In late September, I was given a USING KUBECTL VIA AN SSH TUNNEL Using kubectl via an SSH Tunnel Published on 16 Jun 2020 · Filed in Tutorial · 700 words (estimated 4 minutes to read) In this post, I’d like to share one way (not the only way!) to use kubectl to access your Kubernetes cluster via an SSH tunnel. In the future, I may explore some other ways (hit me on Twitter if you’re interested). I’m sharing this information because I suspect it is AN INTRODUCTION TO KUSTOMIZE An Introduction to Kustomize Published on 13 Sep 2019 · Filed in Explanation · 991 words (estimated 5 minutes to read) kustomize is a tool designed to let users “customize raw, template-free YAML files for multiple purposes, leaving the original YAML untouched and usable as is” (wording taken directly from the kustomize GitHubrepository).
MANUALLY LOADING CONTAINER IMAGES WITH CONTAINERD Manually Loading Container Images with containerD Published on 25 Jan 2020 · Filed in Tutorial · 760 words (estimated 4 minutes to read) I recently had a need to manually load some container images into a Linux system running containerd (instead of Docker) as the container runtime.I say “manually load some images” because this system was isolated from the Internet, and so simply A QUICK INTRODUCTION TO LINUX POLICY ROUTING USING VAGRANT WITH AZURE USING VLANS WITH OVS AND LIBVIRT OVS INTEGRATION WITH DEBIAN NETWORK SCRIPTS OVS Integration with Debian Network Scripts Published on 30 Jun 2016 Filed in Explanation · 544 words (estimated 3 minutes to read) I had a reader contact me recently with some questions regarding the use of Open vSwitch (OVS) on Debian “Jessie” 8.5 and using the OVS integration with the Debian network scripts. For those of you that might be unfamiliar with this functionality, it’s REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. USING POSTMAN TO LAUNCH AN EC2 INSTANCE VIA API CALLS Using Postman to Launch an EC2 Instance via API Calls Published on 10 Apr 2020 · Filed in Explanation · 2027 words (estimated 10 minutes to read) As I mentioned in this post on region and endpoint match in AWS API requests, exploring the AWS APIs is something I’ve been doing off and on for several months.There’s a couple reasons for this; I’ll go into those in a bit more detail shortly. USING EXTERNAL ETCD WITH CLUSTER API ON AWS Using External Etcd with Cluster API on AWS Published on 23 Apr 2020 Filed in Explanation · 1221 words (estimated 6 minutes to read) If you’ve used Cluster API (CAPI), you may have noticed that workload clusters created by CAPI use, by default, a “stacked master” configuration—that is, the etcd cluster is running co-located on the control plane node(s) alongside the Kubernetes BEHAVIOR CHANGES IN CLUSTERAWSADM 0.5.5 Behavior Changes in clusterawsadm 0.5.5 Published on 31 Aug 2020 · Filed in Information · 643 words (estimated 4 minutes to read) Late last week I needed to test some Kubernetes functionality, so I thought I’d spin up a test cluster really quick using Cluster API (CAPI).As often happens with fast-moving projects like Kubernetes and CAPI, my existing CAPI environment had gotten a little out CLONING ALL REPOSITORIES IN A GITHUB ORGANIZATION Cloning All Repositories in a GitHub Organization Published on 19 Jul 2018 · Filed in Explanation · 407 words (estimated 2 minutes to read) I’ve recently started playing around with Ballerina, and upon the suggestion of some folks on Twitter wanted to clone down some of the “official” Ballerina GitHub repositories to provide code examples and guides that would assist in my learning. USING KVM WITH LIBVIRT AND MACVTAP INTERFACES You would use the virsh net-define command with this XML to define the actual Libvirt network. Assuming the XML code above was stored in a file named macvtap-def.xml, you’d run this command:. virsh net-define macvtap-def.xml Then you’d set the resulting Libvirtnetwork to
A QUICK INTRODUCTION TO LINUX POLICY ROUTING A Quick Introduction to Linux Policy Routing Published on 29 May 2013 Filed in Education · 981 words (estimated 5 minutes to read) In this post, I’m going to introduce you to policy routing as implemented in recent versions of Ubuntu Linux (and possibly other Linux distributions as well, but I’ll be using Ubuntu 12.04 LTS). USING DOCKER MACHINE WITH AWS Using Docker Machine with AWS Published on 22 Mar 2016 · Filed in Tutorial · 789 words (estimated 4 minutes to read) As part of a broader effort (see the post on my 2016 projects) to leverage public cloud resources more than I have in the past, some Docker Engine-related testing I’ve been conducting recently has been done using AWS EC2 instances instead of VMs in my home lab. ADDING A NAME TO THE KUBERNETES API SERVER CERTIFICATE Adding a Name to the Kubernetes API Server Certificate Published on 30 Jul 2019 · Filed in Tutorial · 1337 words (estimated 7 minutes to read) In this post, I’m going to walk you through how to add a name (specifically, a Subject Alternative Name) to the TLS certificate usedby the Kubernetes
AN IMPROVED WAY TO USE YAML WITH VAGRANT An Improved Way to use YAML with Vagrant Published on 14 Jan 2016 · Filed in Explanation · 555 words (estimated 3 minutes to read) In this post, I’d like to share with you an improved way to use YAML with Vagrant.I first discussed the use of YAML with Vagrant in a post on simplifying multi-machine Vagrant environments, where I simply factored out variable data into an external YAML file. LACP WITH CISCO SWITCHES AND NETAPP VIFS LACP with Cisco Switches and NetApp VIFs Published on 8 Jan 2008 · Filed in Tutorial · 339 words (estimated 2 minutes to read) In my previous article about using NetApp multi-mode VIFs with Cisco switches, I mentioned that you could—at that time—only use 802.3ad static link aggregation:. Be aware that Data ONTAP’s multi-mode VIFs are only compatible with static 802.3ad link aggregation USING KUBECTL VIA AN SSH TUNNEL Using kubectl via an SSH Tunnel Published on 16 Jun 2020 · Filed in Tutorial · 700 words (estimated 4 minutes to read) In this post, I’d like to share one way (not the only way!) to use kubectl to access your Kubernetes cluster via an SSH tunnel. In the future, I may explore some other ways (hit me on Twitter if you’re interested). I’m sharing this information because I suspect it is REVIEW: CPLAY2AIR WIRELESS CARPLAY ADAPTER Review: CPLAY2air Wireless CarPlay Adapter Published on 10 Nov 2020 · Filed in Review · 363 words (estimated 2 minutes to read) In late September, I was given a USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three MANUALLY LOADING CONTAINER IMAGES WITH CONTAINERD Manually Loading Container Images with containerD Published on 25 Jan 2020 · Filed in Tutorial · 760 words (estimated 4 minutes to read) I recently had a need to manually load some container images into a Linux system running containerd (instead of Docker) as the container runtime.I say “manually load some images” because this system was isolated from the Internet, and so simply USING VLANS WITH OVS AND LIBVIRT A QUICK INTRODUCTION TO LINUX POLICY ROUTING USING VAGRANT WITH AZURE CONFIGURING LINUX POLICY ROUTING USING ANSIBLE Configuring Linux Policy Routing using Ansible Published on 16 Jun 2016 · Filed in Explanation · 637 words (estimated 3 minutes to read) In this post, I’m going to talk about using Ansible to configure policy routing on Linux. If you’re not familiar with Linux policy routing, have a look at this post, and also review this post for one potential use case (I’m sure there are a number of REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. INTRODUCING LINUX NETWORK NAMESPACES USING KUBECTL VIA AN SSH TUNNEL Using kubectl via an SSH Tunnel Published on 16 Jun 2020 · Filed in Tutorial · 700 words (estimated 4 minutes to read) In this post, I’d like to share one way (not the only way!) to use kubectl to access your Kubernetes cluster via an SSH tunnel. In the future, I may explore some other ways (hit me on Twitter if you’re interested). I’m sharing this information because I suspect it is REVIEW: CPLAY2AIR WIRELESS CARPLAY ADAPTER Review: CPLAY2air Wireless CarPlay Adapter Published on 10 Nov 2020 · Filed in Review · 363 words (estimated 2 minutes to read) In late September, I was given a USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three MANUALLY LOADING CONTAINER IMAGES WITH CONTAINERD Manually Loading Container Images with containerD Published on 25 Jan 2020 · Filed in Tutorial · 760 words (estimated 4 minutes to read) I recently had a need to manually load some container images into a Linux system running containerd (instead of Docker) as the container runtime.I say “manually load some images” because this system was isolated from the Internet, and so simply USING VLANS WITH OVS AND LIBVIRT A QUICK INTRODUCTION TO LINUX POLICY ROUTING USING VAGRANT WITH AZURE CONFIGURING LINUX POLICY ROUTING USING ANSIBLE Configuring Linux Policy Routing using Ansible Published on 16 Jun 2016 · Filed in Explanation · 637 words (estimated 3 minutes to read) In this post, I’m going to talk about using Ansible to configure policy routing on Linux. If you’re not familiar with Linux policy routing, have a look at this post, and also review this post for one potential use case (I’m sure there are a number of REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. INTRODUCING LINUX NETWORK NAMESPACESSCOTT'S WEBLOG
Review: 2020 M1-Based MacBook Pro 2 Jun 2021. I hadn’t done a personal hardware refresh in a while; my laptop was a 2017-era MacBook Pro (with the much-disliked butterfly keyboard) and my tablet was a 2014-era iPad Air 2. USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three USING WIREGUARD ON MACOS Using WireGuard on macOS Published on 1 Apr 2021 · Filed in Tutorial 675 words (estimated 4 minutes to read) A short while ago I published a post on setting up WireGuard for AWS VPC access.In that post, I focused on the use of Linux on both the server side (on an EC2 instance in your AWS VPC) as well as on the client side (using the GNOME Network Manager interface). AN INTRODUCTION TO KUSTOMIZE An Introduction to Kustomize Published on 13 Sep 2019 · Filed in Explanation · 991 words (estimated 5 minutes to read) kustomize is a tool designed to let users “customize raw, template-free YAML files for multiple purposes, leaving the original YAML untouched and usable as is” (wording taken directly from the kustomize GitHubrepository).
DEPLOYING A CNI AUTOMATICALLY WITH A CLUSTERRESOURCESET Deploying a CNI Automatically with a ClusterResourceSet Published on 2 Mar 2021 · Filed in Tutorial · 1061 words (estimated 5 minutes to read) Not too long ago I hosted an episode of TGIK8s, where I explored some features of Cluster API.One of the features I explored on the show was ClusterResourceSet, an experimental feature that allows users to automatically install additional CLONING ALL REPOSITORIES IN A GITHUB ORGANIZATION Cloning All Repositories in a GitHub Organization Published on 19 Jul 2018 · Filed in Explanation · 407 words (estimated 2 minutes to read) I’ve recently started playing around with Ballerina, and upon the suggestion of some folks on Twitter wanted to clone down some of the “official” Ballerina GitHub repositories to provide code examples and guides that would assist in my learning. REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. INTRODUCING LINUX NETWORK NAMESPACES Introducing Linux Network Namespaces Published on 4 Sep 2013 · Filed in Education · 1348 words (estimated 7 minutes to read) In this post, I’m going to introduce you to the concept of Linux networknamespaces.
USING DOCKER WITH VAGRANT Using Docker with Vagrant Published on 10 Feb 2015 · Filed in Tutorial · 1756 words (estimated 9 minutes to read) As part of my ongoing effort to create tools to assist others in learning some of the new technologies out there, I spent a bit of time today working through the use of Docker with Vagrant.Neither of these technologies should be new to my readers; I’ve already provided quick DISABLING AD REPLICATION Disabling AD Replication Published on 2 Aug 2006 · Filed in Tutorial 295 words (estimated 2 minutes to read) Replication is bidirectional, occurring both inbound and outbound. Each of these directions can be disabled/enabled indepedently of the other using the repadmin command. The repadmin command is part of the support tools, included on the Windows 2000 and Windows Server REVIEW: CPLAY2AIR WIRELESS CARPLAY ADAPTER Review: CPLAY2air Wireless CarPlay Adapter Published on 10 Nov 2020 · Filed in Review · 363 words (estimated 2 minutes to read) In late September, I was given a USING KUBECTL VIA AN SSH TUNNEL Using kubectl via an SSH Tunnel Published on 16 Jun 2020 · Filed in Tutorial · 700 words (estimated 4 minutes to read) In this post, I’d like to share one way (not the only way!) to use kubectl to access your Kubernetes cluster via an SSH tunnel. In the future, I may explore some other ways (hit me on Twitter if you’re interested). I’m sharing this information because I suspect it is USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three MANUALLY LOADING CONTAINER IMAGES WITH CONTAINERD Manually Loading Container Images with containerD Published on 25 Jan 2020 · Filed in Tutorial · 760 words (estimated 4 minutes to read) I recently had a need to manually load some container images into a Linux system running containerd (instead of Docker) as the container runtime.I say “manually load some images” because this system was isolated from the Internet, and so simply AN INTRODUCTION TO KUSTOMIZE An Introduction to Kustomize Published on 13 Sep 2019 · Filed in Explanation · 991 words (estimated 5 minutes to read) kustomize is a tool designed to let users “customize raw, template-free YAML files for multiple purposes, leaving the original YAML untouched and usable as is” (wording taken directly from the kustomize GitHubrepository).
DEPLOYING A CNI AUTOMATICALLY WITH A CLUSTERRESOURCESET Deploying a CNI Automatically with a ClusterResourceSet Published on 2 Mar 2021 · Filed in Tutorial · 1061 words (estimated 5 minutes to read) Not too long ago I hosted an episode of TGIK8s, where I explored some features of Cluster API.One of the features I explored on the show was ClusterResourceSet, an experimental feature that allows users to automatically install additional A QUICK INTRODUCTION TO LINUX POLICY ROUTING USING VLANS WITH OVS AND LIBVIRT USING VAGRANT WITH AZURE REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. REVIEW: CPLAY2AIR WIRELESS CARPLAY ADAPTER Review: CPLAY2air Wireless CarPlay Adapter Published on 10 Nov 2020 · Filed in Review · 363 words (estimated 2 minutes to read) In late September, I was given a USING KUBECTL VIA AN SSH TUNNEL Using kubectl via an SSH Tunnel Published on 16 Jun 2020 · Filed in Tutorial · 700 words (estimated 4 minutes to read) In this post, I’d like to share one way (not the only way!) to use kubectl to access your Kubernetes cluster via an SSH tunnel. In the future, I may explore some other ways (hit me on Twitter if you’re interested). I’m sharing this information because I suspect it is USING UNISON ACROSS LINUX, MACOS, AND WINDOWS Using Unison Across Linux, macOS, and Windows Published on 1 Jun 2020 Filed in Explanation · 705 words (estimated 4 minutes to read) I recently wrapped up an instance where I needed to use the Unison file synchronization application across Linux, macOS, and Windows. While Unison is available for all three platforms and does work across (and among) systems running all three MANUALLY LOADING CONTAINER IMAGES WITH CONTAINERD Manually Loading Container Images with containerD Published on 25 Jan 2020 · Filed in Tutorial · 760 words (estimated 4 minutes to read) I recently had a need to manually load some container images into a Linux system running containerd (instead of Docker) as the container runtime.I say “manually load some images” because this system was isolated from the Internet, and so simply AN INTRODUCTION TO KUSTOMIZE An Introduction to Kustomize Published on 13 Sep 2019 · Filed in Explanation · 991 words (estimated 5 minutes to read) kustomize is a tool designed to let users “customize raw, template-free YAML files for multiple purposes, leaving the original YAML untouched and usable as is” (wording taken directly from the kustomize GitHubrepository).
DEPLOYING A CNI AUTOMATICALLY WITH A CLUSTERRESOURCESET Deploying a CNI Automatically with a ClusterResourceSet Published on 2 Mar 2021 · Filed in Tutorial · 1061 words (estimated 5 minutes to read) Not too long ago I hosted an episode of TGIK8s, where I explored some features of Cluster API.One of the features I explored on the show was ClusterResourceSet, an experimental feature that allows users to automatically install additional A QUICK INTRODUCTION TO LINUX POLICY ROUTING USING VLANS WITH OVS AND LIBVIRT USING VAGRANT WITH AZURE REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article.SCOTT'S WEBLOG
Review: 2020 M1-Based MacBook Pro 2 Jun 2021. I hadn’t done a personal hardware refresh in a while; my laptop was a 2017-era MacBook Pro (with the much-disliked butterfly keyboard) and my tablet was a 2014-era iPad Air 2. USING POSTMAN TO LAUNCH AN EC2 INSTANCE VIA API CALLS Using Postman to Launch an EC2 Instance via API Calls Published on 10 Apr 2020 · Filed in Explanation · 2027 words (estimated 10 minutes to read) As I mentioned in this post on region and endpoint match in AWS API requests, exploring the AWS APIs is something I’ve been doing off and on for several months.There’s a couple reasons for this; I’ll go into those in a bit more detail shortly. A QUICK INTRODUCTION TO LINUX POLICY ROUTING A Quick Introduction to Linux Policy Routing Published on 29 May 2013 Filed in Education · 981 words (estimated 5 minutes to read) In this post, I’m going to introduce you to policy routing as implemented in recent versions of Ubuntu Linux (and possibly other Linux distributions as well, but I’ll be using Ubuntu 12.04 LTS). BEHAVIOR CHANGES IN CLUSTERAWSADM 0.5.5 Behavior Changes in clusterawsadm 0.5.5 Published on 31 Aug 2020 · Filed in Information · 643 words (estimated 4 minutes to read) Late last week I needed to test some Kubernetes functionality, so I thought I’d spin up a test cluster really quick using Cluster API (CAPI).As often happens with fast-moving projects like Kubernetes and CAPI, my existing CAPI environment had gotten a little out VXLAN AND LAYER 3 CONNECTIVITY VXLAN and Layer 3 Connectivity Published on 30 Nov 2011 · Filed in Explanation · 978 words (estimated 5 minutes to read) Note: I’ve posted a follow-up to this article with some corrected information. Please read here.. I’ve been doing quite a bit of networking-related reading over the last few weeks, and VXLAN has been a key topic of this networking-related reading (along with OTV, MPLS REMOVING OVS CONFIGURATION SETTINGS Removing OVS Configuration Settings Published on 21 Nov 2014 · Filed in Explanation · 436 words (estimated 3 minutes to read) I’ve written quite a bit about Open vSwitch (OVS), but I realized recently that despite all the articles I’ve written I still haven’t talked about how to remove a configuration setting to OVS. I’m fixing that now with this article. AN IMPROVED WAY TO USE YAML WITH VAGRANT An Improved Way to use YAML with Vagrant Published on 14 Jan 2016 · Filed in Explanation · 555 words (estimated 3 minutes to read) In this post, I’d like to share with you an improved way to use YAML with Vagrant.I first discussed the use of YAML with Vagrant in a post on simplifying multi-machine Vagrant environments, where I simply factored out variable data into an external YAML file. A HANDY GUI TOOL FOR WORKING WITH APIS A Handy GUI Tool for Working with APIs Published on 14 Nov 2015 · Filed in Education · 1097 words (estimated 6 minutes to read) In this post I’m going to share with you an OS X graphical application I found that makes it easier to work with RESTful APIs. ADDING A NAME TO THE KUBERNETES API SERVER CERTIFICATE Adding a Name to the Kubernetes API Server Certificate Published on 30 Jul 2019 · Filed in Tutorial · 1337 words (estimated 7 minutes to read) In this post, I’m going to walk you through how to add a name (specifically, a Subject Alternative Name) to the TLS certificate usedby the Kubernetes
DISABLING AD REPLICATION Disabling AD Replication Published on 2 Aug 2006 · Filed in Tutorial 295 words (estimated 2 minutes to read) Replication is bidirectional, occurring both inbound and outbound. Each of these directions can be disabled/enabled indepedently of the other using the repadmin command. The repadmin command is part of the support tools, included on the Windows 2000 and Windows Server Original, technical content centered around cloud computing, Kubernetes, Linux, and networking Home About Site Archives Post CategoriesContent Tags
__ __
__ __
2020. All rights reserved. SCOTT'S WEBLOG THE WEBLOG OF AN IT PRO FOCUSING ON CLOUD COMPUTING, KUBERNETES, LINUX, CONTAINERS, AND NETWORKING USING PAW TO LAUNCH AN EC2 INSTANCE VIA API CALLS12 Apr 2020
Last week I wrote a post on using Postman to launch an EC2 instancevia API calls
.
Postman is a cross-platform application, so while my post was centered around Postman on Linux (Ubuntu , specifically) the steps should be very similar—if not exactly the same—when using Postman on other platforms. Users of macOS, however, have another option: a macOS-specific peer to Postman named Paw . In this post, I’ll walk through using Paw to issue API requests to AWS to launch an EC2 instance. I’ll structure this post as a “diff,” if you will, that outlines the differences of using Paw to launch an EC2 instance via API calls versus using Postman to do the same thing. Therefore, if you haven’t already read the Postman post from last week, I
_strongly_ recommend reviewing it before proceeding.PREREQUISITES
This post assumes you’ve already installed Paw on your macOS system. It also assumes you are somewhat familiar with Paw; refer to the Paw documentation if not. Also, to support AWS authentication, please be sure to install the “AWS Signature 4 Auth Dynamic value” extension(see here
or here ). This extension is necessary in order to have the API requests sent by Paw properly authenticatedto AWS.
Finally, you’ll want to ensure you have a valid access key ID and corresponding secret access key; your API requests will use these to authenticate against AWS. SIMILARITIES BETWEEN PAW AND POSTMAN First, let’s look at some of the similarities between using these two tools to interact with the AWS APIs: * Both tools support the use of environments and environment variables, and I’d recommend using this functionality. So, if you’re using Paw, be sure to capture your AWS access key ID, AWS secret access key, and AWS region as environment variables you canreference later.
* The query parameters and the API endpoint will be the same for both products (you are, after all, interacting with the same API). You can use the region environment variable in your request URL in both products, although the way in which you access it will be slightly different with Paw (more on that below). More important than the similarities, though, are the differences between the two products, and how that affects using these products to interact with the AWS APIs. DIFFERENCES BETWEEN PAW AND POSTMAN Having reviewed the similarities, let’s now look at some of thedifferences:
* For proper authentication to the AWS APIs, you’ll need to install a Paw extension, as outlined in the “Prerequisites”section.
* Paw doesn’t appear to have the equivalent of a Collection object that can hold configuration settings, so you’ll have to configure the correct headers for authentication for each request individually. See the “Configuring Headers for the Requests” section below fordetails.
* Paw doesn’t have the concept of tests as in Postman, so there’s no need to write custom JavaScript to capture values from API responses (in order to chain requests). Instead, Paw just “automatically” makes response values available. See the “Referencing Response Values” section below. The next couple of sections look at some of the differences in moredetail.
CONFIGURING HEADERS FOR THE REQUESTS Authentication for API requests to the AWS APIs are handled via two headers sent with the API requests: the Authorization header, and the X-Amz-Date header. In Paw, you will need to configure these headers on each API request individually; you can’t apply them to a Collection-type object in Paw like you can in Postman. Here’s a screenshot of configuring the headers for the API requests: The Authorization header is configured to use the AWS Signature 4 Auth extension (selected by right-clicking in the Header Value field and selecting Extensions > AWS Signature v4 Auth), while the X-Amz-Date is configured to use an automatic timestamp (inserted by right-clicking and going to Values > Timestamp > Custom Formatting). The correct timestamp format to use is what’s shown in the screenshot(%G%m%dT%H%M%SZ).
When you add the AWS Signature v4 Auth extension, you’ll also need to configure it. Here’s a screenshot of the configuration of the extension; you can see it’s using environment variables to provide the AWS access key ID, AWS secret access key, and AWS region: Remember that these headers need to configured for each request, or the API request won’t authenticate properly. REFERENCING RESPONSE VALUES The other major difference between Postman and Paw is in how each program allows you to chain API requests together using values from previous API requests. In Postman, this is handled using snippets of JavaScript the user has to write. In Paw, this is handled somewhat “automatically”; the user only needs to insert what’s called a “dynamic repsonse value,” and then reference the API request and the field/value from the response. Here’s a screenshot of the API request to run an instance, which—as you’ll recall from the Postman post—needs several values from earlier API requests: These response values are inserted by right-clicking in the field where they should go and then selecting Response > Filtered Response Body. This brings up a dialog box to configure it, where you’ll select the API request, the response format (XML in this case), and then provide the XML path to the value you want. Here’s an examplescreenshot:
That’s it—aside from these differences in having to configure headers on each API request and in referencing values from earlier responses, the process for interacting with the AWS APIs using Paw is extremely similar to using Postman. For the purposes of launching an EC2 instance via APIs, the requests and the values needed from each request remain exactly the same. I hope this brief walkthroug/comparison of using Paw to interact with the AWS APIs is useful. If you have questions, want to provide feedback, or if you’ve found an error in my post, I’d love to hear from you. Hit me on Twitter , or track down my email (it’s not hard) and send me a message. Thanks! USING POSTMAN TO LAUNCH AN EC2 INSTANCE VIA API CALLS10 Apr 2020
As I mentioned in this post on region and endpoint match in AWS APIrequests ,
exploring the AWS APIs is something I’ve been doing off and on for several months. There’s a couple reasons for this; I’ll go into those in a bit more detail shortly. In any case, I’ve been exploring the APIs using Postman (when on Linux) and Paw (when on macOS), and in this post I’ll share how to use Postman to launch an EC2 instance via API calls. Before I get into the technical details, let me lay out a couple reasons for spending some time on this. I’m pretty familiar with tools like Terraform and Pulumi (my current favorite), and I’m reasonably familiar with AWS CLI itself. In looking at working directly with the APIs, I see this as adding a new perspective on how these other tools work. (I’ve found, in fact, that exploring the APIs has improved my usage of the AWS CLI.) Finally, as I try to deepen my knowledge of programming languages, I wanted to have a reasonable knowledge of the APIs before trying to program around the APIs (hopefully this will make the learning curve a bit less steep).PREREQUISITES
This post assumes you’ve already installed Postman, so I won’t be covering that here (for a rough idea of what that process looks like, see here ). I’ll be using Linux, but since Postman is cross-platform then this post should cover most users. If anyone is interested in a version of this post with Paw (a macOS-specific API client), contact me on Twitter and let me know. This post also assumes you’re somewhat familiar with Postman; if that’s not the case, check out the Postman documentation.
You’ll want to ensure that you have a valid access key ID and corresponding secret access key; your API requests will use these to authenticate against AWS. SET UP THE POSTMAN ENVIRONMENT To simplify things, the first step I’d recommend is setting up a Postman environment. In this environment, you’ll initially want to store three pieces of information: * The value of your AWS access key ID * The value of your AWS secret access key * The AWS region with which you’ll be working Why put these values into a Postman environment? Well, there are times when I need to flip between personal and work accounts. By placing these values into separate environments with the same variable names, I can switch between accounts with no changes to the actual APIrequests.
If you’re concerned about the security of your account(s)—which is reasonable—create a dedicated IAM user with its own acces key ID and secret access key (assuming you have permissions in your account to do so), and store those values in the Postman environment. SET UP THE COLLECTION In Postman, a collection is more than just a folder for collecting API requests. At the collection level, you can also set certain configuration values. In this case, I’d recommend at least setting up the Authorization settings for the collection, and these settings will then trickle down to all API requests in the collection. Set your Authorization value to “AWS Signature,” and then use the environment variables you created in the previous section to reference the values of your access key ID and secret access key. Under the “Advanced” section, reference your region using another environment variable, and specify the Service Name as “ec2”. The final configuration should look something like this (the names of your environment variables may be different): Once the Collection is configured, and you have an environment in place with the right values, you’re ready to create the APIrequests.
CRAFT THE API REQUESTS Before you can launch an instance, you’ll first need to craft some API calls to gather the information needed to launch an instance. Specifically, you’ll need a subnet ID, a key pair name, and an AMI ID. You _could_ hard-code these values into an API request to launch an instance, but that won’t help much (in my opinion) with expanding one’s knowledge of how the APIs work. You’ll need five API requests to gather information first: * An API request to retrieve the Availability Zones (AZs) for the region you’ve specified * An API request to get the default VPC for your account in the region you’ve specified * An API request to retrieve the list of SSH key pairs in your account in the region you’ve specified * An API request to get the default subnet in the default VPC for an available AZs in the region you’ve specified * An API request to retrieve the image ID for the desired Amazon Machine Image (AMI) you want to use To help in crafting these API calls, I found the AWS EC2 API reference to be quite handy. For each of these five API calls to gather information, you’ll use a corresponding _Action_ as a parameter tothe API call:
* To retrieve a list of AZs, the Action is DescribeAvailabilityZones * To get the default VPC, the Action is DescribeVpcs * For the list of key pairs, you’ll use the DescribeKeyPairsAction
* To get the default subnet in a VPC in a particular AZ, the action is DescribeSubnets (seeing a pattern yet?) * To determine the image ID for the desired AMI, you’ll use the Action DescribeImages Each of these Actions will share a common API endpoint, which is what you’ll specify as the URL for the API request. If you included AWS region as a variable in your environment, then you can reference that region in the API endpoint to make your API requests more region-independent, like this: https://ec2.{{region}}.amazonaws.com/ Each of these Actions will also share one common parameter—the Version parameter, with a value of “2016-11-15”. Otherwise, the parameters for each Action (each API call) will be different. Let’s take a look at those. GETTING THE LIST OF AZS Here’s a screenshot of the query parameters for the first of the five API calls, the one to retrieve the list of AZs: You’ll note that Postman will report that eight Headers have been added to your request; these were all added by configuring the Authorization setting on the Collection. No other changes should be necessary in order for this request to work. When you send this request, you’ll get back some XML (not JSON) with the results ofyour query.
In order to be able to use some part of this response later—which you’ll need to do, unless you want to hard-code values—you’ll also need to write a small JavaScript “test” that captures some of this information into your Postman environment. Here’s the JavaScript you’d need to write to capture the name of the first AZ returned by the API call: var jsonObject = xml2Json(pm.response.text()); pm.environment.set("firstAz", jsonObject.DescribeAvailabilityZonesResponse.availabilityZoneInfo.item.zoneName); To make it easier for folks to follow along, I’ve added the necessary JavaScript for each of the five API queries to my GitHub “learning-tools” repository. See the
aws/postman-aws-api folder. For the AZ query, the corresponding JavaScript file is named describe-azs-test.js, and it stores the name of the first AZ returned by the query into the Postman environment as a variable named “firstAz”. DETERMINING THE DEFAULT VPC This API request will differ only from the first one in the parameters. It will use the same API endpoint, and will have the same Version parameter. Here’s a screenshot of the parameters for thisAPI request:
As you can see in the screenshot, you’ll need to use two additional parameters. These parameters correspond to the --filters argument of the AWS CLI, and you’ll use them to tell AWS to return _only_ the default VPC. The values to use here are described in the AWS CLIreference
.
The value returned by this request does need to be captured using a JavaScript test (configured on the Tests tab of the Postman request). I have a sample JavaScript file named describe-vpcs-test.js you can use as an example (see previous section for the location of the sample JavaScript test files). GETTING THE KEY PAIR The API request to get the SSH key pair name is very straightforward. Here’s a screenshot of the query parameters: To capture a value out of the response to this request, you can use the sample JavaScript test in my GitHub “learning-tools”repository ; it’s
named describe-key-pairs-test.js in the aws/postman-aws-api directory. DETERMING THE SUBNET TO USE This API request will really demonstrate the reason why the JavaScript tests are needed to capture data out of the API responses, as you’ll need some of that information. The purpose of this API request is to determine the default subnet, given a particular VPC and a particular AZ. This means you’ll need the VPC ID and AZ name captured by the earlier API requests, and stored into the Postman environment by theJavaScript tests.
Here’s a screenshot of the query parameters for this API request: If you changed the names of the environment variables used in the JavaScript tests for getting the list of AZs and getting the default VPC, you’ll want to adjust them here to ensure this request works. Because we’ll need the value returned by this call later, you’ll also need a JavaScript test for this request. The describe-subnets-test.js file in the aws/postman-aws-api directory of my GitHub “learning-tools” repositorycan be used as an
example.
FINDING THE IMAGE ID This request, out of all the others, may end up with more query parameters than the others illustrated here—mainly in order to use multiple filter parameters for narrowing down the list of results. For each filter, you’d have two query parameters: Filter.X.Name and Filter.X.Value (these directly correspond to the Name=,Value= portions of the --filters argument of the AWS CLI). Here’s my example; yours will very likely look different: In my particular case, I filtered by images I own (using the “Owner.1” query parameter) and by a particular tag name and value. You will likely have to experiment with the right set of filters in order to get the value you want. Once you have the value you want, you’ll need a JavaScript test to capture that value for use in the final API request to actually launch an instance. Check the aws/postman-aws-api directory in my GitHub “learning-tools” repository for the describe-images-test.js file to use as an example. LAUNCHING THE EC2 INSTANCE It’s finally time to send the API request to actually launch an EC2 instance! This time you’ll use the RunInstances Action, and you’ll use environment variables supplied by several of the JavaScript tests used in earlier API requests. Here’s a screenshot of the query parameters for the final RunInstances API request: You’ll note from the screenshot there’s no JavaScript test associated with this API request. If you want to capture the instance ID of the instance you just spawned with this request, you could add a JavaScript test here to do that, and then be able to use this instance ID in additional API requests (perhaps to query the status of the instance, or to terminate the instance). If you used different environment variables in some of the JavaScript tests in earlier API requests, you’ll want to make sure you use the correct variable names here in order for this request to work. And that’s it! Flip over to your AWS Console or fire up the AWS CLI to see the instance you just launched (or do some additional API exploration of your own to gather information about the instance). ADDITIONAL RESOURCES There are several additional resources that I found extremely helpful while learning some of the concepts discussed in this post. I’ve included them below for the benefit of others: Organizing EC2 API Actions As A Postman Collection Extracting data from responses and chaining requests In the post above, I also provided links to the AWS EC2 API reference as well as the AWS CLI reference, both of which are also very useful resources. Finally, the Postman documentation was very helpful, and a link for it is also provided above. If you have any questions about the information presented in this post, I’d love to hear from you. Feel free to contact me on Twitter . I know this was a long post; thanks for hanging in there until the end! MAKING FILE URLS WORK AGAIN IN FIREFOX4 Apr 2020
At some point in the last year or so—I don’t know exactly when it happened—Firefox , along with most of the other major browsers, stopped working with file:// URLs. This is a shame, because I like using Markdown for presentations(at least, when
it’s a presentation where I don’t need to collaborate with others). However, using this sort of approach generally requires support for file:// URLs (or requires running a local web server). In this post, I’ll show you how to make file:// URLs work again inFirefox.
I tested this procedure using Firefox 74 on Ubuntu , but it should work on any platform on which Firefox is supported. Note that the locations of the user.js file will vary from OS to OS; see this MozillaZine Knowledge Base entryfor more details.
Here’s the process I followed:*
Create the user.js file (it doesn’t exist by default) in the correct location for your Firefox profile. (Refer to the MozillaZine KB article linked above for exactly where that is on your OS.)*
In the user.js, add these entries: // Allow file:// links user_pref("capability.policy.policynames", "localfilelinks"); user_pref("capability.policy.localfilelinks.sites", "file://"); user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess");*
In your Firefox configuration (accessible using about:config in a Firefox tab), change the value of privacy.file_unique_origin from trueto false.
*
Restart Firefox.
After you restart Firefox, you should be able to use file:// URLs, but only from local HTML files on your system (as specified by the second line you added in step 2). It’s possible this may expose an unknown security flaw or weakness that I haven’t foreseen, so keep that inmind.
If you’re a fan of Markdown-based presentations displayed using your browser, they should work again. Hit me on Twitter if you havequestions. Thanks!
INSTALLING MULTIMARKDOWN 6 ON UBUNTU 19.103 Apr 2020
Markdown is a core
part of many of my workflows. For quite a while, I’ve used Fletcher Penny’s MultiMarkdown processor (available on GitHub ) on my various systems. Fletcher offers binary builds for Windows and macOS, but not a Linux binary. Three years ago, I wrote a post on how to compile MultiMarkdown 6 for a Fedora-based system . In this post, I’ll share how to compile it on an Ubuntu-based system. Just as in the Fedora post, I used Vagrant with the Libvirt provider to spin up atemporary build VM.
In this clean build VM, I perform the following steps to build a multimarkdown binary:*
Install the necessary packages with this command: sudo apt install gcc make cmake git build-essential*
Clone the source code repository: git clone https://github.com/fletcher/MultiMarkdown-6*
Switch into the directory where the repository was cloned and run these commands to build the binary:make
cd build
make
*
Once the second make command is done, you’re left with a multimarkdown binary. Copy that to the host system (scp works fine). Use vagrant destroy to clean up the temporary build VM once you’ve copied the binary to your host system. And with that, you’re good to go! SETTING UP ETCD WITH KUBEADM, CONTAINERD EDITION2 Apr 2020
In late 2018, I wrote a couple of blog posts on using kubeadm to set up an etcd cluster. The first one was this post,
which used kubeadm only to generate the TLS certs but ran etcd as a systemd service. I followed up that up a couple months later with thispost , which used
kubeadm to run etcd as a static Pod on each system. It’s that latter post—running etcd as a static Pod on each system in the cluster—that I’ll be revisiting in this post, only this time using containerd as the container runtime insteadof Docker.
This post assumes you’ve already created the VMs/instances on which etcd will run, that an appropriate version of Linux is installed (I’ll be using Ubuntu LTS 18.04.4), and that the appropriate packages have been installed. This post also assumes that you’ve already made sure that the correct etcd ports have been opened between the VMs/instances, so that etcd can communicate properly. Finally, this post builds upon the official Kubernetes documentation on setting up an etcd cluster using kubeadm.
The official guide assumes the use of Docker, whereas this post will focus on using containerd as the container runtime instead of Docker. The sections below outline the _changes_ required to the official documentation in order to make it work with containerd.CONFIGURING KUBELET
The official documentation provides a systemd drop-in to configure the Kubelet to operate in a “stand-alone” mode. Unfortunately, this drop-in won’t work with containerd. Here is a replacement drop-infor containerd:
ExecStart=
ExecStart=/usr/bin/kubelet --address=127.0.0.1 --pod-manifest-path=/etc/kubernetes/manifests --cgroup-driver=systemd --container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sockRestart=always
The changes here are the addition of the --container-runtime, --runtime-remote, and --container-runtime-endpoint parameters. These parameters configure the Kubelet to talk to containerd instead ofDocker.
As instructed in the official documentation, put this into a systemd drop-in (like the suggested 20-etcd-service-manager.conf) and copy it into the /etc/systemd/system/kubelet.service.d directory. Once the file is in place, run systemctl daemon-reload so that systemd will pick up the changes. CREATE THE MANIFESTS DIRECTORY Although this is not included in the official documentation, I saw problems with the Kubelet starting up if the manifests directory doesn’t exist. I suggest manually creating the /etc/kubernetes/manifests directory to avoid any such issues. BOOTSTRAP THE ETCD CLUSTER Aside from the changes/differences described above, the rest of the process is as outlined in the official documentation. At a high-level,that means:
* Use kubeadm init phase certs etcd-ca to generate the etcd CA certificate and key. * Use kubeadm init phase certs to generate the etcd server, peer, health check, and API server client certificates. * Distribute the certificates to the etcd nodes. * Use kubeadm init phase etcd local to generate the Pod manifests for the etcd static Pods. One final note: the docker command at the end of the official documentation won’t work in this case, since containerd is the container runtime instead of Docker. I’m still working on the correct containerd equivalent command to test the health of thecluster.
HOW I TESTED
I used Pulumi to create a test environment in AWS for testing the instructions in this article. The TypeScript code that I wrote for use with Pulumi creates an environment suitable for use with Kubernetes Cluster API, including a VPC, both public and private subnets, an Internet gateway, NAT gateways for the private subnets, all associated route tables and route table associations, and the necessary security groups. I hope to publish this code for others to use soon; look for an update here. If you have any questions, concerns, or corrections, please contact me. You can reach me on Twitter , or contact me on the Kubernetes Slack instance . I’d love to hear from you, and all constructive feedback is welcome.RECENT POSTS
HA KUBERNETES CLUSTERS ON AWS WITH CLUSTER API V1ALPHA326 Mar 2020
A few weeks ago, I published a post on HA Kubernetes clusters on AWS with Cluster API v1alpha2.
That post was itself a follow-up to a post I wrote in September 2019 on setting up HA clusters using Cluster API v1alpha1.
In this post, I’ll follow up on both of those posts with a look at setting up HA Kubernetes clusters on AWS using Cluster API v1alpha3. Although this post is similar to the v1alpha2 post, be aware there are some notable changes in v1alpha3, particularly with regard to the control plane._Read more...
_
TECHNOLOGY SHORT TAKE 12520 Mar 2020
Welcome to Technology Short Take #125, where I have a collection of articles about various data center and cloud technologies collected from around the Internet. I hope I have managed to find a few useful things for you! (If not, contact me on Twitter and tell me how I can make this morehelpful for you.)
_Read more...
_
USING KIND WITH DOCKER MACHINE ON MACOS19 Mar 2020
I’ll admit right up front that this post is more “science experiment” than practical, everyday use case. It all started when I was trying some Cluster API-related stuff that
leveraged KinD (Kubernetes in Docker) . Obviously, given the name, KinD relies on Docker , and when running Docker on macOS you generally would use Docker Desktop. At the time, though, I was using Docker Machine, and as it turns out KinD doesn’t like Docker Machine. In this post, I’ll show you how to make KinD work withDocker Machine.
_Read more...
_
KUSTOMIZE TRANSFORMER CONFIGURATIONS FOR CLUSTER API V1ALPHA317 Mar 2020
A few days ago I wrote an article on configuring kustomizetransformers
for
use with Cluster API (CAPI), in which I
explored how users could configure the kustomize transformers—the parts of kustomize that actually modify objects—to be a bit more CAPI-aware. By doing so, using kustomize with CAPI manifests becomes much easier. Since that post, the CAPI team released v1alpha3. In working with v1alpha3, I realized my kustomize transformer configurations were incorrect. In this post, I will share CAPI v1alpha3 configurations for kustomize transformers._Read more...
_
CONFIGURING KUSTOMIZE TRANSFORMERS FOR CLUSTER API13 Mar 2020
In November 2019 I wrote an article on using kustomize with Cluster API (CAPI) manifests. The idea
was to use kustomize to simplify the management of CAPI manifests for clusters that are generally similar but have minor differences (like the AWS region in which they are running, or the number of Machines in a MachineDeployment). In this post, I’d like to show a slightly different way of using kustomize with Cluster API that involves configuring the kustomize transformers._Read more...
_
UPDATING VISUAL STUDIO CODE'S KUBERNETES API AWARENESS12 Mar 2020
After attempting (and failing) to get Sublime Text to have some of the same “intelligence” that Visual Studio Code has with certain languages, I finally stopped trying to make Sublime Text work for me and just went back to using Code full-time. As I mentioned in this earlier post, now
that I’ve finally solved how Code handles wrapping text in brackets and braces and the like I’m much happier. (It’s the small things in life.) Now I’ve moved on to tackling how to update Code’s Kubernetes API awareness._Read more...
_
AN UPDATE ON THE TOKYO ASSIGNMENT9 Mar 2020
Right at the end of 2019 I announced that in early 2020 I was temporarily relocating to Tokyo, Japan, for a six month work assignment. It’s now March, and I’m still in Colorado. So what’s up with that Tokyo assignment, anyway? Since I’ve had several folks ask, I figured it’s probably best to post something here._Read more...
_
MODIFYING VISUAL STUDIO CODE'S BRACKETING BEHAVIOR8 Mar 2020
There are two things I’ve missed since I switched from Sublime Text to Visual Studio Code (I switched in 2018). First, the _speed._ Sublime Text is _so_ much faster than Visual Studio Code; it’s insane. But, the team behind Visual Studio Code is working hard to improve performance, so I’ve mostly resigned myself to it. The second thing, though, was the behavior of wrapping selected text in brackets (or parentheses, curly braces, quotes, etc.). That part has annoyed me for two years, until this past weekend I’d finally had enough. Here’s how I modified Visual Studio Code’s bracketingbehaviors.
_Read more...
_
HA KUBERNETES CLUSTERS ON AWS WITH CLUSTER API V1ALPHA25 Mar 2020
About six months ago, I wrote a post on how to use Cluster API(specifically, the
Cluster API Provider for AWS) to
establish highly available Kubernetes clusters on AWS. That post was written with Cluster API (CAPI) v1alpha1 in mind. Although the concepts I presented there worked with v1alpha2 (released shortly after that post was written), I thought it might be helpful to revisit the topic with CAPI v1alpha2 specifically in mind. So, with that, here’s how to establish highly available Kubernetes clusters on AWS using CAPI v1alpha2._Read more...
_
TECHNOLOGY SHORT TAKE 1242 Mar 2020
Welcome to Technology Short Take #124! It seems like the natural progression of the Tech Short Takes is moving toward monthly articles, since it’s been about a month since my last one. In any case, here’s hoping that I’ve found something useful for you. Enjoy! (And yes, normally I’d publish this on a Friday, but I messed up and forgot. So, I decided to publish on Monday instead of waiting forFriday.)
_Read more...
_
REGION AND ENDPOINT MATCH IN AWS API REQUESTS27 Feb 2020
Interacting directly with the AWS APIs—using a tool like Postman (or, since I switched back to macOS, an application named Paw )—is something I’ve been doing off and on for a little while as a way of gaining a slightly deeper understanding of the APIs that tools like Terraform, Pulumi , and
others are calling when automating AWS. For a while, I struggled with AWS authentication, and after seeing Mark Brookfield’s post on using Postman to authenticate to AWS I thought it might be helpful to share what I learned as well._Read more...
_
RETRIEVING THE KUBECONFIG FOR A CLUSTER API WORKLOAD CLUSTER19 Feb 2020
Using Cluster API
allows users to create new Kubernetes clusters easily using manifests that define the desired state of the new cluster (also referred to as a workload cluster; see herefor more
terminology). But how does one go about accessing this new workload cluster once it’s up and running? In this post, I’ll show you how to retrieve the Kubeconfig file for a new workload cluster created byCluster API.
_Read more...
_
SETTING UP K8S ON AWS WITH KUBEADM AND MANUAL CERTIFICATE DISTRIBUTION18 Feb 2020
_Credit for this post goes to Christian Del Pino, who created this content and was willing to let me publish it here._ The topic of setting up Kubernetes on AWS (including the use of the AWS cloud provider) is a topic I’ve tackled a few different times here on this site (see here, here
, and here
for other posts on this subject). In this post, I’ll share information provided to me by a reader, Christian Del Pino, about setting up Kubernetes on AWS with kubeadm but using manual certificate distribution (in other words, not allowing kubeadm to distribute certificates among multiple control plane nodes). As I pointed out above, all this content came from Christian Del Pino; I’m merely sharing it here with his permission._Read more...
_
BUILDING AN ISOLATED KUBERNETES CLUSTER ON AWS5 Feb 2020
In this post, I’m going to explore what’s required in order to build an isolated—or Internet-restricted—Kubernetes cluster on AWS with full AWS cloud provider integration. Here the term “isolated” means “no Internet access.” I initially was using the term “air-gapped,” but these aren’t technically air-gapped so I thought isolated (or Internet-restricted) may be a better descriptor. Either way, the intent of this post is to help guide readers through the process of setting up a Kubernetes cluster on AWS—with full AWS cloud provider integration—using systems that have no Internet access._Read more...
_
CREATING AN AWS VPC ENDPOINT WITH PULUMI25 Jan 2020
In this post, I’d like to show readers how to use Pulumi to create a VPC endpoint on AWS. Until recently, I’d heard of VPC endpoints but hadn’t really taken the time to fully understand what they were or how they might be used. That changed when I was presented with a requirement for the AWS EC2 APIs to be available within a VPC that did not have Internet access. As it turns out—and as many readers are probably already aware—this is one of the key use cases for a VPC endpoint (see theVPC endpoint docs
).
The sample code I’ll share below shows how to programmatically create a VPC endpoint for use in infrastructure-as-code use cases._Read more...
_
OLDER POSTS
* Manually Loading Container Images with containerD25 Jan 2020
* Thinking and Learning About API Design24 Jan 2020
* Technology Short Take 12317
Jan 2020
* Removing Unnecessary Complexity16 Jan 2020
* Looking Back: 2019 Project Report Card1 Jan 2020
* New Year, New Adventure30 Dec
2019
* Technology Short Take 12227
Dec 2019
* Technology Short Take 1216
Dec 2019
* Technology Short Take 12022
Nov 2019
* KubeCon 2019 Day 3 and Event Summary21 Nov 2019
* KubeCon 2019 Day 2 Summary20
Nov 2019
* KubeCon 2019 Day 1 Summary19
Nov 2019
* Using Kustomize with Cluster API Manifests12 Nov 2019
* Programmatically Creating Kubernetes Manifests29 Oct 2019
* Spousetivities in Barcelona at VMworld EMEA 201920 Oct 2019
* Using Kustomize with Kubeadm Configuration Files16 Oct 2019
* Technology Short Take 11927
Sep 2019
* Exploring Cluster API v1alpha2 Manifests26 Sep 2019
* An Introduction to Kustomize13 Sep 2019
* Consuming Pre-Existing AWS Infrastructure with Cluster API9 Sep 2019
* Highly Available Kubernetes Clusters on AWS with Cluster API5 Sep 2019
* VMworld 2019 Vendor Meeting: Lightbits Labs2 Sep 2019
* Bootstrapping a Kubernetes Cluster on AWS with Cluster API27 Aug 2019
* An Introduction to Kubernetes Cluster API26 Aug 2019
* Liveblog: VMworld 2019 Day 1 General Session26 Aug 2019
* Technology Short Take 11823
Aug 2019
* Creating Tagged Subnets Across AWS AZs Using Pulumi21 Aug 2019
* Reconstructing the Join Command for Kubeadm15 Aug 2019
* Setting up an AWS-Integrated Kubernetes 1.15 Cluster with Kubeadm14 Aug 2019
* Converting Kubernetes to an HA Control Plane12 Aug 2019
Find more posts by browsing the post categories , content tags , or site archives pages. Thanks forvisiting!
Details
Copyright © 2024 ArchiveBay.com. All rights reserved. Terms of Use | Privacy Policy | DMCA | 2021 | Feedback | Advertising | RSS 2.0