如何使用 Terraform 在 OVH 上创建私有子网?

Posted

技术标签:

【中文标题】如何使用 Terraform 在 OVH 上创建私有子网?【英文标题】:How to create private subnet on OVH using Terraform? 【发布时间】:2018-07-18 07:33:52 【问题描述】:

我应该如何使用 Terraform 在 OVH 上创建专用网络/子网? 如果您使用 ovh 提供程序,则有一个与 OpenStack (openstack_networking_subnet_v2) 和 ovh 特定 (ovh_publiccloud_private_network_subnet) 相关的公共资源。

我问是因为当我关注this guide 时,我的专用网络接口没有在接口上分配 ipv4-address(看起来同样的问题已经在这个问题中描述过:Private network creation with Terraform on OVH's Openstack)。我可以在 Horizo​​n 控制面板中看到一个 ip-addr,但是当我使用 Ext-net ipv4 addr SSH 到实例并键入 ifconfig 时,我看到没有为专用网络接口分配 ipv4 addr。接口已启动,但未分配 ipv4。我只是使用指南中的 Terraform 代码,如下所示:

# Create a private sub network
resource "ovh_publiccloud_private_network_subnet" "private_subnet" 
  # Get the id of the resource ovh_publiccloud_private_network named
  # private_network
  network_id = "$ovh_publiccloud_private_network.private_network.id"
  project_id = "$var.project_id" # With OS_TENANT_ID your tenant id's project
  region = "WAW1" # With OS_REGION_NAME the OS_REGION_NAME environment variable
  network = "192.168.42.0/24" # Global network
  start = "192.168.42.2" # First IP for the subnet
  end = "192.168.42.200" # Last IP for the subnet
  dhcp = false # Deactivate the DHCP service
  provider = "ovh.ovh" # Provider's name


resource "openstack_compute_instance_v2" "front" 
  # Number of time the instance will be created
  count = "$length(var.front_private_ip)"
  provider = "openstack.ovh" # Provider's name
  name = "front" # Instance's name
  flavor_name = "s1-2" # Flavor's name
  image_name = "CoreOS Stable" # Image's name
  key_pair = "$openstack_compute_keypair_v2.test_keypair.name"
  security_groups = ["default"] # Add into a security group
  network = [
    
      name = "Ext-Net" # Public interface name
    
  ,
    
      # Private interface name
      name = "$ovh_publiccloud_private_network.private_network.name"
      # Give an IP address depending on count.index
      fixed_ip_v4 = "192.168.42.4"
    
  ]

正如我所说,上面的示例对我不起作用(因为我必须在接口上手动分配私有 ipv4-addr,而我希望 Terraform 为我做这件事)。然后我在 OVH github 上发现了 terraform-ovh-publiccloud-network 模块。尝试了这个 repo 中的简单示例(从自述文件复制粘贴),我可以看到 Bastion 节点上的第二个接口成功地从私有网络范围分配了 Ipv4 地址。从模块的代码中,我还可以看到使用了openstack_networking_subnet_v2 资源而不是OVH 特定的ovh_publiccloud_private_network_subnet?为什么以及它们之间有什么区别?当我从头开始编写自己的 Terraform 定义时,我应该使用哪一个?

我的目标只是创建一个私有网络/子网并创建一个具有两个接口的计算实例(连接到公共Ext-Net 和我刚刚创建的私有子网)。如果您有这样的经验,请为我提供一个简短的 OVH 工作示例,或者如果我遗漏了什么,请告诉我。

【问题讨论】:

你设法获得了 ipv4 吗? 【参考方案1】:

您可以以 800 美元左右的价格从 OVH 租用 /24 个公共 IP。但你必须先这样做。

【讨论】:

以上是关于如何使用 Terraform 在 OVH 上创建私有子网?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Terraform 代码创建 Ec2 实例,其中私钥将存储在 AWS 参数存储中(类型-安全字符串)

如何在 ovh 主机上使用 docker-compose

如何使用 terraform 在 LocalStack 上创建 EC2 实例?

OVH - 执行 cron

如何使用 OVH API 注册域

如何从 OVH 服务器上的 ssh 命令行更新 Drupal 9?