본문 바로가기

infra(terraform, aws, git)

(7)
ec2 volume 용량 조정하고 적용하기. 현재 ec2에 디스크 용량이 별로 없어 자꾸 cicd에서 docker를 이용해 배포할때 no space left on device 에러가 뜬다. 그래서 volume을 증가시키기로 했다. 해당 인스턴스를 선택한 다음에 스토리지에서 해당 볼륨을 클릭하면 크기를 수정할 수 있는데, 나는 120G로 수정했다. 그리고 수정이 완료되면, volume은 증가했지만 우리가 쓰고있는 파티션에는 적용이 안된걸 확인할 수 있다. 즉, 우리는 growpart 명령어를 이용해 우리가 쓰고있는 nvme0n1p1이라는 파티션을 80G에서 120G로 확장해야한다. 그러면 위와 같이 120G를 전부 할당받게 되는데, 아직, df -hT 결과를 보면 확장이 안되어있다. 그 이유는 파일시스템도 같이 확장해주어야 하기 때문이다. 우리는 d..
github action runner erorr: not a git repository github action으로 cicd를 실행하는데에 있어서 image를 build하는데 너무나 오랜 시간이 걸려, 이미지를 저장하고 있는 서 버에 runner를 직접 연결해서 쓰려고 한다. runner를 실행시키니 다음과 같은 에러가 떴다. 오류를 찾아보니 git 2.18버전 아래일 경우 github action에서 checkout 모듈을 사용하는데 있어서 git repository를 가져오는 것이 아니라, 단순히 rest api를 이용해 파일과 폴더를 가져온다는 것이다. sudo add-apt-repository ppa:git-core/ppa -y sudo apt-get update sudo apt-get install git -y 실제로 runner의 _work폴더에 가보니 .git 폴더가 없었고, ..
terraform validation error: status code 400 in lambda creation terraform을 생성하려고 할 때 위의 에러를 만날 수도, 만나지 않을 수도 있다. 그 이유는 잘 나타나지 않는 에러이기도 하면서, 단순한 에러이기도 하기 때문이다. 나 역시 같은 terraform 코드를 이용해 우리 회사에서는 잘 되던 것들이, on premise로 다른 회사에 적용 시키려고 할 때 이 같은 에러가 발생해서, 구글링을 열심히 했다. 일단 400대의 코드를 보니 요청을 잘못했음을 알 수 있으며, 구글링 결과, terraform은 자세한 에러를 표시해주지 않고, 두리뭉실하게 표현하는 경향이 있다고 한다. 그래서 직접 에러를 자세히 보기 위해 aws cli를 이용해 lambda function을 생성해보도록 했다. master@www:~$ aws lambda create-function ..
(에러)ecr에 docker image push할 때 나오는 에러 2가지 해결. ECR에 docker image를 push할 때 나오는 에러가 있다. 일단 첫번째로 no basic auth credentials 이다. 다음과 같이 ecr repository에 docker push를 하려고 하는데 no basic auth credentials가 뜬다. ecr에 image를 push하려고 할때 권한이 없어서 문제인건가? 그렇다면 ecr repository에 접근할 권한이 없는건가? 아니면 push할 권한이 없는걸까? 사실 push 할 권한같은 건 없다. 애초에 aws에서 ecr authorization을 인증할 때 token을 발행하는데 이러한 token이 12시간이 제한이고, 이러한 token으로만 권한을 부여하기 때문이다. 그렇다면 접근할 권한이 없는지 확인해야한다. 첫번째로 ~/...
terraform -lock=false?? terraform으로 backend와 dynamodb를 지정하여 state locking을 시도했을 때 아래와 같은 에러를 만나고 그냥 시키는 대로 -lock=false를 줬을 것이다. 하지만 위의 에러에서 제일 마지막에 말했듯이 하면 위험하다는 뜻이기도 하기때문에 왜 에러가 발생하는지 어떻게 고치는지 알아보자. 사실 엄청 쉬운 문제다. 전에 내가 작성한 블로그에서 dynamodb가 lock권한을 부여할 때 key값을 보고 파일을 확인하는 절차를 따른다고 했다. https://cksdid4993.tistory.com/64 (에러)terraform dynamodb validException key error terraform을 실행시킬 때 backend라는 개념과 dynamodb라는 개념이 있다. 이러한 ..
(에러)terraform dynamodb validException key error terraform을 실행시킬 때 backend라는 개념과 dynamodb라는 개념이 있다. 이러한 개념을 잠깐 설명하자면, 만약 여럿이서 resource를 관리하려고 할 때 서로 같은 state를 공유하기 위해 backend에 state file을 지정하여 init할 때 현재 state file의 상태를 보고 판단한다. 보통 backend는 s3를 이용하는데 아래와 같이 준다. s3에 접근하기 위한 key들과 s3 bucket이름, 그리고 저장될 파일경로 등등이 쓰인다. 만약 backend로 state를 공유하지 않는다면, A 사람: apply로 name이 "test"인 ecr 생성 B 사람: 똑같이 name이 "test"인 ecr을 생성. 위의 경우에 B사람은 이미 test가 있다는 에러가 뜬다. 물론..
(에러)terraform Error: Required plugins are not installed terraform에서 여러번 init하고 destroy하면 위와 같은 에러가 발생할 수 있다. 위의 에러내용은 현재 설치된 provider plugins이 그 전에 init으로 설치된 dependency lock file안에 있는 packages과 맞지 않는다는 것이다. 버전문제일수도 있고, package 자체가 안맞을 수도 있고, 그래서 해결하기 위해서는 terraform init을 하라고 나오는데 저래도 해결이 안됨으로 .terraform.lock.hcl을 삭제한 뒤에 다시 terraform init하면 잘된다.