Devops Fall 2020
Project1:
Create a hands off build of a load balancer plus “n” nginx instance web servers.
Using aws and command line tools, create a script that will start up “n” aws instances and configure each appropriately. N indicates the number of nginx servers so the total number of instances will be N+1 since there will be one load balancer and N web-servers.
• WebServer:
• Configure n servers that have nginx running.
• These servers will get their content from git.
• Each server will run a docker container with a gitlabrunner to retrieve content from the git repository and put the content in the web server space.
• The instance size should be a variable in the script.
• LoadBalancer:
• This load balancer will direct traffic to the n webservers in this project.
• Git: You will use one git repositories but multiple branches.
• Use your existing devops-1-UID repository
• Branch called project1 -> this will hold your scripts and ansible playbooks
• Branch called webdev -> this will hold the development html files. There must be at least 5 html files and an index.html.
• Branch called webprod -> this will be merged from webdev and will trigger the pipeline to have the actual files placed on your nginx servers.
• You will use git to publish content to the n servers. Each web server will have a gitlab runner that will be used to publish code to the servers when a merge happens to the webprod branch.
• Ansible: Ansible playbooks will be used to install the appropriate software on all servers.
• StartSystemScript:
• A script for creating the n+1 ec2 instances and then invoking the ansible playbook.
• This script will also register the ip of the load balancer to the dynamic dns system so that the loadbalancer will have the dns entry
• The script will take one parameter, the number of nginx servers.
• ./StartSystemScript 3
• this would start the system with 3 nginx servers (plus the load balancer)
• All aws instances must use stock ubuntu images, eg: you can not create your own ami.
• The docker image for the gitlab runner must be created by a Dockerfile from standard images. Eg: No building your own image.
• The curl string for registering the loadbalancer
• is available at https://external-dns.csi.miamioh.edu/
• Note: The key is good for one day
• url will be http://UID.aws.csi.miamioh.edu -> that should point to the load balancer.
• Deliverable:
• Due Tuesday in class: (11/10)
• The StartSystemScript that launches the n aws instances
• registers the load balancer’s DNS entry.
• Also this script should create the ansible hosts file and the load balancers configuration script.
• Due Thursday in class: (11/12)
• The ansible playbook that installs and configures the load balancer and the n nginx servers.
• Due Tuesday in Class: (11/17)
• Complete project.
• As a heads up, an extension of this project will be assigned on Tuesday 11/12 which will be the final project that is in place of an exam. This project will be due on the day our final exam and you will be expected to be on webex during the exam time.
• T 12:45 PM – 2:45 PM – 12/08/20 To 12/08/20 – Web-Based Curriculum