- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以通过 az cli 命令创建图像:
az vm create --resource-group $RG2 \
--name $VM_NAME --image $(az sig image-version show \
--resource-group $RG \
--gallery-name $SIG \
--gallery-image-definition $SIG_IMAGE_DEFINITION \
--gallery-image-version $VERSION \
--query id -o tsv) \
--size $SIZE \
--public-ip-address "" \
--assign-identity $(az identity show --resource-group $RG2 --name $IDENTITY --query id -o tsv) \
--ssh-key-values $SSH_KEY_PATH \
--authentication-type ssh \
--admin-username admin
这很好用。我正在尝试用 python 做同样的事情。
我看到他们正在其中创建所有内容的示例,资源组、网卡、子网、虚拟网络等,但这不是我需要的。我确实正在尝试做这个 az cli 正在做的事情。有没有办法用 python 来做到这一点?
我们如何将公共(public)IP设置为空,这样它就不会设置一个?我希望它使用资源组已经定义的 vnet、子网等,就像 az cli 一样。
最佳答案
您可以修改example script在我们的文档中执行此操作。本质上,您需要删除第 4 步并修改第 5 步,以便在创建 NIC 时不发送公共(public) IP。这已在我自己的订阅中得到验证。
# Import the needed credential and management objects from the libraries.
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.network import NetworkManagementClient
from azure.mgmt.compute import ComputeManagementClient
import os
print(f"Provisioning a virtual machine...some operations might take a minute or two.")
# Acquire a credential object using CLI-based authentication.
credential = AzureCliCredential()
# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
# Step 1: Provision a resource group
# Obtain the management object for resources, using the credentials from the CLI login.
resource_client = ResourceManagementClient(credential, subscription_id)
# Constants we need in multiple places: the resource group name and the region
# in which we provision resources. You can change these values however you want.
RESOURCE_GROUP_NAME = "PythonAzureExample-VM-rg"
LOCATION = "westus2"
# Provision the resource group.
rg_result = resource_client.resource_groups.create_or_update(RESOURCE_GROUP_NAME,
{
"location": LOCATION
}
)
print(f"Provisioned resource group {rg_result.name} in the {rg_result.location} region")
# For details on the previous code, see Example: Provision a resource group
# at https://learn.microsoft.com/azure/developer/python/azure-sdk-example-resource-group
# Step 2: provision a virtual network
# A virtual machine requires a network interface client (NIC). A NIC requires
# a virtual network and subnet along with an IP address. Therefore we must provision
# these downstream components first, then provision the NIC, after which we
# can provision the VM.
# Network and IP address names
VNET_NAME = "python-example-vnet"
SUBNET_NAME = "python-example-subnet"
IP_NAME = "python-example-ip"
IP_CONFIG_NAME = "python-example-ip-config"
NIC_NAME = "python-example-nic"
# Obtain the management object for networks
network_client = NetworkManagementClient(credential, subscription_id)
# Provision the virtual network and wait for completion
poller = network_client.virtual_networks.begin_create_or_update(RESOURCE_GROUP_NAME,
VNET_NAME,
{
"location": LOCATION,
"address_space": {
"address_prefixes": ["10.0.0.0/16"]
}
}
)
vnet_result = poller.result()
print(f"Provisioned virtual network {vnet_result.name} with address prefixes {vnet_result.address_space.address_prefixes}")
# Step 3: Provision the subnet and wait for completion
poller = network_client.subnets.begin_create_or_update(RESOURCE_GROUP_NAME,
VNET_NAME, SUBNET_NAME,
{ "address_prefix": "10.0.0.0/24" }
)
subnet_result = poller.result()
print(f"Provisioned virtual subnet {subnet_result.name} with address prefix {subnet_result.address_prefix}")
# Step 4: Provision an IP address and wait for completion
# Removed as not needed
# Step 5: Provision the network interface client
poller = network_client.network_interfaces.begin_create_or_update(RESOURCE_GROUP_NAME,
NIC_NAME,
{
"location": LOCATION,
"ip_configurations": [ {
"name": IP_CONFIG_NAME,
"subnet": { "id": subnet_result.id }
}]
}
)
nic_result = poller.result()
print(f"Provisioned network interface client {nic_result.name}")
# Step 6: Provision the virtual machine
# Obtain the management object for virtual machines
compute_client = ComputeManagementClient(credential, subscription_id)
VM_NAME = "ExampleVM"
USERNAME = "azureuser"
PASSWORD = "ChangePa$$w0rd24"
print(f"Provisioning virtual machine {VM_NAME}; this operation might take a few minutes.")
# Provision the VM specifying only minimal arguments, which defaults to an Ubuntu 18.04 VM
# on a Standard DS1 v2 plan with a public IP address and a default virtual network/subnet.
poller = compute_client.virtual_machines.begin_create_or_update(RESOURCE_GROUP_NAME, VM_NAME,
{
"location": LOCATION,
"storage_profile": {
"image_reference": {
"publisher": 'Canonical',
"offer": "UbuntuServer",
"sku": "16.04.0-LTS",
"version": "latest"
}
},
"hardware_profile": {
"vm_size": "Standard_DS1_v2"
},
"os_profile": {
"computer_name": VM_NAME,
"admin_username": USERNAME,
"admin_password": PASSWORD
},
"network_profile": {
"network_interfaces": [{
"id": nic_result.id,
}]
}
}
)
vm_result = poller.result()
print(f"Provisioned virtual machine {vm_result.name}")
关于python - 使用Python在现有的rg、vnet、子网中使用通用镜像创建azure vm,没有公共(public)IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70187603/
因此,AWS 中私有(private)子网的目的是使其实例无法从外部世界直接访问。然而,在某些情况下(成功地抵制了“实例”双关语),实例访问互联网很有用。例如,一种这样的用例可能是下载软件更新。 实现
我已经退出虚拟机,我需要更改该虚拟机的虚拟网络/子网。我没有找到任何可以更改的选项,请帮助我。谢谢..! 最佳答案 据我所知,当在 VNet 中创建 NIC 时,它就无法再移动到另一个 VNet。因此
我想导出一些内容,例如 VNET 中存在的子网 View (如门户中显示的那样)。不幸的是,没有选项可以将其导出为 CSV。我在网上找到了可以导出子网路由表和关联子网的 powershell 脚本。我
我的虚拟网络具有以下子网 10.0.0.0/24,我想添加另一个子网,但每次尝试时都会得到:“您的子网不包含在该虚拟网络的同一地址空间内” 如何添加另一个子网? 最佳答案 您可以在虚拟网络中添加子网,
我有 ip 地址列表作为字符串,但该列表中也有一些子网。例如: ...127.0.0.1(这是ip)127.0.0.1/24(这是子网)... 我想检查哪个是ip,哪个是子网。到目前为止我可以过滤 i
我正在尝试使用 ARM 模板部署 Azure 防火墙。该模板在首次部署期间工作正常,并在现有虚拟网络中创建一个子网(根据需要命名为 AzureFirewallSubnet)以及具有公共(public)
我正在尝试使用 ARM 模板部署 Azure 防火墙。该模板在首次部署期间工作正常,并在现有虚拟网络中创建一个子网(根据需要命名为 AzureFirewallSubnet)以及具有公共(public)
我正在尝试编写一个脚本,将大于(不大于/16)大于/24 的子网分解为/24 子网。例如:10.10.10.0/23 应该给我 10.10.10.0/24 和 10.10.11.0/24 我的逻辑是首
我在 Azure VNet 中有两台虚拟机(IP 地址 10.1.0.4 和 10.1.0.5),以及一台通过 VPN 网关连接到 VNet 的计算机(IP 10.3.0.2)。是否可以在内部负载均衡
错误消息 执行terraform apply时收到以下错误消息: 错误:创建/更新虚拟网络“CTI-NETWORK”(资源组“CTI-RESOURCES”)时出错:network.VirtualNet
我无法从不再使用的 VNet 中删除“默认”子网。错误是:“子网默认值由/subscriptions/{guid}/resourceGroups/mpi-prod-westeurope-rg/prov
我在使用 docker-compose 时遇到问题。目前,我的容器堆栈是在它们自己定制的、基于桥接的隔离网络中创建的。 例如当运行 docker-compose -p client1 up -d 时,
我无法从不再使用的 VNet 中删除“默认”子网。错误是:“子网默认值由/subscriptions/{guid}/resourceGroups/mpi-prod-westeurope-rg/prov
如果文件的一个版本在特定子网中具有接口(interface),我想将其复制到服务器,或者如果在该子网中没有接口(interface),则将文件的一个版本复制到服务器。下面是一个工作,但我认为不是最佳解
我是 terraform 新手,想要更改网络上的子网,但遇到了一个奇怪的错误。谷歌什么也没得到。这是我要输入的内容(更改 main.tf 和运行计划后) terraform apply -replac
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我们有 dbs, basion ..等,总共 10 个东西需要分开。 如果我们将它们中的每一个都放入一个单独的子网中,我们总共有 10 个子网,再加上 1 个用于第二个区域以实现高可用性。因此,我们总
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我们有 dbs, basion ..等,总共 10 个东西需要分开。 如果我们将它们中的每一个都放入一个单独的子网中,我们总共有 10 个子网,再加上 1 个用于第二个区域以实现高可用性。因此,我们总
在 IP 为 145.74.217.109 的机器 A 上运行 ServerSocket 时然后尝试使用 IP 为 145.74.219.103 的机器 B 连接到机器 A,但无法连接。但是当使用 I
我是一名优秀的程序员,十分优秀!