我有一个Terraform代码,需要检索vm的公共IP,这是我的代码
<div className="d-flex col-sm-6">
<div className="" style={{backgroundColor: 'white', borderRadius: 5, border: '1px solid #EAE8E8'}}>
<div className="row">
<div className="d-flex col-xs-8">
<div className="row" style={{paddingTop: 20, paddingBottom: 20, paddingLeft: 40}}>
<h4>
<b>{this.props.restaurant.name}</b>
{this.props.restaurant.dietaryRestrictions.map(function(dietaryRestriction, index) {
return(<div key={index}><span className="badge-sm badge-secondary" style={{color: 'white', backgroundColor: '#DA9550', fontSize: 9}}>{dietaryRestriction}</span> </div>);
})}
</h4>
{this.props.restaurant.description}
<br /><br />
<span className="munchtime pointer"><i className="fas fa-check"></i> <b>Add to Cart</b></span><br /><br />
<b><s>${this.props.restaurant.price}</s></b> <span className="discount"><b>${this.props.restaurant.price * this.props.restaurant.restaurant.discount}</b></span>
</div>
</div>
<div className="d-flex col-xs-4">
<img src={this.props.restaurant.images[0]} style={{width: '100%', height: 250, objectFit: 'cover'}} />
</div>
</div>
</div>
</div>
这里使用的是NIC id,它将默认提供公共ip,有人可以帮我吗?
答案 0 :(得分:2)
您将为此使用数据模块:
data "azurerm_network_interface" "test" {
name = "acctest-nic"
resource_group_name = "networking"
}
这将为您提供NIC对象,该对象将具有ip_configuration
块,进而具有public_ip_address_id
参数,您将使用它来获取公共ip的数据:
data "azurerm_public_ip" "test" {
name = "name_of_public_ip"
resource_group_name = "name_of_resource_group"
}
output "domain_name_label" {
value = "${data.azurerm_public_ip.test.domain_name_label}"
}
output "public_ip_address" {
value = "${data.azurerm_public_ip.test.ip_address}"
}
您显然必须将资源ID解析为资源组\资源名称,但这可以通过split + array index轻松完成
https://www.terraform.io/docs/providers/azurerm/d/public_ip.html
https://www.terraform.io/docs/providers/azurerm/d/network_interface.html
答案 1 :(得分:0)
我尝试了此操作,但无法检索公共IP。 (比可能的飞行员错误多。)
就我而言,我需要在以后的步骤中获取安装Chef的地址,这样IP或FQDN才能正常工作。这是我的解决方法:
在创建我的公共IP时,我添加了域标签。定义计算机名称时,请使用相同的值。
resource "azurerm_public_ip" "CSpublicip" {
name = "myPublicIP"
location = "eastus"
resource_group_name = "${azurerm_resource_group.CSgroup.name}"
allocation_method = "Dynamic"
domain_name_label = "csvm${random_integer.server.result}"
添加域标签时,Azure将创建可访问的FQDN。有了它之后,就可以使用/检索fqdn。
output "AzurePage" {
value = "${azurerm_public_ip.CSpublicip.fqdn}"