자동화 변수 변경에 대한 모범 사례는 무엇입니까

자동화 변수 변경에 대한 모범 사례는 무엇입니까

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에 넣을 수 있습니다. 시작하려면 구성 관리/조정 도구가 필요하지만 구축하고 유지 관리하는 이미지 수를 줄여 장기적으로 노력을 절약할 수 있습니다. 그냥 생각입니다.

관련 정보