티스토리 뷰

테스트 환경 구성 : https://www.runatlantis.io/guide/testing-locally.html#install-terraform

 

Testing Locally | Atlantis

Testing Locally These instructions are for running Atlantis locally on your own computer so you can test it out against your own repositories before deciding whether to install it more permanently. TIP If you want to set up a production-ready Atlantis inst

www.runatlantis.io

conftest policy : https://www.runatlantis.io/docs/policy-checking.html#how-it-works

 

Conftest Policy Checking | Atlantis

Conftest Policy Checking Atlantis supports running server-side conftest policies against the plan output. Common usecases for using this step include: Denying usage of a list of modules Asserting attributes of a resource at creation time Catching unintenti

www.runatlantis.io

./atlantis server \
--atlantis-url="$URL" \
--gh-user="atlantis" \
--gh-token="$TOKEN" \
--gh-webhook-secret="$SECRET" \
--repo-allowlist="$REPO_ALLOWLIST" \
--enable-policy-checks \
--repo-config=atlantis.yaml

위와 같이 실행해서 테스트를 진행했다.

주의할 점은 --enable-policy-checks 옵션과 --repo-config=atlantis.yaml 을 지정해줘야 한다.

또한, atlantis.yaml 파일에 설정 시 아래와 같이 꼭! 버전 지정을 해줘야 한다.

미지정시 오류 관련 이슈 : https://github.com/runatlantis/atlantis/issues/1632

 

Policy Checking Error: ensuring policy executor version: no conftest version configured/specified · Issue #1632 · runatlantis/

Problem I'm running Atlantis on an EC2 server, and have the following server-side configuration for policies (in addition to running atlantis with the --enable-policy-checks flag): policies: ow...

github.com

# atlantis.yaml
policies:
  conftest_version: 0.23.0
  owners:
    users:
      - qwer
  policy_sets:
    - name: null_resource_warning
      path: /Users/[USERNAME]/Downloads/atlantis_test/null_resource_warning/
      source: local

path에 전체 경로로 넣어줘야되며, 현재는 source를 local만 지원한다.(참고)

users에 검증이 실패하더라도 허용해줄수있는 유저를 명시해주면 된다.(예를들어 0.0.0.0/0 오픈을 막는다고 가정하면, 서비스 시에는 꼭 필요하므로 실제 필요한지 점검 후 허용해주는 식이다.)

모든 체크를 통과해야 Merge pull request가 초록불이 들어온다.

유저가 맞지 않으면 아래 명령어를 입력해도 승인이 실패한다.

atlantis approve_policies

approve 실패

당연히 apply 도 실패한다.

apply 실패

이제 users를 qwer에서 cjsrkd3321로 변경해준다. 그 후 다시 시도한다.

정책상 안되도록 되어있지만 atlantis.yaml 파일 수정 후 서버 재기동했기 때문에 cjsrkd3321이 정책 승인 가능하다.

승인 후 apply 까지 완료하면 Merge pull request 버튼이 초록색으로 활성화된다.

아래는 실제 null_resource_warning 검사하는 파일이며, 확장자 꼭! 붙여줘야한다.

# null_resource_warning.rego
package main

resource_types = {"null_resource"}

# all resources
resources[resource_type] = all {
    some resource_type
    resource_types[resource_type]
    all := [name |
        name:= input.resource_changes[_]
        name.type == resource_type
    ]
}

# number of creations of resources of a given type
num_creates[resource_type] = num {
    some resource_type
    resource_types[resource_type]
    all := resources[resource_type]
    creates := [res |  res:= all[_]; res.change.actions[_] == "create"]
    num := count(creates)
}

deny[msg] {
    num_resources := num_creates["null_resource"]

    num_resources > 0

    msg := "null resources cannot be created"
}

원래는 apply 부분도 X 표시가 들어오는데, 사진을 잘못찍었다. 나중에 더 고급지게 사용하게 될 때 수정하도록 하자.

'퍼블릭클라우드 > Terraform' 카테고리의 다른 글

Finding latest version of hashicorp/teplate...  (0) 2021.08.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함