▲ | chamomeal a day ago | |
How would you feel if bash scripts were replaced with Ansible playbooks? At a previous job at a teeny startup, each instance of the environment is a docker-compose instance on a VPS. It works great, but they’re starting to get a bunch of new clients, and some of them need fully independent instances of the app. Deployment gets harder with every instance because it’s just a pile of bash scripts on each server. My old coworkers have to run a build for each instance for every deploy. None of us had used ansible, which seems like it could be a solution. It would be a new headache to learn, but it seems like less of a headache than kubernetes! | ||
▲ | rthnbgrredf a day ago | parent | next [-] | |
Ansible is better than Bash if your goals include: * Automating repetitive tasks across many servers. * Ensuring idempotent configurations (e.g., setting up web servers, installing packages consistently). * Managing infrastructure as code for better version control and collaboration. * Orchestrating complex workflows that involve multiple steps or dependencies. However, Ansible is not a container orchestrator. Kubernetes (K8s) provides capabilities that Ansible or Docker-Compose cannot match. While Docker-Compose only supports a basic subset, Kubernetes offers: * Advanced orchestration features, such as rolling updates, health checks, scaling, and self-healing. * Automatic maintenance of the desired state for running workloads. * Restarting failed containers, rescheduling pods, and replacing unhealthy nodes. * Horizontal pod auto-scaling based on metrics (e.g., CPU, memory, or custom metrics). * Continuous monitoring and reconciliation of the actual state with the desired state. * Immediate application of changes to bring resources to the desired configuration. * Service discovery via DNS and automatic load balancing across pods. * Native support for Persistent Volumes (PVs) and Persistent Volume Claims (PVCs) for storage management. * Abstraction of storage providers, supporting local, cloud, and network storage. If you need these features but are concerned about the complexity of Kubernetes, consider using a managed Kubernetes service like GKE or EKS to simplify deployment and management. Alternatively, and this is my prefered option, combining Terraform with a Container-as-a-Service (CaaS) platform allows the provider to handle most of the operational complexity for you. | ||
▲ | klooney a day ago | parent | prev [-] | |
Ansible ultimately runs scripts, in parallel, in a defined order across machines. It can help a lot, but it's subject to a lot of the same state bitrot issues as a pole of shell scripts. |