代写COSC2759 Assignment 2 Specifications代做留学生SQL 程序

- 首页 >> Matlab编程

COSC2759 Assignment 2 Specifications

Scenario

You have been assigned the following “story” on Jira:

AS A developer at Alpine Inc,

I WANT an automated deployment process for our Foo app, including infrastructure,

SO THAT we can avoid human errors during the deployment process.

Acceptance criteria:

GIVEN credentials for an AWS environment, and a docker image already built and hosted in an image registry,

WHEN we run the deployment script. in the repo (or, ideally, when a GitHub Actions workflow runs),

THEN we get the infrastructure we need, with the application running on it.

(For this user storyformat, see https://medium.com/@cash.lebrun/the-right-way-to-write-a-user- story-9626011c1b57)

So far, Alpine Incs production infrastructure and application deployments are managed manually which is prone to human error. They would like you to have a look at how to automate the infrastructure and application deployment.

The Foo app is a node.js web app with a PostgreSQL database backend. The dev team has built the app’s docker image and hosted it at mattcul/assignment2app (note: this is a docker pull URL, not a web address). They would like you to deploy this application to EC2. The current deployment process    is described in how-to-deploy.txt in the starter repo. When running correctly, the UI of the Foo app looks like this:

Ideally, they would like to achieve greater resiliency and automation, but as a minimum they need an automated process to get the app container and its database running on an EC2 instance. More details can be found in the Deliverablesection below.

The Approach

Alpine  Inc’s CTO  (Chief Technology Officer)  has  prescribed the following tools for  use  in this project:

•    GitHub (GitHub Org)

GitHub Actions used for creating the pipelines

Terraform.

•    Ansible

•    AWS

Docker

You may use additional tools, libraries, etc as long as their inclusion is explained and justified in your README.md.

Access GitHub Org

1.    Log in to GitHub, navigate to  ‘Your organizations’ and accept invite (should already be accepted from last

assignment). COSC2759 Sem 2, 2024 organisation (github.com)

2.    Create new repository, naming should be student_id-assignment-2

a.    If you are in pairs, please name student_id1-student_id2-assignment-2

b.    NOTE: you do NOT need to have same partners, you can change/ try to attempt this individually/ ask for a new partner

3.    Upload the zipped file found under the assignments section in canvas – happy coding!

a.    Download zip file

b.    Unzip to where you’d like to store code

c.    Follow steps on GitHub to upload file

Deliverables

You are given a copy of the Foo app repo. Alpine Inc expects you to update this repo with the scripts and other files required for your solution. Whatever you put in your repo should be

explained by your README.md.

Note that the `how-to-deploy.txt` file might not contain all the details you need. You may need to fill in some gaps using your judgment. Please use your README.md file to explain and justify your decisions.

Note: see the assignment rubric for additional details; the rubric is what your marks will be based on.

Section A

1.   In README.md, describe and justify your solution, including appropriate use of diagrams

(e.g. process diagram and infrastructure architecture diagram). (20 marks)

a.   Note: As you proceed through sections A-D, you should update your README file to

cover your whole solution, not just your solution for section A.

2.   Use Terraform. to deploy the required infrastructure e.g. EC2 instance(s). (10 marks)

3.   Use Ansible to configure the EC2 instance(s) to run the app and database containers. (10 marks)

4.   Write a shell script. to deploy the infrastructure and run the application on it. (10 marks)

Section B

5.   To improve the resiliency of the application, deploy the app container on two identical EC2

instances behind a load balancer, with the database running on a separate EC2 instance. (10 marks)

Section C

6.   In your Terraform. configuration, use an S3 bucket remote backend for state. (10 marks)

a.   Note: You can manually create the state bucket or you can use the Terraform.

configuration in `misc/state-bucket-infra.tf` (separate from your main Terraform. configuration).

b.   Note #2: Dont get the Terraform. configurations mixed up. You cant deploy the

state bucket with the configuration that is using the state bucket. If this last point is too confusing, just manually create the state bucket and ignore `state-bucket-infra.tf`.

Section D

Note: If you attempt this part of this assignment, also include a standalone deployment script. as per “Section A” . (The CTO wants to “avoid vendor lock-in”.)

7.   Create a GitHub Actions workflow which deploys the infrastructure and runs the application on it. (10 marks)

8.   Trigger GitHub Actions workflow run whenever the `main` branch is modified, and also able

to be triggered via the GitHub Actions REST API. (10 marks)

9.   Ensure that if the infrastructure is already deployed in the environment, then re-running

the GitHub Actions workflow results in no operations being performed (10 marks)





站长地图