我想知道如何使用 Terraform-provider-azurerm 检索规模集虚拟机的私有 IP 地址。我认为没有资源或数据资源直接返回VM IP。
我尝试的一种选择是通过模板资源生成 shellscript。
# get_vmss_privateip.tpl
#!/bin/bash
cap=`az vmss show \
--resource-group ${resource_group} \
--subscription ${subscription} \
--name ${name} \
--query 'sku.capacity'`
for i in `seq 1 $cap`
do
az resource show \
--resource-group ${resource_group} \
--resource-type Microsoft.Compute/virtualMachineScaleSets \
--api-version 2017-03-30 \
--name ${name}/virtualMachines/$i/networkInterfaces \
--query 'value[0].properties.ipConfigurations[0].properties' \
| jq -c '{privateIPAddress}'
done
Run Code Online (Sandbox Code Playgroud)
然后运行terraform生成sh。
data "template_file" "private_ip_scripts" {
template = "${file("templates/get_vmss_privateip.tpl")}"
vars {
resource_group = "${data.azurerm_resource_group.current.name}"
subscription = "${data.azurerm_subscription.current.subscription_id}"
name = "${azurerm_virtual_machine_scale_set.test.name}"
}
}
resource "local_file" …Run Code Online (Sandbox Code Playgroud) 当我有一个字符串"hogemogehogemogehogemoge世界世界世界"哪个代码更好,以避免内存分配得到最后的符文?
关于获取Golang String的最后X个字符有类似的问题.
如果我只是想获得最后一个符文,我想确定哪个是首选的,没有任何额外的操作.
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
// which is more better for memory allocation?
s := "hogemogehogemogehogemoge??????a"
getLastRune(s, 3)
getLastRune2(s, 3)
}
func getLastRune(s string, c int) {
// DecodeLastRuneInString
j := len(s)
for i := 0; i < c && j > 0; i++ {
_, size := utf8.DecodeLastRuneInString(s[:j])
j -= size
}
lastByRune := s[j:]
fmt.Println(lastByRune)
}
func getLastRune2(s string, c int) {
// string -> []rune
r := …Run Code Online (Sandbox Code Playgroud)