Ansible DevOps Study Notes
All articles from this blog can ONLY be redistributed on an Attribution-NonCommercial-NoDerivs basis. Please credit the source, thank you.
Blog：Kelvin Shen's Blog
Ansible is a popular choice of DevOps tools.
- Ansible was created by Michael DeHaan in 2012.
- Ansible was acquired by Red Had in 2015.
Ansible vs Ansible Tower
So what are the differences?
Ansible is the engine of the tool. You can access it via command-line user interfaces.
Ansible Tower is a web based UI for Ansible. You can trigger an Ansible playbook from an Ansible Tower website.
An Ansible Server is a controller. It is the brain of the tool. It pushes deployments to the nodes under its control.
An Ansible server is Linux based, i.e. you need a Linux server / box to install it.
However, the target nodes can run on either Linux or Windows OS.
Microsoft PowerShell Desired State of Configuration (DSC) supports both the “push” and the “pull” methods. However, Ansible only does “push”, which means it less flexible but leave no trace on the target nodes post deployments .
“Infrastructure as Code” is the goal. Microsoft PowerShell Desired State of Configuration is powered by PowerShell scripts. In comparison, Ansible has a concept called Playbooks and they are saved in the YMAL file format. An YMAL file consists of both configuration and scripting in a declarative way.
Limitation of DevOps
No all applications / systems are made for DevOps. For example, systems like SAP has it own deployment mechanmism (Transports) and are incompatible with modern DevOps tools.
Some companies only do DevOps internally, and external product release cadance is still around once a year.
Ansible is incapable of deploying to client nodes, e.g. mobile device. It is because you cannot guarantee they are always on.
JFrog Artifactory is a popular tool for storing packages, installation files and scripts.
In an ideal world, DevOps should have its own dedicated team. However, in reality, we often see development teams make DevOps scripts and packages. BAU teams will pretty much just click buttons for production releases.
The major cloud vendors, like Azure and AWS, all support Ansible natively.
Bonus: A Checklist for Planning Your DevOps Capability
- Requirements management system, e.g. Jira.
- Technology stack and tool chains.
- IT system environments. Use VMs? Use Containers?
- IT system monitoring tools, e.g. Zabbix, Splunk, and APM
- CI: Source code version control tools, check-in policy.
- CI: Code quality control, e.g. unit test, integration test, UI tests and static code analysis (SonarQube).
- CI: Build tools.
- CD: Dependency management, e.g. JFrog Artifactory.
- CD: Security certification renewal.
- CD tool chain.