Điểm:0

Mạng con không được tạo bằng địa hình trên Azure, cách khắc phục?

lá cờ cn

Tôi đang cố gắng tạo hai máy centos 8 với địa hình trên Azure.

Mẫu của tôi github liên kết

Khi tôi cố gắng đăng ký, tôi nhận được lỗi dưới đây liên quan đến chính sách. Bạn có thể vui lòng đề nghị làm thế nào để khắc phục điều này?

> â Lỗi: tạo Subnet: (Name "subnetforAutomation" / Virtual Network Name "vnetforAutomation" / Resource Group "automation_mart"):
> network.SubnetsClient#CreateOrUpdate: Lỗi gửi yêu cầu:
> StatusCode=0 -- Lỗi Gốc: Code="RequestDisallowedByPolicy"
> Message="Tài nguyên 'subnetforAutomation' không được phép theo chính sách.
> Định danh chính sách:
> '[{\"policyAssignment\":{\"name\":\"Deny-Subnet-Without-Nsg\",\"id\":\"/providers/Microsoft.Management/managerGroups/QSFT-landingzones/ nhà cung cấp/Microsoft.Authorization/policyAssignments/Deny-Subnet-Without-Nsg\"},\"policyDefinition\":{\"name\":\"Mạng con
> nên có Nhóm An ninh mạng
> \",\"id\":\"/providers/Microsoft.Management/managerGroups/QSFT/providers/Microsoft.Authorization/policyDefinitions/Deny-Subnet-Without-Nsg\"}}]'."
> Target="subnetforAutomation"
> AdditionalInfo=[{"info":{"evaluationDetails":{"evaluatedExpressions":[{"expression":"type","expressionKind":"Field","expressionValue":"Microsoft.Network/virtualNetworks/subnets" "operator":"Equals","path":"type","result":"True","targetValue":"Microsoft.Network/virtualNetworks/subnets"},{"expression":"Microsoft.Network/ virtualNetworks/subnets/networkSecurityGroup.id","expressionKind":"Field","operator":"Exists","path":"properties.networkSecurityGroup.id","result":"True","targetValue":" false"}]},"policyAssignmentDisplayName":"Deny-Subnet-Without-Nsg","policyAssignmentId":"/providers/Microsoft.Management/managerGroups/QSFT-landingzones/providers/Microsoft.Authorization/policyAssignments/Deny-Subnet- Without-Nsg","policyAssignmentName":"Deny-Subnet-Without-Nsg","policyAssignmentScope":"/providers/Microsoft.Management/managerGroups/QSFT-landingzones","policyDefinitionDisplayName":"Mạng con
> nên có Nhóm An ninh mạng
> ","policyDefinitionEffect":"Từ chối","policyDefinitionId":"/providers/Microsoft.Management/managerGroups/QSFT/providers/Microsoft.Authorization/policyDefinitions/Deny-Subnet-Without-Nsg","policyDefinitionName":"Từ chối -Subnet-Without-Nsg"},"type":"Vi phạm chính sách"}]
> 
> â
> â với azurerm_subnet.subnet,
> â trên main.tf dòng 24, trong tài nguyên "azurerm_subnet" "subnet":
> â 24: tài nguyên "azurerm_subnet" "mạng con" {
> â

Tôi đã thử giữ nội tuyến, mạng con bên trong vnet. Và vấn đề xảy ra ngay bây giờ khi giới thiệu mạng con từ khối tài nguyên phiên bản VM ở chính giai đoạn lập kế hoạch.

 Lỗi: Thuộc tính không được hỗ trợ
â
â trên network.tf dòng 26, trong tài nguyên "azurerm_network_interface" "example":
â 26: subnet_id = azurerm_virtual_network.vnet.subnet.id #azurerm_subnet.subnet.id
â
â Không thể truy cập các thuộc tính trên một tập hợp các đối tượng. Ý của bạn là truy cập một thuộc tính trên tất cả các phần tử của tập hợp?
âµ

//chính.tf

## <https://www.terraform.io/docs/providers/azurerm/r/windows_virtual_machine.html>
tài nguyên "azurerm_windows_virtual_machine" "ví dụ" {
  tên = var.machine_details.name
  computer_name = var.machine_details.name
  resource_group_name = azurerm_resource_group.rg.name
  vị trí = azurerm_resource_group.rg.location
  kích thước = var.machine_details.size
  admin_username = var.machine_details.username
  admin_password = var.machine_details.password
  network_interface_ids = [
    azurerm_network_interface.example.id,
  ]

  os_disk {
    bộ nhớ đệm = "Đọc ghi"
    storage_account_type = "Standard_LRS"
  }

  source_image_reference {
    nhà xuất bản = "MicrosoftWindowsServer"
    ưu đãi = "Máy chủ Windows"
    sku="2019-Trung tâm dữ liệu"
    phiên bản = "mới nhất"
  }
}

//mạng.tf

## <https://www.terraform.io/docs/providers/azurerm/r/virtual_network.html>
tài nguyên "azurerm_virtual_network" "vnet" {
  tên = "vNet"
  address_space = ["10.0.0.0/16"]
  vị trí = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name

mạng con{
 tên = "nội bộ"
 address_prefix = "10.0.2.0/24"
 security_group = azurerm_network_security_group.example.id
}

}


## <https://www.terraform.io/docs/providers/azurerm/r/network_interface.html>
tài nguyên "azurerm_network_interface" "ví dụ" {
  tên = "ví dụ-nic"
  vị trí = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name

  ip_configuration {
    tên = "nội bộ"
    subnet_id = azurerm_virtual_network.vnet.subnet.id #azurerm_subnet.subnet.id
    private_ip_address_allocation = "Động"
    public_ip_address_id = azurerm_public_ip.myvm1publicip.id
  }
}

tài nguyên "azurerm_public_ip" "myvm1publicip" {
  tên = var.public_ip.name
  vị trí = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
  Allocation_method = var.public_ip.allocation_method
  sku = var.public_ip.sku
}

tài nguyên "azurerm_network_security_group" "ví dụ" {
  tên = var.nsg
  vị trí = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
  security_rule {
    tên = "test123"
    ưu tiên = 100
    hướng = "Trong nước"
    truy cập = "Cho phép"
    giao thức = "Tcp"
    source_port_range = "*"
    Destination_port_range = "*"
    source_address_prefix = "*"
    Destination_address_prefix = "*"
  }
}

//nhà cung cấp.tf

## <https://www.terraform.io/docs/providers/azurerm/index.html>
nhà cung cấp "azurerm" {
  Tính năng, đặc điểm {}
}

//rg.tf

## <https://www.terraform.io/docs/providers/azurerm/r/resource_group.html>
tài nguyên "azurerm_resource_group" "rg" {
  tên = "Testing địa hình2"
  vị trí = var.location
}

// biến.tf

biến "vị trí" {
  loại = chuỗi
  description = "Vùng Azure nơi tất cả các tài nguyên này sẽ được cung cấp"
  mặc định = "eastus2"
}

biến "public_ip" {
 

  mặc định = {
      tên = "pip1"
      Allocation_method = "Động"
      sku = "Cơ bản"
    }
  
  
}

biến "nsg" {
  loại = chuỗi
  mô tả = "Azure NSG"
  mặc định = "ví dụ-nsg"
}

biến "machine_details" {
  
  mặc định = {
      tên = "ví dụ-vm2"
      size="Standard_E2s_v3" #"Standard_F2"
      tên người dùng = "adminnasme"
      mật khẩu = "MyPaword!@3"
    }
  
}
Mat avatar
lá cờ cn
Mat
"Mạng con nên có Nhóm bảo mật mạng"
Sara June avatar
lá cờ cn
tôi đã thêm, vẫn gặp vấn đề tương tự
Điểm:1
lá cờ ng

Mạng con không được tạo vì nó không tuân thủ chính sách mà quản trị viên của bạn đã áp dụng. Điều này chỉ ra rằng mạng con phải được áp dụng NSG trước khi có thể tạo. Thật không may, cách Terraform tạo tài nguyên là bạn tạo mạng con trước, sau đó liên kết NSG với nó. Đây là hai lệnh gọi API và lệnh gọi đầu tiên không thành công vì không có NSG được liên kết với nó. Chính sách không biết rằng cuộc gọi thứ hai sắp liên kết NSG với mạng con.

Đây là nhược điểm của cách Terraform xây dựng trên API ARM. Không có giải pháp tuyệt vời nào cho vấn đề này ngoài việc yêu cầu quản trị viên của bạn nới lỏng chính sách này.

Chỉnh sửa:

Vì vậy, nhìn vào vấn đề này khá giống với những gì bạn đang thấy, có vẻ như bạn có thể giải quyết vấn đề này bằng cách xác định các mạng con bên trong mạng_ảo tài nguyên, chứ không phải là tài nguyên mạng con riêng biệt. Sử dụng điều này, bạn có thể xác định nội tuyến liên kết NSG và điều này có thể thực hiện điều đó trong một cale:

tài nguyên "azurerm_virtual_network" "ví dụ" {
  tên = "mạng ảo1"
  vị trí = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  address_space = ["10.0.0.0/16"]
  dns_servers = ["10.0.0.4", "10.0.0.5"]

  ddos_protection_plan {
    id = azurerm_network_ddos_protection_plan.example.id
    bật = đúng
  }


  mạng con {
    tên = "mạng con3"
    address_prefix = "10.0.3.0/24"
    security_group = azurerm_network_security_group.example.id
  }

  thẻ = {
    môi trường = "Sản xuất"
  }
}
Sara June avatar
lá cờ cn
Cảm ơn Sam đã trả lời nhưng nhóm bảo mật của chúng tôi không cho phép giải pháp này, có cách nào khác ngoài việc bỏ qua chính sách này không?
lá cờ ng
Xem chỉnh sửa, xác định mọi thứ nội tuyến đối tượng mạng ảo mà tôi nghĩ có thể hoạt động. Nếu không thì cách duy nhất để làm điều đó là tạo một mẫu ARM và gọi nó bằng cách sử dụng tài nguyên mẫu Terraform ARM hoặc một tập lệnh sử dụng tùy chọn local exec.
Sara June avatar
lá cờ cn
Xin chào @ sam-cogan. Tôi đã thử giữ mạng con trong phần vnet nhưng gặp lỗi trong quá trình lên kế hoạch. bạn có thể vui lòng xem các chi tiết tôi đã thêm ở trên.
Sara June avatar
lá cờ cn
có vẻ như nó hoạt động nếu tôi truy cập dưới dạng azurerm_virtual_network.vnet.subnet.*.id[0]
Điểm:0
lá cờ al

Đối mặt với cùng một vấn đề, chúng tôi đã chỉ định lại chính sách bằng hành động 'Kiểm tra' thay vì 'Từ chối'. Nếu bạn có quyền để làm như vậy.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.