logo NodeSeekbeta

Azure 已支持部署 Debian 13 (Trixie)!分享通过 Azure CLI 创建 IPv6-Only Debian 13 虚拟机

废话不多说,众所周知在 Azure 开始弃用动态 IPv4 后,az100 应该是没免费的 IPv4 可以用了,虽然可能还会有调整,但现阶段想要免费 IP 就是 IPv6 Only 了。

不过如果是老号的话,目前仍然还有动态 IPv4 的配额,也就仍然还可以创建出免费的动态 IPv4,所以接下来会分2种情况。

首先还是创建最基础的资源组和网卡。

环境变量

先把一些变量给设置好,这样就不用修改后面的命令了,只需要修改开头的这些变量就行。

我使用的是 Debian,所以命令和 Win 不通用,可以下载安装 Git Bash 这样就有了一个 Bash 环境就不用考虑做转换。

定义虚拟机的位置、资源组名字、虚拟机名字:

location=southeastasia
rsg=Debian-13-Group
vm=Debian-13

位置是预设值(这里是新加坡),另2个可以自定义。其他位置的名字可参考这帖

接下来是定义 SKU,Azure 的 Debian 13 有 3 个 SKU,分别是

13
13-arm64
13-gen2

其中 13-gen2 是用于 TrustedLaunch 的,所以忽略(参考为什么我的受信任启动 VM 显示内存少了 50MB?)。

13 就是 x86_64 架构,13-arm64 就是 arm64 架构,就这个区别。

然后根据架构选机型来设置环境变量,固定搭配

x86_64 架构

sku=13
size=Standard_B2ats_v2

arm64 架构

sku=13-arm64
size=Standard_B2pts_v2

最后是要设置虚拟机的用户名和 SSH 公钥的位置,绝对不创建允许密码登录的虚拟机

用户名很简单

user=raymond

如果已经有公钥了设置相应的位置就行,或者重新生成一个新的

ssh-keygen -t ed25519 -C ""

设置公钥位置

sshpubkey=$HOME/.ssh/id_ed25519.pub

设置好需要的环境变量后就可以开始创建虚拟机了。

检查动态 IPv4 的配额情况

通过这个命令来查看配额

az network list-usages -l $location -o table | grep -E 'Name|---| Basic| Standard'

Basic 对应动态IP,Standard 对应静态IP,Limit 一栏就是配额,老号的话4个都是3配额,新号的话前2个是0配额也就是无法创建动态IP。

下面分创建动态 IPv4 的情况和创建静态 IPv6 的情况。

创建动态 IPv4 的 Debian 13

两条命令搞定

az group create -n $rsg -l $location -o table
az vm create -g $rsg -n $vm --image 'Debian:debian-13:'$sku':latest' --size $size --os-disk-size-gb 64 --admin-username $user --ssh-key-values "$sshpubkey" --public-ip-sku Basic --public-ip-address-allocation dynamic -o table

创建 IPv6-Only Debian 13

由于需要添加 IPv6 进来,所以比较复杂

第1步,创建资源组

az group create -n $rsg -l $location -o table

第2步,创建网络安全组

az network nsg create -g $rsg -n $vm'NSG' -o table

第3步,在网络安全组添加一个允许 SSH 连接的规则,也可以自己加其他规则,不过为了安全我只开放 22 端口连接,ICMP 都不开,这也是官方创建的默认规则,另外 Azure 自带了一个非常基础的 DDoS 防护

az network nsg rule create -g $rsg --nsg-name $vm'NSG' -n default-allow-ssh --priority 1000 --destination-port-ranges 22 --protocol tcp -o table

第4步,创建一个静态 IPv6,完全免费

az network public-ip create -n $vm'PublicIPv6' -g $rsg -l $location --sku Standard --version IPv6

第5步,创建一个支持 IPv6 的虚拟网络和子网

az network vnet create -g $rsg -n $vm'VNET' --address-prefixes "10.0.0.0/16" "2404:f800:8000:122::/63"
az network vnet subnet create -g $rsg --vnet-name $vm'VNET' -n $vm'Subnet' --address-prefixes "10.0.0.0/24" "2404:f800:8000:122::/64"

第6步,创建一个 NIC 网卡,绑定到上面创建的 NSG 和 VNET

az network nic create -g $rsg -n $vm'VMNic' --vnet-name $vm'VNET' --subnet $vm'Subnet' --network-security-group $vm'NSG' -o table

第7步,创建 ip-config 配置文件,并且把 IPv6 绑上去

az network nic ip-config create -g $rsg -n ipconfig2 --nic-name $vm'VMNic'
az network nic ip-config delete -g $rsg -n ipconfig1 --nic-name $vm'VMNic'
az network nic ip-config create -g $rsg -n 'ipconfig'$vm --nic-name $vm'VMNic'
az network nic ip-config delete -g $rsg -n ipconfig2 --nic-name $vm'VMNic'
az network nic ip-config create -g $rsg -n 'ipv6config'$vm --nic-name $vm'VMNic' --vnet-name $vm'VNET' --subnet $vm'Subnet' --private-ip-address-version IPv6 --public-ip-address $vm'PublicIPv6'

这里其实在创建网卡时已自动创建了一个 ipconfig1 的配置了,我为了保持与官方创建的命名规则一致,所以创建一个 ipconfig2 后再创建一个符合官方命名规则的,然后再删除 ipconfig2。

如果说不介意命名规则的,可以不按上面的命令,只执行下面的这条就行,直接把 IPv6 绑上去

az network nic ip-config create -g $rsg -n 'ipv6config'$vm --nic-name $vm'VMNic' --vnet-name $vm'VNET' --subnet $vm'Subnet' --private-ip-address-version IPv6 --public-ip-address $vm'PublicIPv6'

第8步,也是最后一步,创建虚拟机

az vm create -g $rsg -n $vm --image 'Debian:debian-13:'$sku':latest' --size $size --os-disk-size-gb 64 --admin-username $user --ssh-key-values "$sshpubkey" --nics $vm'VMNic' -o table

参考资料

官方教程就足够了

使用 Azure CLI 创建完整的 Linux 虚拟机

创建具有双堆栈网络的 Azure 虚拟机

12
  • 🍗

  • mark

  • 感谢分享

  • 学习了,感谢分享经验!

  • 不错,

  • arm性能如何?

  • The VM size 'Standard_B2pts_v2' is not supported for creation of VMs and Virtual Machine Scale Sets with 'TrustedLaunch' security type

  • @kalagxw #7 貌似现在默认会打开TrustedLaunch,arm架构是不支持TrustedLaunch启动方式的

    解决办法是允许不使用TrustedLaunch,也就是不使用安全启动

    详见此帖 https://www.nodeseek.com/post-604831-1 的步骤一

  • 能否用CLI这样创建v4+v6双栈的免费虚拟机?

  • @WXR123 #9 不行。因为它们不是同一个类别,无法共存。

    我的方法是建2台机子然后通过内网连接到一起,变相实现双栈,免费肯定是免费的,不过就是要多建1台机子

    https://www.nodeseek.com/post-365463-1

12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有60565位seeker

🎉欢迎新用户🎉