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
Source code:https://github.com/timoguic/ACIT4640-todo-app
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:
provisionprovision the virtual machine and network in AWS
cleanupdestroys 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 application1 mark
Application provisioning13 marks
Use of roles and dependencies2 marks
Use of variables2 marks
Use of templates2 marks
Use of handlers2 marks
Provisioning steps (efficiency, best practices and use of Ansible modules)5 marks
No deploy tag0 for this section
AWS provisioning: provision tag5 marks
Creation of the virtual environment5 marks
Virtual environment is created even if it exists0 for this section
No provision tag0 for this section
AWS provisioning: cleanup tag2 marks
Cleanup of the virtual environment2 marks
No cleanup tag0 for this section
Provisioning information: info tag4 marks
Information about the virtual environment: IP address1 marks
Information about the application (status of the services)3 marks
No info tag0 for this section
TOTAL25 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.
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。