[Sprint] YAML 작성

# 학습 목표

조건에 맞는 YAML 문서 작성하기


# 해결 과제

  • github repository를 fork 한 후, clone 하여 스프린트를 진행합니다.
  • npm install을 통해 필요한 모듈을 설치합니다.
  • PUT_YOUR_YAML.yaml 파일에 아래 test1, test2, test3의 요구조건을 만족하는 yaml 문서를 작성합니다.
  • npm run test 를 통해 테스트케이스 통과 여부를 확인합니다.
  • 모든 테스트케이스를 통과하면, sprint-yaml 레포지토리에 Pull Request를 통해 제출합니다.

# 실습 자료


# 과제 항목별 진행 상황

Test1

아래의 표와 같은 데이터를 YAML 파일로 작성하세요.

Car:
  Color: Blue
  Model:
    Name: Cyber Truck
    Year: 2022
  Fuel: Electric
  Price: "$100,000"

Test2

다음 데이터를 YAML 형식으로 변경하여 작성하세요.

  • Statement는 각 다섯개의 dictionary를 요소로 하는 array/list의 형태로 작성되어야 합니다.
  • 각 요소 중 [ ] 로 작성된 것은 list의 형태로 작성되어야 합니다.
  • 같은 배경색을 가지는 값들은 dictionary의 형태로 작성되어야 하며, array/list의 한 요소여야 합니다.

case A

  Version: "2012-10-17"
  Statement:
    - Effect: Allow
      Action: ["ec2:*","elasticloadbalancing:*","route53:*","autoscaling:*","cloudwatch:*","SNS:*"]
      Resource: ["*"]
    - Effect: Allow
      Action: ["s3:*"]
      Resource: ["arn:aws:s3:::travis-terraform-state","arn:aws:s3:::travis-terraform-state/*","arn:aws:s3:::travis-shared-1-registry-images","arn:aws:s3:::travis-shared-1-registry-images/*","arn:aws:s3:::travis-shared-2-registry-images","arn:aws:s3:::travis-shared-2-registry-images/*"]
    - Effect: Allow
      Action: ["iam:GetUser"]
      Resource: ["arn:aws:iam::341288657826:user/igor-terraform"]
    - Effect: Allow
      Action: ["iam:*"]
      Resource: ["arn:aws:iam::341288657826:role/*","arn:aws:iam::341288657826:user/registry-shared-1","arn:aws:iam::341288657826:user/registry-shared-2","arn:aws:iam::*:user/cyclist-*","arn:aws:iam::*:user/worker-*","arn:aws:iam::*:user/build-trace-*"]
    - Effect: Allow
      Action: ["dynamodb:*"]
      Resource: ["arn:aws:dynamodb:us-east-1:341288657826:table/travis-terraform-state"]

case B

  Version: 2012-10-17
  Statement:
    - Effect: Allow
      Action:
        - ec2:*
        - elasticloadbalancing:*
        - route53:*
        - autoscaling:*
        - cloudwatch:*
        - SNS:*
      Resource:
        - "*"
    - Effect: Allow
      Action:
        - s3:*
      Resource:
        - arn:aws:s3:::travis-terraform-state
        - arn:aws:s3:::travis-terraform-state/*
        - arn:aws:s3:::travis-shared-1-registry-images
        - arn:aws:s3:::travis-shared-1-registry-images/*
        - arn:aws:s3:::travis-shared-2-registry-images
        - arn:aws:s3:::travis-shared-2-registry-images/*
    - Effect: Allow
      Action:
        - iam:GetUser
      Resource:
        - arn:aws:iam::341288657826:user/igor-terraform    
    - Effect: Allow
      Action:
        - iam:*
      Resource:
        - arn:aws:iam::341288657826:role/*
        - arn:aws:iam::341288657826:user/registry-shared-1
        - arn:aws:iam::341288657826:user/registry-shared-2
        - arn:aws:iam::*:user/cyclist-*
        - arn:aws:iam::*:user/worker-*
        - arn:aws:iam::*:user/build-trace-*
    - Effect: Allow
      Action:
        - dynamodb:*
      Resource:
        - arn:aws:dynamodb:us-east-1:341288657826:table/travis-terraform-state

Test3

다음 JSON으로 작성된 설정 파일을 YAML 형식으로 작성하시오.

test3: {
		"name": "Node.js CI",
		"on": {
			"push": {
				"branches": "main"
			},
			"pull_request": {
				"branches": "main"
			}
		},
		"jobs": {
			"build": {
				"runs-on": "ubuntu-latest",
				"steps": [
					{
						"uses": "actions/checkout@v2"
					},
					{
						"name": "Use Node.js",
						"uses": "actions/setup-node@v1",
						"with": {
							"always-auth": true,
							"node-version": "12.x",
							"registry-url": "https://registry.npmjs.org",
							"scope": "@octocat"
						}
					},
					{
						"name": "Install dependencies",
						"run": "npm ci",
						"env": {
							"NODE_AUTH_TOKEN": "${{secrets.NPM_TOKEN}}"
						}
					}
				]
			}
		}
	}
  name: "Node.js CI"
  on:
    push:
      branches: main
    pull_request: 
      branches: main
  jobs: 
    build: 
      runs-on: "ubuntu-latest"
      steps: 
        - uses: "actions/checkout@v2"
        - name: "Use Node.js"
          uses: "actions/setup-node@v1"
          with: 
            always-auth: true
            node-version: "12.x"
            registry-URL: "https://registry.npmjs.org"
            scope: "@octocat"
        - name: "Install dependencies"
          run: "npm ci"
          env: 
            NODE_AUTH_TOKEN: "${{secrets.NPM_TOKEN}}"

# TROUBLE SHOOTING LOG

💡 문제 내용

원인

해결 방안


# 피드백

오태경박찬규
config 파일 포맷으로 간단하게만 다뤄본 YAML 을 여러가지 case 별로 직접 작성해 볼 수 있어서 의미 있는 실습이었다.test2 에서 dictionary → array 형태를 작성할때 방향을 잘못 잡고 있었는데 문서 행별로 짚어주셔서 실습 시간을 단축시켜주셨다.

#References

Leave a Comment