Systems and network provisioning
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
ACIT 4640 - Systems and network provisioning
Final assignment
This is a group assignment. You will work on it with the same partner(s) as the previous project assignments.
Step 1 - Find a project / application to provision
Find an application, service or project to deploy. The requirements are:
you must use CentOS 7 as the base operating system
the application must have a 3-tier model, with frontend / middleware / backend
example: in the todoapp, we have
ofrontend: Nginx
omiddleware: NodeJS
obackend: MongoDB
it cannot be the todoapp, Wordpress or the hichat application used during the exams
it must be easy to validate that the application works
oideally with a web browser (web service or API)
Submit your proposal to D2L before Tuesday 31 March 8PM at the latest. (text format)
Use the following format for your submission (example for the TODOAPP service).
Application name: TODOAPP
Application usage: Web application to manage todo lists in the browser.
Frontend: Nginx
Middleware: NodeJS
Backend: MongoDB
Validation method: Open URL in web browser
Add new todo
Check box to mark todo as done
If applicable, you can also add URLs where the application can be seen "live" (for instance: Heroku demo provided by the author of the application).
Grading:
1 mark if your application fits the requirements
if your application does not fit the requirements, there will be a 50% penalty
It is recommended that you discuss your proposals during next class (30/31 March).
Step 2 – Write the Ansible playbook for your application
Create a working Ansible playbook to provision your application from scratch.
Make sure that your playbook follows the best practices:
use variables
use templates
use roles, with dependencies
use handlers to limit running unnecessary actions
Step 3 – Provision the AWS environment to provision your app in the cloud
Create a new role. This role will allow you to manage (create, delete, and get information about) your AWS instances. Use the dynamic inventory feature of Ansible, and the `ec2` family of modules.
Use tags to create two functionalities:
provision provision the virtual machine and network in AWS
cleanup destroys the virtual machine and environment in AWS
Step 4 – Provision the application in the cloud
Combine the functionalities above to obtain a playbook called `final_acit4640.yml`. Please use this exact file name!
The playbook must have the following features, based on tags:
ansible-playbook final_acit4640.yml --tags provision
Creates the AWS virtual environment if it does not already exist
ansible-playbook final_acit4640.yml --tags cleanup
Destroys the AWS virtual environment if it exists
ansible-playbook final_acit4640.yml --tags deploy
Tries to deploy the application to the AWS virtual environment if it exists. Displays the URL of the running service at the end of the playbook. If the AWS environment does not exist, do nothing.
ansible-playbook final_acit4640.yml --tags info
Prints information about the service:
owhether the AWS environment exists or not
owhether the service is running or not
ansible-playbook final_acit4640.yml
Tries to provision the AWS environment, and then the application on it. If everything succeeds, prints the URL of the service at the end of the run.
Grading rubric
Preliminary research about the application 1 mark
Application provisioning 13 marks
Use of roles and dependencies 2 marks
Use of variables 2 marks
Use of templates 2 marks
Use of handlers 2 marks
Provisioning steps (efficiency, best practices and use of Ansible modules) 5 marks
No deploy tag 0 for this section
AWS provisioning: provision tag 5 marks
Creation of the virtual environment 5 marks
Virtual environment is created even if it exists 0 for this section
No provision tag 0 for this section
AWS provisioning: cleanup tag 2 marks
Cleanup of the virtual environment 2 marks
No cleanup tag 0 for this section
Provisioning information: info tag 4 marks
Information about the virtual environment: IP address 1 marks
Information about the application (status of the services) 3 marks
No info tag 0 for this section
TOTAL 25 marks
You can get bonus marks if your application / service is not in the list I provided on D2L, or if it is very complex to set up (more than 3 services). If the application is not available or broken after running the playbook, you will get 0 for the whole application provisioning section.
Submission
Push your source code to GitHub. Make sure that you do NOT push your AWS keys!
Add the final_project tag to your work, and make sure you push the tag to GitHub too.
Submit the link to your repository on D2L (Assignments > Final project).
Note:
You will need to set up a time to meet and demo your application and answer questions. This must happen before Thursday 16 April, 6PM. We will meet using Zoom for the demos.
Please organize it as soon as possible - there is a limited number of hours per day. Students who are not present during their group demo will receive 0.
No late submissions will be accepted. If you do not demo your program, you will get 0.