Automation/IaC
[Packer] AMI 생성시 sudo 권한문제 해결하기
이슈사항
Packer를 통해 Golden Image를 생성하는 과정에서 root 권한이 요구되어지는 작업들이 존재한다. 일반적으로 AWS 신규 EC2 인스턴스에 대해 ec2-user로 처음 접근하게 되어지며 그냥 작업하는 경우 권한 이슈를 겪게 된다. 이에 대하여 해결방법을 알아보자.
해결
Packer 공식홈페이지에서 아래와 같은 대안을 제공한다.
sudo -S sh -c '{{ .Vars }} {{ .Path }}
명령어에 대한 로직을 이해해보자.
- {{ .Vars }}:
- 이 변수는 환경 변수 설정을 포함한다.
- Packer의 environment_vars 옵션을 통해 설정된 환경 변수를 포함하며, 스크립트 실행 전에 이러한 변수들을 참고한다.
- environment_vars 옵션이 없는경우, {{ .Vars }}는 빈 문자열로 대체된다.
- 예를 들어, environment_vars = ["VAR1=value1", "VAR2=value2"]로 설정하면, {{ .Vars }}는 export VAR1='value1' VAR2='value2';로 확장되어진다.
- {{ .Path }}:
- 이 변수는 실행할 스크립트 파일의 경로를 나타낸다.
- Packer는 inline 스크립트나 scripts 옵션을 통해 제공된 스크립트를 대상 머신의 임시 디렉토리에 저장한다.
- {{ .Path }}는 이 임시 스크립트 파일의 절대 경로를 가리킨다. 여기서 사용자는 {{ .Path }}를 직접 정의하지 않으며, Packer가 자동으로 이 경로를 설정한다.
ec2-user 경우 기본적으로 root 접근 권한이 제공되어지기에 아래 해결법으로 해결을 진행하였다.
build {
name = "Create AMI"
sources = ["source.amazon-ebs.sample"]
provisioner "shell" {
execute_command = "sudo -S sh -c '{{ .Vars }} {{ .Path }}'"
inline = [
"mkdir -p /jonghyun", # '/'디렉토리에 파일 및 폴더를 생성하는 것은 root 권한 필요
]
}
}
'Automation > IaC' 카테고리의 다른 글
[Terraform] terraform state에 대해 알아보자 (0) | 2024.11.17 |
---|
댓글