Ansible Introduction
- Once the software package is ready (from build system), we need to create various test environments
- Assumption: Servers where we need to deploy our application are up and running

- Consider the following simple architecture

- Consider the following servers

- To bring up our application,
- We might need to install language frameworks
- java
- python
- .net
- We need to install server softwares
- web server (apache/nginx)
- app server (tomcat/websphere/jboss)
- db server (mysql/postgres/SQL Server)
- We need to deploy the software packages on necessary servers
- We need to establish configuration for connectivity b/w servers
- We might need to install language frameworks
- Challenges:
- In DevOps world we might need to setup environments almost every day
- We need to do the automation of application deployment and configuration and ensure it works on different environments
- Since we do deployments almost everyday, we need to have automation giving us consistent results
- To automate these we have scripting like shell/powershell scripting
- Disadvantages of shell scripting:
- Readability & maintenance:
- It has certain assumptions:
- We need some approach which helps in
- writing readable scripts/configuration
- Execution always gives us same results
- Inference

- Lets use plain english approach to understand this
| Shell Script | Configuration Management |
|---|---|
| use touch command to create a file 1.txt | ensure file 1.txt is present |
| use apt to install apache server by executing apt install apache2 -y | Ensure apache2 is installed |
-
Configuration Management is a proces for maintaining computer systems, servers and softwares in a desired, consistent state.
-
This way ensures system performs as its expected to changes made over time
-
PULL and PUSH BASED CM

-
In PUSH based CM Server needs to have information of list of nodes to communicate
-
IN PULL based CM Nodes need to have software agent installed.
