Infrastructure As Code
Total Page:16
File Type:pdf, Size:1020Kb
Infrastructure as Code Towards Dynamic and Programmable IT systems Sotirios Naziris November, 2019 Infrastructure as Code Towards Dynamic and Programmable IT systems A thesis submitted in fulfillment of the requirements for the Master of Science degree in Internet Science and Technology Faculty of Electrical Engineering, Mathematics and Computer Science Author Graduation Committee Name: Sotirios Naziris Chairman: Dr. L. Ferreira Pires (UT) Institute : University of Twente Members: Dr. M. J. van Sinderen (UT) 7500 AE Enschede ing. R. IJpelaar (Thales) The Netherlands Abstract The manual installation and configuration of IT systems has been a tedious and time consuming process that created several challenges to the engineers during the maintenance and management process of the IT systems. The introduction of cloud computing in combination with the rise of the virtualization technology have managed to address some of these challenges. However, these virtualized cloud systems are followed by a huge portfolio of new tools and platforms that are difficult to learn and maintain. As a result, organizations started investigating the software-defined technology as a new and effective way to meet these new standards and serve the constantly increasing demand of the industry. The software-defined technology describes every part of an IT system that can be performed entirely by software, ranging from the infrastructure to the deployment level of an IT system. The goal of this research project was to investigate the software-defined technology and suggest how it can be used in order to improve the static IT infrastructure of an organization. The literature study of this research focuses on the concepts and the available software-defined tools at each layer of an IT system. Based on the knowledge acquired from the literature study, a reference architecture of the infrastructure and the network layer of a generic software-defined system was proposed that describes the interconnections between the different software-defined concepts. The next step was the design of a software-defined system that uses specific tools and technologies, and is based on a specific list of requirements. The requirements were formed by studying the needs of an actual mission critical organization. The final step was the validation of the design, which was performed by conducting a series of semi-structured interviews with seven industry experts. The validation results showed that the software-defined technology can improve the scalability, upgradability and documentation of an IT system, but the proposed design involves high levels of complexity, which might affect the performance and the required learning curve of the system. Overall, the interviewees acknowledged the potential of this technology and mentioned that its current maturity is inadequate for mission critical systems. Based on these remarks, a list of recommendations and several aspects that require additional future research are included in this thesis. i Preface This thesis was written to fulfill the final step of my “Internet Science and Technology” master programme at the University of Twente. The report had been written within a seven months period, started on May 2019 and was officially finalized on November 2019. The project was inspired and performed in cooperation with Thales Nederland, which is a company that specializes in naval systems, logistics and air defense systems and they are in constant search of new technologies that could help them improve their current systems. At this point, I would like to express my sincere gratitude to all the people that helped me complete this master thesis project. First of all, I would like to thank my university supervisors, Luis and Marten for their guidance throughout this research procedure. Their feedback was really useful on improving the structure of the thesis and finding the correct research approach. Furthermore, I would like to thank my supervisors from Thales for their useful feedback and support. I would like to thank Remco for his help especially on the technical part and for our great cooperation during our weekly meetings. I would also like to thank Gerrit Binnenmars for coming up with the idea of this project and for challenging me to think creatively and unconventionally. In addition, I would like to acknowledge the help from Andreas Frank who showed great interest into my project and provided fruitful feedback on the writing of this master thesis project. Additionally, I would like to express my gratitude to the rest of the Thales employees who participated in the validation interviews and offered their valuable insights on my designs. Moreover, I would like to thank my parents for supporting me throughout my entire life and for giving me the opportunity to continue with my studies abroad. Last but not least, I would like to thank my girlfriend Virginia for her love and emotional support during the tough times that I faced during the completion of this project. I hope that the reading of this thesis will be useful and interesting to you, and you can always contact me in case you have any questions or comments. Sotiris Enschede, Netherlands ii Table of contents Abstract ............................................................................................................................. i Preface ............................................................................................................................. ii Table of contents ............................................................................................................. iii List of Figures .................................................................................................................. vi List of Tables .................................................................................................................. vii Acronyms ....................................................................................................................... viii 1 Introduction ............................................................................................................... 1 1.1 Problem Statement ......................................................................................................... 1 1.2 Software-Defined Concept .............................................................................................. 2 1.3 Scope .............................................................................................................................. 3 1.4 Research Methodology ................................................................................................... 4 1.5 Literature Study ............................................................................................................... 5 1.6 Thesis Structure .............................................................................................................. 6 2 Software-Defined Infrastructure ................................................................................ 7 2.1 General Elements ........................................................................................................... 7 2.2 Benefits of Infrastructure as Code ................................................................................ 10 2.3 Provisioning Tools ......................................................................................................... 12 2.3.1 Terraform ............................................................................................................... 12 2.3.2 Openstack Heat ..................................................................................................... 14 2.3.3 Comparison of the provisioning tools ..................................................................... 14 2.4 Configuration Tools ....................................................................................................... 15 2.4.1 Chef ....................................................................................................................... 15 2.4.2 Puppet ................................................................................................................... 17 2.4.3 Ansible ................................................................................................................... 18 2.4.4 Saltstack ................................................................................................................ 19 2.4.5 Comparison of the configuration tools ................................................................... 20 3 Software-Defined Technology at the Network Layer ............................................... 22 3.1 Software-Defined Networking ....................................................................................... 22 3.1.1 Southbound Interfaces ........................................................................................... 24 iii 3.1.2 Northbound Interfaces ........................................................................................... 25 3.1.3 SDN Controllers ..................................................................................................... 26 4 Software-Defined Computing .................................................................................. 31 4.1 Benefits of SDC ............................................................................................................ 32 4.2 SDC Tools ....................................................................................................................