Infrastructure as Code (IaC) is a strategy in which the elements required to operate an IT infrastructure are considered software and are manageable through APIs, standards-based protocols, and open-source automation frameworks (such as Ansible, Saltstack, Puppet, and Chef). IaC provides the ability to automate and leverage tools and practices for faster collaboration, deployment, and continuous integration between infrastructure and operations professionals (Ops) and application development and delivery teams (Dev)–it’s DevOps for Networks! Both teams need to work together to deliver better and innovative customer experiences with increased speed but without compromising quality. By treating infrastructure as code, this benefits both parties.
As more and more businesses move toward the cloud and virtualization, businesses must be agile by automating and adapting its IT infrastructure to remain competitive. The movement toward network automation is the process of automating the configuration, management, testing, deployment, and operations of physical and virtual devices within a network. Figure 1 shows the progression of network automation.
Figure 1: Network Automation Progression
Automated deployment enables you to generate and deploy network configurations automatically, which then leads to running continuous tests in your network where you can identify and resolve any issues as quickly as possible. Infrastructure as Code then enables you to test and validate network changes before you deploy them into your production environment, and lays the groundwork for machine-driven automation based on artificial intelligence and machine-learning. Machines make decisions and drive network changes to eventually morph into Juniper’s vision of the future network, the Self-Driving Self-Network™. Similar to a self-driving car, it is an autonomous network that is predictive and adaptive to its environment. For more information, read Juniper Networks, the Self-Driving Network.
1. Select Automation Framework – Choose an open-source automation framework to work with such as Ansible, Saltstack, Puppet, and Chef.
2. Start Simple – Implement the most common parts of the infrastructure first, such as: user accounts, NTP, DNS, SNMP, and common prefix lists. Work towards 100% coverage incrementally. Keep in mind that the process is slow until everything becomes standardized.
3. Organize – Review existing device inventory, variables, and roles. Group by function or location, and apply groups to templates by commonality or function. The template becomes the policy!
4. Test and Validate – Perform periodic dry-run tests of each configuration file. Gather diffs and report errors from each device. Combine collected data and send to the network administrator. If required, make and commit any changes.
5. Deploy – Publish configurations into your production environment.
6. Analyze – Gather network information (telemetry) and use that information to make decisions. Institute closed loop automation by implementing rule-based actions on network events.
7. Optimize – Use machine-learning tools to train the system and drive network change. Ensure that the infrastructure remains in the desired state by continuous monitoring.
By implementing Infrastructure as Code, businesses can derive the following benefits:
Improved collaboration and efficiency—By enabling Ops teams to configure apps and infrastructure repeatedly using languages and methodologies familiar to developers, errors are reduced. This leads to Dev teams producing higher-quality code that can be tested more often and released to production faster—less errors, faster release frequency, more efficiency.
Improved customer experience—By fixing problems, releasing new versions, and enhancing applications faster, customers’ interaction with companies through applications is improved delivering a better customer experience.
Increased business agility and performance—By spending less time on managing existing applications, Dev and Ops teams can devote more time to develop new apps and operational models that target new markets and customers, and improve time-to-market.
To provide a clear vision towards, and help expedite your automation journey, you can collaborate with Juniper’s Professional Services team. Our Professional Services organization has the experience and expertise to help you adopt and automate IaC practices and architectures into your network.
Additionally, Juniper Networks provides the following IaC components and mechanisms:
Integration of Junos OS with open-source automation frameworks such as Ansible, Saltstack, Puppet, Napalm, Jenkins, and Chef.
Junos Telemetry Interface (JTI) uses a push-model to deliver data asynchronously and eliminate polling which makes it simpler to collect network data.
Virtualization mechanisms (such as vMX and vSRX devices) enable you to quickly build and adjust virtual test beds for the network.
The faster and more reliable you can add new services, test new applications, and fix problems, your time to realize improvements is reduced, resulting in greater competitiveness and elasticity, and ultimately, more profits added to the corporate bottom line. An increase in software quality leads to a more positive business performance and greater revenues.