Effective Ansible playbooks are idempotent: They change a system to the very same state independent of the systems current state. To achieve this, a clearly structured directory layout and custom uninstaller tasks are helpful. Learn more in my new article: https://admantium.com/blog/a05_idempotent_playbooks
Running Ansible professionally leads to the one and only `site.yml` file, defining which roles and tasks should be executed on each host. But now, how can you only run specific tasks, targeting specific hosts? Learn about cmdline flags in my new article: https://admantium.com/blog/a04_controlling_task_execution
When you execute an Ansible playbook, all actions are run top-down, in the order they are written. There are cases when you need more control, such as defining when to execute an action, defining when to stop an action, branching the control flow, and controlling action results.
Running Ansible tasks takes some time to complete. You can greatly reduce this time by using SSH multiplexing and pipelining, and by stopping or caching the fact gathering steps. Let’s discuss these optimizations in detail.
Ansible is a standard tool for managing your infrastructure. You write declarative code that executes installations of software packages, sets configuration, and maintains your sysytem. Read in the first article how to access ansible facts about the hosts.
Kubernetes `CronJob` define periodic scheduled tasks in your cluster. In my new article, I explain how to use a CronJob for persisting pod log data in simple text files.
Kubernetes service account define fine grained access to any Kubernetes resource, including namespaces, pods and log data. In this article I explain how service accounts work by using curl statements against the API. It was a great educational experience! Read what I learned.
In Kubernetes, Pods are dynamic and ephemeral. And so is their log data: When a pod terminates, its gone. Retaining log files can be complex - do you really need the ELK or EFK stack? If all you need are plain text files, then my KubeLogExporter can be your solution.