COSC2759 2 SpecificationsSQL

Java Python 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 story” format, see https://medium.com/@cash.lebrun/the-right-way-to-write-a-user- story-9626011c1b57)

So far, Alpine Inc’s 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 ‘Deliverable’ section below.

The Approach

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

•    GitHub (GitHub Org)

• GitHub Acti COSC2759 Assignment 2 SpecificationsSQL ons – 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: Don’t get the Terraform. configurations mixed up. You can’t 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         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值