Terraform만 Azure의 안내 진단을 효과적으로 수행하지 못하기 때문에 GUI와의 결합 기술로 강제로 누르기
시작
안녕하세요.나는 도쿄 도내에서 엔지니어로 일한다.
Azure가 Linux VM 개발을 강요받자 Azure의 문서를 읽다가 이른바'부트 진단'을 알게 됐다.뒷부분에서 설명하겠지만 이 시동진단은 간지럼을 만질 수 있는 서비스라고 생각해서 테라form으로 시동진단을 시도하는 설정으로 결정했다.
1. 본 기사에서 문제의식의 공유
그러나 제목과 같이 Terraform만 진단 시작을 설정할 수 없습니다.따라서 이 글에는 테라form 설정만으로 진단을 시작하는 것, 빼는 오류, 그리고 지금 할 수 있는 타자를 남겨야 한다.
※ 이 기사에서 테라form은 지나치게 초점을 맞추지 않습니다.Terraform의 기본 사용 방법에 대해서는 아래 기사를 참조하십시오.
[Azure] Terraform에서 Windows Virtual Machine에서 설계를 하기 전에
2. "Azure의 부팅 진단" 사용 가능
Azure 문서에는 다음과 같은 설명이 있습니다.
부팅 진단은 VM 부팅 오류 진단을 가능한 Azure 가상 머신(VM)의 디버깅 기능입니다.를 사용하여 진단을 시작하면 Serial 로그 정보를 수집하고 캡처하여 시작 중인 VM의 상태를 확인할 수 있습니다.
참조: Azure 부팅 진단 - Azure Virtual Machines | Microsoft Docs
부팅 진단을 사용하면 아래의 로그 등을 확인할 수 있습니다.
successfully running
2-1.용례(예정)
실제 업무에서 사용한 적이 없고 개인 검증 환경에서 사용한 적이 있다는 것을 전제로 한 예상인데 다음과 같은 용례를 고려할 수 있을까요?
起動しているはずだけどVMにリモートアクセスできない
시 디버깅을 진행하여 원인 규명에 도움이 된다2-2.VM 로그인 화면을 캡처하고 디버깅할 때까지 로그 저장 위치
VM의 로그인 화면을 캡처하고 디버깅할 때까지 로그가 저장되는 위치는 Azure Storage 계정입니다.
또 IaS와 지난 시사회를 통해 VM 시연을 할 때도 들을 수 있는'판'과 아주스토어 계정은 다르다.Disk는 다음 이미지디스크 관리에 표시됩니다.
그림 출처: Azure에서 Windows VM 실행 (빨간색 테두리는 필자가 편집)
3. 환경 정보
- ローカル(Terraform実行環境)
- Ubuntu 20.04.2 LTS
- Terraform v1.0.0
- azure-cli 2.61.0
- TerraformでデプロイするVM
- Ubuntu 18.04
- Standard F2
4.Terraform만 tf 파일에 써서 Azure의 안내 진단을 유효하게 합니다
[요점 1] "azurem storage account" 리소스를 사용하여 진단 안내를 위한 캡처와 직렬 로그
:::messages
참조: 스토리지 계정 만들기 - Azure Storage | Microsoft Docs
:::
main.tf에서 발췌하다
resource "azurerm_storage_account" "main" {
## *1: "random_id"リソースを使ってストレージアカウントの名前を生成
## ここでは"boot diagnostics"の"diag"をprefixとしている
name = "diag${random_id.main.hex}"
location = azurerm_resource_group.main.location
resource_group_name = azurerm_resource_group.main.name
account_replication_type = "LRS"
account_tier = "Standard"
}
resource "random_id" "main" {
keepers = {
# Generate a new ID only when a new resource group is defined
resource_group = azurerm_resource_group.main.name
}
byte_length = 8
}
참조: https://github.com/gkzz/azure-provider-terraform-linux/blob/main/main.tf#L171:#L191[점 2] "azurem linux virtual machine" 리소스의 boot점 1에 생성된 스토리지 계정 지정
main.tf에서 발췌하다
resource "azurerm_linux_virtual_machine" "main" {
name = "${var.prefix}-vm"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
size = "Standard_F2"
admin_username = "${var.admin_username}"
network_interface_ids = [
azurerm_network_interface.main.id,
]
admin_ssh_key {
#略
}
os_disk {
#略
}
source_image_reference {
#略
}
boot_diagnostics {
enabled = "true"
storage_account_uri = azurerm_storage_account.main.primary_blob_endpoint
}
}
참조: https://github.com/gkzz/azure-provider-terraform-linux/blob/main/main.tf#L66:#L169그러면 tf 파일을 썼는지 확인하기 위해terraform plan을 시도해 보십시오.
5.terraform plan
오류가 발생했습니다.다음 오류 메시지를 읽는 이유는
"azurem linux virtual machine"리소스의 bootdiagnostics 블록에 썼다고 볼 수 있다
enabled = "true"
.$ terraform plan
╷
│ Error: Unsupported argument
│
│ on main.tf line 99, in resource "azurerm_linux_virtual_machine" "main":
│ 99: enabled = "true"
│
│ An argument named "enabled" is not expected here.
╵
$
main.tf에서 발췌하다
resource "azurerm_linux_virtual_machine" "main" {
name = "${var.prefix}-vm"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
size = "Standard_F2"
admin_username = "${var.admin_username}"
network_interface_ids = [
azurerm_network_interface.main.id,
]
#略
boot_diagnostics {
enabled = "true"
storage_account_uri = azurerm_storage_account.main.primary_blob_endpoint
}
}
6. "azurem linux virtual machine" 리소스가 enabled ="진짜"
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true
}
}
참조: Azure 부팅 진단 - Azure Virtual Machines | Microsoft DocsTerraform 문서에서 bootdiagnostics 블록 지원 기재**
enabled
A boot_diagnostics block supports the following:
・enabled ty
이야기uri - (Required) The Storage Account's Blob Endpoint which should hold the virtual machine's diagnostic files.
:::messages
enabled = "true"
도 정확해야 한다7. Terraform만으로는 Azure의 부팅 진단을 유효하게 할 수 없습니다.
Terraform과 GUI의 조합 기술을 사용하여 시작 진단을 유효하게 설정합니다.Terraform을 사용하여 스토리지 계정을 만들고 GUI를 통해 부팅 진단을 효율적으로 수행합니다.
7-1.Terraform으로 스토리지 계정 만들기
略
resource "azurerm_linux_virtual_machine" "main" {
name = "${var.prefix}-vm"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
size = "Standard_F2"
admin_username = "${var.admin_username}"
network_interface_ids = [
azurerm_network_interface.main.id,
]
admin_ssh_key {
#略
}
os_disk {
#略
}
source_image_reference {
#略
}
boot_diagnostics {
# enabled = "true"
storage_account_uri = azurerm_storage_account.main.primary_blob_endpoint
}
}
resource "azurerm_storage_account" "main" {
name = "diag${random_id.main.hex}"
location = azurerm_resource_group.main.location
resource_group_name = azurerm_resource_group.main.name
account_replication_type = "LRS"
account_tier = "Standard"
}
resource "random_id" "main" {
keepers = {
# Generate a new ID only when a new resource group is defined
resource_group = azurerm_resource_group.main.name
}
byte_length = 8
}
을 발췌output "azurerm_storage_account_name" {
value = azurerm_storage_account.main.name
}
7-2.GUI를 통한 진단 시작 활성화
prefixが"diag"となっているはず!
이따가 아래 화면으로 전환해서'시동 진단 표시'를 눌러주세요.
다음과 같이 VM의 캡처(화면 왼쪽) 및 로그(화면 오른쪽)를 표시하여 부트 진단의 유효성을 확인합니다.
8.앞으로의 전망
현재 진단을 시작하는 설정은Terraform만으로는 완성하기 어렵지만 문서가 선행되었습니까?따라서 Terraform을 통해서만 유도 진단을 효과적으로 할 수 있는 날이 멀지 않을 것이다.
진단을 효과적으로 이끌어갈 수 있는 설정 방법이 있다면 댓글 등에서 알려주세요.
P.S.Azure에서 Terraform을 사용하여 Linux VM에서 추출한 샘플 코드
P.P.S. 트위터도 있는데 팔로우 해주면 너무 좋아서 울어버린다:)
Reference
이 문제에 관하여(Terraform만 Azure의 안내 진단을 효과적으로 수행하지 못하기 때문에 GUI와의 결합 기술로 강제로 누르기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/gkz/articles/azure-provider-terraform-linux텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)