- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Terraform 新手。我有一个包含两个 Ubuntu VM 的子网。一是虚拟机A
,有一个公共(public)IP,另一个是VM B
,有私有(private)IP,没有公共(public)IP。是否有一种 Terraform 方式在 B
上配置文件并运行命令无需先通过 SSH 连接到虚拟机 A
然后进入VM B
?
根据我的发现,file
Terraform 中的配置者需要 connection
像这样阻止:
# Example Azure VM provisioner block
provisioner "remote-exec" {
inline = [
"rsync -Pav user@A:~/install.sh ~",
"rsync -Pav user@A:~/file.txt ~",
"sudo ~/install.sh"
]
connection {
type = "ssh"
user = "${var.ssh_user_username}"
host = "<something to put here>"
private_key = "${file("~/.ssh/azure_key_rsa")}"
timeout = "1m"
agent = false
}
}
但是由于我无法直接在 Terraform 中连接到私有(private) IP,所以我不确定要为 host
添加什么内容字段使此配置程序成功。
最佳答案
据我所知,你无法直接使用 terraform 来做到这一点。您可以使用 Custom Script extension要执行 install.sh
,该脚本由 Azure 执行,您不需要通过 ssh 连接到虚拟机。
自定义脚本扩展配置指定脚本位置和要运行的命令等内容。此配置可以存储在命令行指定的配置文件中,或存储在 Azure 资源管理器模板中。敏感数据可以存储在 protected 配置中,该配置是加密的并且仅在虚拟机内部解密。根据您的情况,似乎是您所需要的。
Terraform还支持CustomScript,可以引用这个example .
resource "azurerm_virtual_machine_extension" "test" {
name = "hostname"
location = "West US"
resource_group_name = "${azurerm_resource_group.test.name}"
virtual_machine_name = "${azurerm_virtual_machine.test.name}"
publisher = "Microsoft.OSTCExtensions"
type = "CustomScriptForLinux"
type_handler_version = "1.2"
settings = <<SETTINGS
{
"commandToExecute": "hostname"
}
SETTINGS
关于azure - Azure 上的 Terraform 预配私有(private) VM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43433185/
小米米家智能破壁料理机现已开启预售,这款产品支持破壁熬煮、冷热双打,到手价 379 元。 IT之家了解到,米家智能破壁料理机支持破壁、研磨、碎冰、榨汁、冷热双打。热饮最大容量 1200ml,冷
我是一名优秀的程序员,十分优秀!