Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
52cd254
Merge pull request #1 from PGR301-2020/FEATURE/trello-1234.renamebucket
glennbech Oct 12, 2020
a9e3ca7
project is neccesary on bucket
glennbech Oct 12, 2020
45ac5ea
Merge remote-tracking branch 'origin/master'
glennbech Oct 12, 2020
69e86c1
project is neccesary on bucket
glennbech Oct 12, 2020
c95a967
Update readme.md
glennbech Oct 12, 2020
d7d130e
remove key
glennbech Oct 12, 2020
6941286
change region
glennbech Oct 24, 2020
8de28ff
Merge branch 'master' of github.com:PGR301-2020/07-terraform-and-travis
glennbech Oct 24, 2020
7b827be
new key
glennbech Oct 24, 2020
42989aa
project is neccesary on bucket
glennbech Oct 24, 2020
7d9b2e7
project
glennbech Oct 24, 2020
377ec1c
change service name
glennbech Oct 24, 2020
2cf64d8
change image
glennbech Oct 24, 2020
b6a2776
Update readme.md
glennbech Oct 24, 2020
aa461e6
Update readme.md
glennbech Oct 24, 2020
412ad9d
Update readme.md
glennbech Oct 24, 2020
9861937
latest version with logging
glennbech Oct 25, 2020
f932d50
latest version with logging
glennbech Oct 25, 2020
beca7f3
environment variable for logs token
glennbech Oct 25, 2020
c4c0006
syntax
glennbech Oct 25, 2020
655c235
Update readme.md
glennbech Oct 26, 2020
103810f
Ups det var en feil, vi ruller tilbake,
glennbech Oct 26, 2020
1954cca
uptime check
glennbech Nov 1, 2020
c7daf46
hello
glennbech Nov 1, 2020
51aa5b7
array
glennbech Nov 1, 2020
d6ebfc2
refactoring project
glennbech Nov 1, 2020
64ff377
project id
glennbech Nov 1, 2020
54d46b3
moved project id
glennbech Nov 1, 2020
51812d4
project name mf
glennbech Nov 1, 2020
e5fbf83
ups
glennbech Nov 1, 2020
cb8f409
project required
glennbech Nov 1, 2020
cc427f2
uptime checks by statuscake
glennbech Nov 1, 2020
e30f2f8
uptime
glennbech Nov 1, 2020
c8c044a
Contact groups!
glennbech Nov 1, 2020
96a6e17
will break
glennbech Nov 1, 2020
5f1e362
group
glennbech Nov 1, 2020
65d1103
Default contact group
glennbech Nov 1, 2020
9e45b3f
Default contact group
glennbech Nov 1, 2020
e432525
Conteat ID
glennbech Nov 1, 2020
432fe0f
remove test to see if it helps
glennbech Nov 1, 2020
05ca980
new contact group
glennbech Nov 1, 2020
7da7a5f
new contact group
glennbech Nov 1, 2020
5be439f
removcal
glennbech Nov 1, 2020
ee72f8a
removcal
glennbech Nov 1, 2020
fd2768e
test secret
glennbech Nov 2, 2020
73d82e0
echo newline
glennbech Nov 2, 2020
e8742e8
Update readme.md
glennbech Nov 15, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ env:
- GCP_PROJECT_ID=terraform-292215
- tf_version=0.12.19
- CLOUDSDK_CORE_DISABLE_PROMPTS=1
- secure: PaT4O2p96Yr7qpyKnDjFFOQqCOBm/CIxYzpImEpkY/6jpGG/NnumKGqEA9YryPTEqateiJHXj8r/og+XACKLd9R+e6ChmugA2CczNx5rx3lJOCbmQcAgtqxC8QxPPV0LnYaElZxD5OTcEta/aH1RGCZzlWSIxgTa4Oeg1GsP5O9HoXOC8u9886aof+3WUZrXCrB4QRH2BOVSFEQHPjMBsM0xbxZqgsOlyl6TGYxvo7OYV3l1Ps8bnGdY/SSdNElhiQfMG6Err9RKRly/YAUei3RqyT60Hh70IYTd/fqy8ZJECMMEGvYRBysX4Br4drj1mqIdNWcN423xnTe0sJxsTicBiHAAipFmBU5b8+cMuhmcHqhoeNdPwZSFUtmoOiZkQwINWw6QKq27cHmmF+NuAXb2nn7pe73F8pyv5jZY65zH2YKnaI0GWpVZAk0ocg1n+UCKsTMEkh2Ch0AWPpqkLAPyC6XAmdgZNBvet30ml1uOXqk63LaCgZMV9xRuzrkhqJ0EqqInYpqw5YWGsPd+hKJdXujYBXvVLeR0M9Ej+3Z/9/vvjOYOu7lWQvRlvbkZ1yjP9Cqs3ePFduKTKiEdUTbfwj4KrrKOKch5zxureGey7HEqTc39zJhoMUbBknHukik5jlOYdEuJt7YiH0YxuIlLhFE6E/rDP9sB9WU2lBY=
- secure: hQSG6QSWPmRaEa0sLGNIZzaV/9zb7z8l5yawGffSeziozzQFHgGJLQ/etEnS9t8eeHNxl3IYeERN0FtQ9cGb92I/ou1GtBnDHkEWZj6hOGsDEt6+D6sYRe4Ae8jLI0jhPc8AvBxJsYZKUr0MC4QfP9OeEjJmT7xPo8+YgU2dJNE7hXqA/ORyLT/9TGZgZGdih2Ljes7BVmBeoOCwgpD/AdxT+pL54dad+SwmB5WSTPXmtlDI2Ocj04ldtlzCA1ZEA7jZjVJAV+tkZDVyNjdsQlMAjJmXzBJ5OZbwu5JAILMkwOlB7bTcDc8+zTD2QXj0xuNoMCq5o2qk3vuObJ5XPi/rtozsULQjbCBAEpd8PLnu5+5zgIMtm/u4VE4qZIdAq9dOduLamdbSQAygmqIq2n2QBXIcLaSNZjTS8rzOXiliPP5rkRGwYe0l/ONTZCvFsQqqeTUiwr/IvhSZQiWK7elOW05zt9SDgovsyC0fePir4kcyPYYHsIZB3WyTdB75ahHNWvETRfvk8mbGMSSEXWtB+lDGtBsQIPauIKrQXZN4vmQ9/iMp4IKK6VqWo5CvuFLBzVWwDHx/hkLoLOjE+VbwHb8v4FzBifn1vJVzElzkqCStOSrMuMJf05pYhCVLXqITZBk74Bmy657dwf168hQ061ggFlmYowQYt0b/xa8=
branches:
only:
- master
Expand All @@ -22,6 +24,12 @@ install: true
script:
- |-
set -ex;

