Preface
- Who is this book for?
- Typographic conventions
- Please help improve this book!
- Current Published Book Version Information
- About the Author
Introduction
- In the beginning, there were servers
- The move to containers
- Ansible by Red Hat
- Kubernetes and the CNCF
- Examples Repository
- Other resources
- Ansible resources
- Kubernetes resources
Chapter 1 - Hello World!
- Hello, Go!
- Installing Go
- Creating a ‘Hello world’ app in Go
- Building Hello Go
- Deploying Hello Go in a container
- Running Hello Go in Docker
- Building the container
- Running the container
- Hello Go app summary
- Deploying Hello Go in Kubernetes
- Installing Minikube
- Building the Hello Go container in Minikube
- Running Hello Go in Minikube
- Scaling Hello Go in Kubernetes
- Clean up Hello Go
- Summary
Chapter 2 - Automation brings DevOps bliss
- Ansible 101
- Installing Ansible
- Hello, Ansible!
- Running your first Ansible playbook
- Ansible 101 summary
- Managing Kubernetes with Ansible
- Managing Minikube
- Building container images in Minikube with Ansible
- Managing Kubernetes resources with Ansible
- Scaling Hello Go with Ansible
- Scaling via the existing Deployment spec
- Scaling with Ansible’s
k8s_scalemodule - Scaling with
k8sandstrategic_merge - Cleaning up Kubernetes resources with Ansible
- Summary
Chapter 3 - Ansible manages containers
- Ansible’s Docker modules
docker_imagemoduledocker_containermodule- Pushing the container image to a registry
- Running a local container registry
docker_loginmodule- Pushing an image to a Docker registry with
docker_image - Ansible Docker module summary
- Building images using Ansible without a
Dockerfile - Relying on Roles from Ansible Galaxy
- Writing a Playbook to Build a Container Image
- Writing a Playbook to Test the Container Image
- Apache Solr container build summary
- Summary
Chapter 4 - Building K8s clusters with Ansible
- Building a local Kubernetes cluster on VMs
- Prerequisites - Vagrant and VirtualBox
- A small Kubernetes cluster architecture
- A
Vagrantfilefor local Infrastructure-as-Code - Building a Kubernetes cluster with Ansible
- Describing hosts with an inventory
- Becoming root in a playbook
- Building a server with roles
- Role configuration
- Running the cluster build playbook
- Testing the cluster with a deployment using Ansible
- Debugging cluster networking issues
- Fixing issues with Flannel and iptables
- Switching nftables to iptables-legacy
- Patching Flannel to use the right network interface
- Local VM cluster summary
- Building a cluster using Kubespray
- Building a cluster on VPSes using Kubespray
- Building a bare metal cluster using Raspberry Pis
- Summary
Chapter 5 - Build an AWS EKS Cluster with CloudFormation and Ansible
- Managing AWS EKS clusters with CloudFormation
- CloudFormation Templates
- CloudFormation template for VPC Networking
- CloudFormation template for an EKS Cluster
- CloudFormation template for an EKS Node Group
- Applying CloudFormation Templates with Ansible
- Authenticating to the EKS Cluster via
kubeconfig - Deploying WordPress to the EKS Cluster
- Build the WordPress Kubernetes manifests
- Build an Ansible Playbook to deploy the manifests to EKS
- Point a custom domain at the WordPress ELB
- Run the playbook to deploy WordPress
- Summary
Chapter 6 - Manage a GKE Cluster with Terraform and Ansible
- Managing Google Cloud GKE clusters with Terraform
- Summary
Chapter 7 - Development and CI Testing with Molecule, Kind, and Ansible
- Ansible playbook to deploy a Kubernetes Job
- Add Molecule for development and testing
- Manage Kind with Molecule
- Test a playbook in Kind with Molecule
- Verify the playbook worked with Molecule
- Kubernetes CI Testing in GitHub Actions
- Summary
Chapter 8 - Ansible’s Kubernetes integration
k8smodulek8s_infomodulek8sinventory plugink8s_scalemodulek8s_execmodulek8s_servicemodulek8s_logmodulegeerlingguy.k8scollection- Summary
Chapter 9 - Hello Operator
- The Operator Pattern
- Operator SDK
- Go vs. Ansible-based Operators
- Your first Ansible-based Operator
- End-to-end testing for an Ansible-based Operator with Molecule
- Example: WordPress in EKS with an Operator
- Summary
Chapter 10 - The first real-world application
Afterword
Appendix A - Using Ansible on Windows workstations
- Method 1 - Use the Windows Subsystem for Linux / Bash on Ubuntu
- Installing Ansible inside Bash on Ubuntu
- Method 2 - When WSL is not an option
- Prerequisites
- Set up an Ubuntu Linux Virtual Machine
- Log into the Virtual Machine
- Install Ansible
- Summary
