Hyper-V에서 패키저를 사용하여 Ubuntu OS의 자동 설치를 만들려고 하는데 다음과 같은 프로젝트가 있습니다.
packer-main/
|
|--->http/
| |--->user-data
|
|--->templates/
| |--->build.pkr.hcl
|
|--->variables
| |--->pkrvars.hcl
사용자 데이터에는 무엇이 들어있나요?
#cloud-config
autoinstall:
version: 1
identity:
hostname: jammy-daily
username: ubuntu
pkrvars.hcl의 내용
hostname = "jammy-daily"
username = "ubuntu"
및 build.pkr.hcl
...
ssh_username = "${var.username}"
vm_name = "${var.hostname}"
...
내 과제는 빌드 프로세스를 시작하기 전에 사용자 데이터의 변수를 동적으로 수정해야 한다는 것입니다. PowerShell 스크립트나 Bash 스크립트를 이러한 목적으로 사용할 수 있다는 것을 알고 있지만 이러한 종류의 자동화를 단순화하는 데 사용할 수 있는 특수 도구가 있는지 궁금합니다. 또한 자동화된 인프라 구축을 위한 모범 사례를 배우는 데 관심이 있습니다.
답변1
거의 모든 서버/네트워크 구성 관리(종종 "조정"이라고 함) 도구는 템플릿을 사용하여 user_data 매개변수에 넣을 수 있는 파일 데이터를 생성할 수 있습니다. Ansible과 Saltstack은 기본적으로 Jinja2 템플릿을 사용합니다. Chef, Puppet 및 Terraform도 Jinja2를 지원합니다.
Packer에서 이미지를 생성할 때가 아니라 이미지에서 가상 머신을 부팅할 때 user_data가 더 잘 생성되고 변수가 값으로 대체되는 것을 확인할 수 있습니다. 호스트 이름이 이미지에 포함되어 있는 경우 네트워크의 각 호스트(VM)에 대해 다른 이미지를 구축해야 합니다.
이와 대조적으로 호스트별 정보가 이미지에 구워지지 않은 경우 단일 이미지를 여러 VM에서 사용할 수 있으며 VM이 시작될 때 호스트별 정보를 user_data에 넣을 수 있습니다. 시작하려면 구성 관리/조정 도구가 필요하지만 구축하고 유지 관리하는 이미지 수를 줄여 장기적으로 노력을 절약할 수 있습니다. 그냥 생각입니다.