In the early years of internet application development, hardware resources and systems administration were primarily performed manually. System administrators manually provisioned and managed hardware resources based on configuration data while still juggling configuration data. In today’s world, where everything is achieved at the touch of a button, more and more companies are moving towards automation to remove any bottlenecks caused by the manual way of doing things.
Need for Automation
Based on our requirement, we are going to create an Ubuntu VM and the required infrastructure setup in Azure Cloud with Jenkins installed and configured for creating and building a Pipeline Job.
It would take a long time to complete this with a manual process in case of provisioning ‘n’ number of VM’s according to our requirements. This may cause a risk factor while provisioning the VM with the required infrastructure and Jenkins Configurations. For this, automation with Azure ARM Templates is the perfect strategy for fulfilling the requirements.
Azure supports two provisioning agents:
Linux Agent: It is an Azure platform-specific agent also known as WALA used to provision and configure VMs and handle Azure Extensions.
Cloud-init: Cloud-init is a service that sets up your VM instance with the required software installed, configured, and ready to use. The service starts at boot and uses the metadata provided by the cloud provider.
Why Cloud-init
We opt for cloud-init instead of a Linux agent to support the existing cloud-init customers by using their existing cloud-init scripts and the new customers can also take advantage of the rich cloud-init configuration functionalities.
Cloud-init does not require any additional settings for configuring Linux systems.
Unlike Linux agents, cloud-init configurations do not have time constraints and deployment fails by timing out.