https://docs.microsoft.com/ko-kr/azure/virtual-machines/linux/build-image-with-packer |
|
RESOURCE_GROUP_NAME="RG_packer_handson" LOCATION="koreacentral" |
az login az account list az account set --subscription "{subscription id}" |
az group create -n $RESOURCE_GROUP_NAME -l $LOCATION |
Packer는 'service principal'을 사용하여 Azure를 인증합니다.Azure 'service principal'은 앱, 서비스 및 Packer와 같은 자동화 도구를 사용할 수 있는 보안 ID입니다.'service principal'은 Azure에서 수행할 수 있는 작업에 대한 사용 권한은 사용자가 제어하고 정의합니다.
|
Azure를 인증하기 위해az account show를 사용하여 Azure 구독 ID를 가져와야 합니다.
|
Git Clone로 IaC Template을 복제 합니다.
git https://github.com/Sanses/IaC.git cd IaC/packer-azurelinuximage ls -al ubuntu.json Variables.json |
variables.json을 열고 Azuer 자격증명, 구독 정보, Log Workspace를 정의 합니다.
{ "CLIENT_ID": "{CLIENT_ID}", "CLIENT_SECRET": "{CLIENT_SECRET}", "TENANT_ID": "{TENANT_ID}", "SUBSCRIPTION_ID": "{SUBSCRIPTION_ID}", "RESOURCE_GROUP_NAME": "{RESOURCE_GROUP_NAME}", "PACKER_IMAGE_NAME": "PackerImage", "LOCATION": "koreacentral", "WORKSAPCE_ID": "{WORKSAPCE_ID}", "PRIMARY_KEY": "{PRIMARY_KEY}" } |
ubuntu.json 정의
{ "builders": [{ "type": "azure-arm", "client_id": "{{user `CLIENT_ID`}}", "client_secret": "{{user `CLIENT_SECRET`}}", "tenant_id": "{{user `TENANT_ID`}}", "subscription_id": "{{user `SUBSCRIPTION_ID`}}", "managed_image_resource_group_name": "{{user `RESOURCE_GROUP_NAME`}}", "managed_image_name": "{{user `PACKER_IMAGE_NAME`}}", "os_type": "Linux", "image_publisher": "Canonical", "image_offer": "UbuntuServer", "image_sku": "16.04-LTS", "azure_tags": { "dept": "Engineering", "task": "Image deployment" }, "location": "{{user `LOCATION`}}", "vm_size": "Standard_DS2_v2" }], "provisioners": [ { "type": "shell", "pause_before": "5s", "inline": [ "wget https://raw.githubusercontent.com/Microsoft/OMS-Agent-for-Linux/master/installer/scripts/onboard_agent.sh", "chmod 777 onboard_agent.sh", "sh onboard_agent.sh -w {{user `WORKSPACE_ID`}} -s {{user `PRIMARY_KEY`}} -d opinsights.azure.com", "sudo /opt/microsoft/omsagent/bin/service_control restart {user `WORKSPACE_ID`}}" ] } ] } |
|