export STATUSCAKE_KEY=$(gcloud secrets versions access latest --secret=STATUSCAKE_APIKEY)
echo 'I might later use secret manager to set $STATUSCAKE_KEY'
echo $STATUSAKE_KEY

export TF_VAR_logz_token=$LOGZ_TOKEN
terraform init
terraform plan
terraform apply --auto-approve
Expand Down
5 changes: 3 additions & 2 deletions example_bucket.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
resource "google_storage_bucket" "static-site" {
name = "glennsawesomedronefootage"
location = "EU"
project = var.project_id
name = "glennsawesomedronefootage"
location = "EU"
}


19 changes: 11 additions & 8 deletions main.tf
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
resource "google_cloud_run_service" "hello" {
name = "cloudrun-srv"
name = "helloworld-service"
location = "us-central1"
project = var.project_id

template {
spec {
containers {
image = "gcr.io/cloudrun/hello"
image = "gcr.io/terraform-292215/helloworld@sha256:0ee92532317e87faadbe0231986e827605d1d97cbf9acd9c44557f49a416867d"
env {
name = "LOGZ_TOKEN"
value = var.logz_token
}
}
}
}
Expand All @@ -16,7 +21,6 @@ resource "google_cloud_run_service" "hello" {
}
}


data "google_iam_policy" "noauth" {
binding {
role = "roles/run.invoker"
Expand All @@ -27,9 +31,8 @@ data "google_iam_policy" "noauth" {
}

resource "google_cloud_run_service_iam_policy" "noauth" {
location = google_cloud_run_service.hello.location
project = google_cloud_run_service.hello.project
service = google_cloud_run_service.hello.name
location = google_cloud_run_service.hello.location
project = google_cloud_run_service.hello.project
service = google_cloud_run_service.hello.name
policy_data = data.google_iam_policy.noauth.policy_data
}

}
2 changes: 1 addition & 1 deletion provider.tf
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ terraform {
}

provider "google-beta" {
credentials = file("terraforn.json")
credentials = file("terraform.json")
project = "terraform-292215"
version = "~> 3.0.0-beta.1"
}
Expand Down
75 changes: 73 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ For å

## Lag et nytt repository for infrastruktur

Kopier terraform filene i dette dokumentet til repoet.
Kopier filene fra dette repositoryet, eller lag en fork

Du må se over provider.tf og endre

Expand Down Expand Up @@ -150,7 +150,7 @@ Legg merke til --add. openssl kommandoen som dekrypterer legges rett inn i .trav
```

NB. Hvis du har hatt problemer med Travis Encrypt for Windows er naturligvis løsningen... Docker. Det finnes et Docker image som har travis CLI, og som er basert
på et Linux OS. Du kan kjøre
på et Linux OS. Du kan kjøre (feks git bash)

```bash
docker run -v $(pwd):/project --rm skandyla/travis-cli encrypt-file <some-file> --add
Expand All @@ -159,3 +159,74 @@ docker run -v $(pwd):/project --rm skandyla/travis-cli encrypt-file <some-file>
## Forsøk å endre på infrastruktur

Endringer i infrastrukturen din skal nå kunne gjøres ved å comitte endringer på master i ditt infrastruktur repository

## Del 2: Connect the dots. ..

### Prøv følgende

Det er nå på tide å deploye vår egen applikasjon i Google cloudrun ved hjelp av Terraform og Travis.
Vi skal bruke samme GCP prosjekt for både infrastruktur og kode. Vi skal ogsså ha to repositories, ett for applikasjonen, og ett for
infrastruktur.

Nye versjoner av applikasjonen bygges av Travis og et nytt docker image pushes til Google Cloud Registry på hver endring av master branch.
Når man ønsker å legge ut en ny versjon av applikasjonen, endrer man Docker image i Terraform koden.

* lag en endring i applikasjonen, push til master
* Se at Jenkins jobben til applikasjonen kjører ok
* Kontroller Google Cloud Registry at det er ny revisjon av container image for applikasjonen
* Kopier container image ID, og sett den inn i main.tf i terrafomr koden under "google_cloud_run_service" ressursen
* Sjekk at Jenkins jobben for terraform infrastruktur kjører OK
* Verifiser at applikasjonen



### Applikasjon

Bruk en oppgave der vi tidligere har bygget en Java applikasjon med maven i docker multi stage. For et eksempel, se på https://github.com/PGR301-2020/01-devops-helloworld.

.travis.yml skal se omtrent slik ut ;

```yml
services:
- docker
env:
global:
- GCP_PROJECT_ID=<gcp-project-id>
- IMAGE=gcr.io/<gcp-project-id>/<image-name>
- CLOUDSDK_CORE_DISABLE_PROMPTS=1
before_install:
- openssl aes-256-cbc -K $encrypted_ba8f794f8d33_key -iv $encrypted_ba8f794f8d33_iv
-in <key-json-file>.enc -out <key-json-file> -d
- curl https://sdk.cloud.google.com | bash > /dev/null
- source "$HOME/google-cloud-sdk/path.bash.inc"
- gcloud auth activate-service-account --key-file=<key-json-file>
- gcloud auth configure-docker
- gcloud config set project "${GCP_PROJECT_ID}"
install: true
script:
- |-
set -ex;
docker build -t "${IMAGE}:${TRAVIS_COMMIT}" . && \
docker push "${IMAGE}:${TRAVIS_COMMIT}" && \
set +x
```

Vi må erstatte følgende verdier

* gcp-project-id - Hvilket Google Cloud prosjekt vi skal bruke
* image-name - Et navn du velger for et docker image
* key-json-file - Navnet på en JSON som inneholdet privat nøkkel lastet ned for en Service Account.


### Inrastruktur

Følgende seksjon i main.tf bestemmer hvilket container image som brukes for cloud run
```
template {
spec {
containers {
image = "gcr.io/terraform-292215/helloworld@sha256:0ee92532317e87faadbe0231986e827605d1d97cbf9acd9c44557f49a416867d"
}
}
}
```
12 changes: 0 additions & 12 deletions terraform.json

This file was deleted.

Binary file modified terraform.json.enc
Binary file not shown.
11 changes: 11 additions & 0 deletions uptime_checks.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
provider "statuscake" {
username = "postglennbechno"
}

resource "statuscake_test" "google" {
website_name = "My test"
website_url = "https://letshopethisdoesnotexistatall.com"
test_type = "HTTP"
check_rate = 300
contact_group = ["193657"]
}
7 changes: 7 additions & 0 deletions variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
variable "logz_token" {

}

variable "project_id" {
default = "terraform-292215"
}