Why Configuration Management
- Consider a scenario where your organization is building an ecommerce application
-
System overview
-
To run this application, we need two ubuntu linux servers
- db server: configuring this server involves
- update linux
- add necessary users on linux
- install postgres
- configure postgres to create a database and user
- application server:
- update linux
- add necessary users on linux
- install java
- install tomcat
- deploy your application
- db server: configuring this server involves
-
Now to ensure the application is deployed on every change to ST environment (also other environments). Possible options
- Manual: It is time consuming
- Automation: Its a better approach
-
How to do this automation and what are possible ways?
- Procedural: It is expressed in a procedural way where we define steps on how to do.
- Example: Scripting
- lets say we want to install apache server
bash
sudo apt update
sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2
- Declarative: It is expressed in a declartive way where we define a desired state (what we want)
- Example: Configuration Management using Ansible, Chef, Puppet
ensure package definitions are upto date
ensure apache is present
ensure apache is enabled
ensure apache is running
- Example: Configuration Management using Ansible, Chef, Puppet
- Procedural: It is expressed in a procedural way where we define steps on how to do.
- Declarative approach ensures we get same result on every execution, This property is called as idempotence.
- Configuration Management is a software which allows to configure systems in a declarative approach and ensure idempotence.
- Softwares:
- Ansible
- Chef
- Puppet
- Salt
Steps for Learning Configuration Mangement using Ansible
- Good with command line
- Ensuring whatever you are automating you know how to do it manually.
- Learning YAML & Ansible concepts
Linux Basics
- Kernel: It is core of the operating system, It enables hardware integrations.
- Distributions: Most of the linux distributions are from
- debian:
- ubuntu
- kali linux
- mint
- redhat (fedora)
- redhat enterprise linux
- amazon linux
- rocky linux
- debian:
-
Distributions add softwares and will have package manager.
- debian => apt
- redhat => yum (dnf)
-
Shell: It helps in interacting with kernel by executing commands (application)
- Exercise: What is daemon in linux?
