• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 关于我们

H3C SeerEngine-DC Terraform插件安装指导-E64xx-5W400

01-正文

本章节下载  (463.28 KB)

01-正文

目  录

1 概述

2 安装前的准备工作

2.1 硬件配置需求

2.2 软件配置需求

3 安装、卸载、升级插件

3.1 安装基础环境

3.2 安装Terraform插件

3.2.1 安装Terraform插件

3.3 卸载Terraform插件

3.3.1 卸载插件

3.4 升级Terraform插

3.4.1 升级插件

4 资源管理流程简介

5 资源管理

5.1 Tenant资源管理

5.1.1 Tenant资源查询

5.1.2 Tenant资源创建/修改

5.1.3 Tenant资源删除

5.1.4 Tenant资源参数说明

5.2 Network资源管理

5.2.1 Network资源查询

5.2.2 Network资源创建/修改

5.2.3 Network资源删除

5.2.4 Network资源字段说明

5.3 Subnet资源管理

5.3.1 Subnet资源查询

5.3.2 Subnet资源创建/修改

5.3.3 Subnet资源删除

5.3.4 Subnet资源字段说明

5.4 Router资源管理

5.4.1 Router资源查询

5.4.2 Router资源创建/修改

5.4.3 Router资源删除

5.4.4 Router资源字段说明

5.5 Router interface资源管理

5.5.1 Router interaface资源查询

5.5.2 Router interface资源创建/修改

5.5.3 Router interface资源删除

5.5.4 Router interface资源字段说明

5.6 QoS资源管理

5.6.1 QoS资源查询

5.6.2 QoS资源创建/修改

5.6.3 QoS资源删除

5.6.4 QoS资源字段说明

5.7 Port资源管理

5.7.1 Port资源查询

5.7.2 Port资源创建/修改

5.7.3 Port资源删除

5.7.4 Port资源字段说明

5.8 Security group资源管理

5.8.1 Security group资源查询

5.8.2 Security group资源创建/修改

5.8.3 Security group资源删除

5.8.4 Security group资源字段说明

5.9 Security rule资源管理

5.9.1 Security rule资源查询

5.9.2 Security_rule资源创建/修改

5.9.3 Security rule资源删除

5.9.4 Security rule资源字段说明

6 常见问题解答

 


1 概述

Terraform是一个开源的IT基础设施编排管理工具,通过扩展Terraform的Provider可以对接控制组件,轻松地创建、修改、删除、获取Tenant、Network、Subnet等多种资源。

Terraform插件支持编排的资源如下:

·     Network:提供向控制组件创建、修改、删除、查询虚拟链路层网络的功能。

·     Port:提供向控制组件创建、修改、删除、查询虚拟端口的功能。

·     QoS:提供向控制组件创建、修改、删除、查询网络策略的功能。

·     Router:提供向控制组件创建、修改、删除、查询虚拟路由器的功能。

·     Router interface:提供向控制组件添加、删除路由子网接口的功能。

·     Security group:提供向控制组件创建、修改、删除、查询安全组的功能。

·     Security group rules:提供向控制组件创建、修改、删除、查询安全组规则的功能。

·     Subnet:提供向控制组件创建、修改、删除、查询虚拟子网的功能。

·     Tenant:提供向控制组件创建、修改、删除、查询租户的功能。


2 安装前的准备工作

2.1  硬件配置需求

Terraform插件所需的服务器或虚拟机的硬件配置需求如表2-1所示。

表2-1 硬件配置需求

CPU内核

内存

所需磁盘空间

1核及以上

2GB及以上

5GB及以上

 

2.2  软件配置需求

Terraform插件基于以下环境运行。

表2-2 软件配置需求

软件环境

版本

操作系统

CentOS 7、CentOS 8

Terraform

1.1.x+

Golang

1.19.x

 


3 安装、卸载、升级插件

3.1  安装基础环境

安装插件前,需要先安装基础环境,步骤如下:

(1)     Terraform是以二进制可执行文件发布,可选择自动安装或者手动安装。

¡     (推荐)自动安装

[root@localhost ~]# yum install -y yum-utils

[root@localhost ~]# yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

[root@localhost ~]# yum -y install terraform

¡     手动安装

前往Terraform官网下载对应操作系统的可执行文件(Terraform是用go编写的,只有一个可执行文件),解压缩到指定的位置后,将Terraform可执行文件所在目录添加到系统环境变量PATH中即可。

[root@localhost terraform]# ll

总用量 56652

-rwxrwxrwx. 1 root root 58011648 10月 27 15:48 terraform

[root@localhost terraform]# export PATH=/home/terraform/:$PATH

注意

Terraform版本需在1.1.0及以上。

 

(2)     验证Terraform插件是否安装成功。若显示正确的软件版本号,则说明安装成功。

[root@localhost terraform]# terraform version

Terraform v1.1.9

on linux_386

3.2  安装Terraform插件

3.2.1  安装Terraform插件

1. 获取Terraform插件软件包

获取所需版本的Terraform插件软件包,并将软件包拷贝至服务器或虚拟机上的待安装目录下,或通过FTP、TFTP、SCP等文件传输协议将软件包上传到指定目录。

提示

使用FTP、TFTP方式上传时,请选择binary模式(二进制模式)传输,以免损坏软件包。

 

2. 使用Terraform管理资源

进入软件包(.zip文件)的存放路径(以路径/root为例),部署软件包。软件包的名称格式为SeerEngine_DC_TERRAFORM_PLUGIN-version.zip,其中version为软件包版本号。解压对应文件,并将文件拷贝到./h3c.com/sdn/tfplugin/1.0.0/linux_386/目录下(对应目录需预制,linux_386目录名称需与部署版本一致)。

[root@localhost linux_386]# ll

总用量 19572

-rwxrwxrwx. 1 root root 20039992 10 27 16:10 terraform-provider-tfplugin

3. 手动配置目录

(1)     /root目录下,手动生成.terraformrc文件,文件内容如下。

[root@localhost ~]# cat .terraformrc

provider_installation {

  filesystem_mirror {

    path    = "/home/tf-test"

    include = ["h3c.com/*/*"]

  }

}

表3-1 .terraformrc文件参数说明

参数

说明

path

h3c.com/sdn/tfplugin/1.0.0/linux_386/所在父目录

include

path路径下Terraform插件的安装路径,内容固定

 

(2)     /home/tf-test目录下,手动生成main.tf文件,配置Terraform对应provider,内容如下。

[root@localhost tf-test]# cat main.tf

terraform {

  required_providers {

    h3csdn = {

      source  = "h3c.com/sdn/tfplugin"              

      version = "=1.0.0"

    }

  }

  required_version = ">= 1.1.0"

}

 

provider "h3csdn" {

  url  = "http://192.168.97.100:30000"

  username = "admin"

  password  = "Pwd@12345"

  domain      = "sdn"

}

表3-2 main.tf文件参数说明

参数

说明

required_providers

required_providers用于指定Provider的registry源和版本。在这里内容固定

provider

Provider代表一个服务提供商,Terraform通过插件机制与Provider进行交互。Provider通过关键字“provider”进行声明

h3csdn

url

控制组件北向访问的URL

username

控制组件的登录用户名

password

控制组件登录密码

domain

对应用户所属域

 

3.3  卸载Terraform插件

3.3.1  卸载插件

(1)     进入.terraformrc配置文件中的path配置目录

[root@localhost ~]# cd /home/tf-test

(2)     删除.terraform.lock.hcl文件和.terraform目录

[root@localhost tf-test]#  rm -f .terraform.lock.hcl

[root@localhost tf-test]#  rm -rf .terraform

(3)     确认是否删除,使用ls –a查询path配置目录下文件是否删除,回显中不存在.terraform.lock.hcl文件和.terraform目录

[root@localhost tf-test]# ls -a

3.4  升级Terraform插件

3.4.1  升级插件

可通过卸载插件后重新安装来对Terraform插件进行升级。卸载插件请参见“0

卸载Terraform插件”。安装插件请参见“3.2  安装Terraform插件”。


4 资源管理流程简介

以创建一个租户资源为例介绍如何使用Terraform。

(1)     修改main.tf文件,配置创建tenant,新增内容如下。

resource "h3csdn_tenant" "example" {

  name = "tenant"

  vds_list = ["ffffffff-0000-0000-0000-000000000001"]

}

描述一个名为example的租户资源,其中租户名称为tenant,租户所属分布式交换机列表为"ffffffff-0000-0000-0000-000000000001"。

(2)     执行如下命令初始化。

terraform init

回显结果如下,首次执行时会部署Terraform插件。

[root@localhost tf-test]# terraform init

 

Initializing the backend...

 

Initializing provider plugins...

- Reusing previous version of h3csdn/tfplugin from the dependency lock file

- Using previously-installed h3csdn/tfplugin v1.0.0

 

Terraform has been successfully initialized!

 

You may now begin working with Terraform. Try running "terraform plan" to see

any changes that are required for your infrastructure. All Terraform commands

should now work.

 

If you ever set or change modules or backend configuration for Terraform,

rerun this command to reinitialize your working directory. If you forget, other

commands will detect it and remind you to do so if necessary.

(3)     执行如下命令查看需要创建的资源。

terraform plan

回显如下,Terraform会显示要创建哪些资源。

[root@localhost tf-test]# terraform plan

 

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:

  + create

 

Terraform will perform the following actions:

 

  # h3csdn_tenant.example will be created

  + resource "h3csdn_tenant" "example" {

      + id       = (known after apply)

      + name     = "tenant"

      + vds_list = [

          + "ffffffff-0000-0000-0000-000000000001",

        ]

    }

 

Plan: 1 to add, 0 to change, 0 to destroy.

 

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

 

Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform

apply" now.

(4)     执行如下命令创建资源。

terraform apply

根据提示输入“yes”,回显如下,可以看到名为tenant的租户已经创建,也可以在控制组件上查看资源是否已经创建。

[root@localhost tf-test]# terraform apply

 

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:

  + create

 

Terraform will perform the following actions:

 

  # h3csdn_tenant.example will be created

  + resource "h3csdn_tenant" "example" {

      + id       = (known after apply)

      + name     = "tenant"

      + vds_list = [

          + "ffffffff-0000-0000-0000-000000000001",

        ]

    }

 

Plan: 1 to add, 0 to change, 0 to destroy.

 

Do you want to perform these actions?

  Terraform will perform the actions described above.

  Only 'yes' will be accepted to approve.

 

  Enter a value: yes

 

h3csdn_tenant.example: Creating...

h3csdn_tenant.example: Creation complete after 1s [id=e4fcf721-5762-4f41-93b1-10e2259498ca]

 

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

(5)     执行如下命令删除资源。

terraform destroy

根据提示输入“yes”,回显如下,可以看到名为tenant的租户被删除,也可以在控制组件上查看资源是否已经删除。

[root@localhost tf-test]# terraform destroy

h3csdn_tenant.example: Refreshing state... [id=e4fcf721-5762-4f41-93b1-10e2259498ca]

 

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:

  - destroy

 

Terraform will perform the following actions:

 

  # h3csdn_tenant.example will be destroyed

  - resource "h3csdn_tenant" "example" {

      - id       = "e4fcf721-5762-4f41-93b1-10e2259498ca" -> null

      - name     = "tenant" -> null

      - vds_list = [

          - "ffffffff-0000-0000-0000-000000000001",

        ] -> null

    }

 

Plan: 0 to add, 0 to change, 1 to destroy.

 

Do you really want to destroy all resources?

  Terraform will destroy all your managed infrastructure, as shown above.

  There is no undo. Only 'yes' will be accepted to confirm.

 

  Enter a value: yes

 

h3csdn_tenant.example: Destroying... [id=e4fcf721-5762-4f41-93b1-10e2259498ca]

h3csdn_tenant.example: Destruction complete after 1s

 

Destroy complete! Resources: 1 destroyed.


5 资源管理

5.1  Tenant资源管理

5.1.1  Tenant资源查询

(1)     修改main.tf文件,配置查询所有tenant,新增内容如下。

data "h3csdn_tenants" "all" {}

 

output "h3csdn_tenants" {

  value = data.h3csdn_tenants.all

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply查看所有租户资源。

5.1.2  Tenant资源创建/修改

(1)     修改main.tf文件,配置创建或修改tenant,新增内容如下。

resource "h3csdn_tenant" "tf" {

  name = "tf"

  vds_list = ["ffffffff-0000-0000-0000-000000000001"]

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply开始创建/修改。

(4)     运行terraform show查看已创建/修改的资源。

5.1.3  Tenant资源删除

(1)     在创建或修改tenant的基础上,配置删除tenant。

(2)     运行terraform destroy开始删除。

5.1.4  Tenant资源参数说明

·     name:租户名称,字符串类型,必填字段。

·     vds_list:虚拟分布式交换机列表,列表类型,非必填字段。

注意

·     必填字段,表示资源中必需填写此字段和值。

·     非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在默认值会以控制组件的默认值处理。

 

5.2  Network资源管理

5.2.1  Network资源查询

(1)     修改main.tf文件,配置查询所有network,新增内容如下。

data "h3csdn_networks" "nets" {}

 

output "h3csdn_networks" {

  value = data.h3csdn_networks.nets

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply查看所有虚拟链路层网络资源。

5.2.2  Network资源创建/修改

(1)     修改main.tf文件,配置创建或修改network,新增内容如下。

resource "h3csdn_network" "net" {

  name = "net"

  shared = false

  admin_state_up = true

  external = false

  mtu = 1500

  tenant_id = "60453b88-b5ce-497b-b173-adc822887a76"

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply开始创建/修改。

(4)     运行terraform show查看已创建/修改的资源。

5.2.3  Network资源删除

(1)     在创建或修改network的基础上,配置删除network。

(2)     运行terraform destroy开始删除。

5.2.4  Network资源字段说明

·     name:虚拟链路层网络名称,字符串类型,非必填字段。

·     shared:网络是否共享,取值true或false,布尔类型,非必填字段。

·     admin_state_up:管理状态,取值true或false,布尔类型,非必填字段。

·     external:是否为外网,取值true或false,布尔类型,非必填字段。

·     mtu:网络MTU值,整数类型,非必填字段。

·     tenant_id:网络所属租户名称,字符串类型,必填字段。

·     provider_physical_network:物理接口名称,字符串类型,非必填字段。

·     provider_network_type:网络类型,取值为vlan、vxlan或flat,字符串类型,非必填字段。

·     provider_segmentation_id:网络Segment ID,整数类型,非必填字段。

注意

·     必填字段,表示资源中必需填写此字段和值。

·     非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在默认值会以控制组件的默认值处理。

 

5.3  Subnet资源管理

5.3.1  Subnet资源查询

(1)     修改main.tf文件,配置查询所有subnet,新增内容如下。

data "h3csdn_subnets" "sbs"{}

 

output "h3csdn_subnets" {

  value = data.h3csdn_subnets.sbs

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply查看所有子网资源。

5.3.2  Subnet资源创建/修改

(1)     修改main.tf文件,配置创建或修改subnet,新增内容如下。

resource "h3csdn_subnet" "sn"{

 name = "subnet1"

 network_id = "343c92b2-f4fc-4cf7-a834-6e8759919067"

 cidr = "123.123.123.0/24"

 ip_version = 4

 tenant_id = "60453b88-b5ce-497b-b173-adc822887a76"

 lease_time = 365

 allocation_pools = [

  {

    start = "123.123.123.3"

    end = "123.123.123.254"

  }

 ]

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply开始创建/修改。

(4)     运行terraform show查看已创建/修改的资源。

5.3.3  Subnet资源删除

(1)     在创建或修改subnet的基础上,删除subnet。

(2)     运行terraform destroy开始删除。

5.3.4  Subnet资源字段说明

·     name:虚拟子网名称,字符串类型,必填字段。

·     network_id:子网所属网络ID,字符串类型,必填字段。

·     network_name:子网所属网络名称,字符串类型,非必填字段。

·     cidr:网络地址,IPv4格式为IP地址/掩码长度,IPv6格式为IP地址/前缀长度,字符串类型,必填字段。

·     ip_version:IP版本,取值4或6,整数类型,必填字段。

·     tenant_id:子网所属租户名称,字符串类型,必填字段。

·     gateway_ip:网关IP地址,字符串类型,非必填字段。

·     enable_dhcp:子网DHCP开关,取值true或者false,布尔类型,非必填字段。

·     dns_nameservers:DNS服务器列表,列表类型,非必填字段。

·     lease_time:DHCP租用时间,单位为天,仅IPv4支持,整数类型,必填字段。

·     allocation_pools:子网地址池,列表类型,必填字段。

·     start:子网地址池开始的IP地址,字符串类型,当allocation_pools有值时为必填字段。

·     end:子网地址池结束的IP地址,字符串类型,当allocation_pools有值时为必填字段。

·     ipv6_address_mode:IPv6地址模式,字符串类型,取值为slaac、dhcpv6-stateful或dhcpv6-stateless,非必填字段。

·     ipv6_ra_mode:IPv6 RA模式,取值为slaac、dhcpv6-stateful或dhcpv6-stateless,字符串类型,非必填字段。

注意

·     必填字段,表示资源中必需填写此字段和值。

·     非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在默认值会以控制组件的默认值处理。

·     涉及IPv6的IP地址或CIDR,必须为全大写缩略格式,例如bd:06D::/64应为BD:6D::/64。

 

5.4  Router资源管理

5.4.1  Router资源查询

(1)     修改main.tf文件,配置查询所有router,新增内容如下。

data "h3csdn_routers" "routers" {}

 

output "h3csdn_routers" {

  value = data.h3csdn_routers.routers

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply查看所有虚拟路由器资源。

5.4.2  Router资源创建/修改

(1)     修改main.tf文件,配置创建或修改router,新增内容如下。

resource "h3csdn_router" "rt" {

  name = "router_test"

  admin_state_up = true

  tenant_id = "60453b88-b5ce-497b-b173-adc822887a76"

  external_gateway = [

{

          network_id = "d1ee4e87-ceda-4512-9f5b-c14cd4a8c0e7"

        }

provider_segmentation_id = 2020

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply开始创建/修改。

(4)     运行terraform show查看已创建/修改的资源。

5.4.3  Router资源删除

(1)     在创建或修改router的基础上,删除router。

(2)     运行terraform destroy开始删除。

5.4.4  Router资源字段说明

·     name:虚拟路由器名称,字符串类型,必填字段。

·     admin_state_up管理状态,取值为true或false,布尔类型,必填字段。

·     tenant_id:虚拟路由器所属租户ID,字符串类型,必填字段。

·     external_gateway:外部网关信息,值为空时置为[],必填字段。

·     network_id:虚拟路由器连接的外部网络信息,字符串类型,非必填字段。

·     provider_segmentation_id:三层VXLAN ID,取值1~16777215的整数,必填字段。

注意

·     必填字段,表示资源中必需填写此字段和值。

·     非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在默认值会以控制组件的默认值处理。

 

5.5  Router interface资源管理

5.5.1  Router interaface资源查询

(1)     修改main.tf文件,配置查询所有router interface,新增内容如下。

data "h3csdn_routerinterfaces" "faces" {}

 

output "h3csdn_routerinterfaces" {

  value = data.h3csdn_routerinterfaces.faces

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply查看所有虚拟端口资源。

5.5.2  Router interface资源创建/修改

(1)     修改main.tf文件,配置创建router interface,新增内容如下。

resource "h3csdn_routerinterface" "bind"{

  router_id = "bb8bb40d-7c1f-4f34-9c26-40f021a00f3e"

  subnet_id = "cb693ee6-bac5-4f0b-a517-f8566c831954"

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply开始创建/修改。

(4)     运行terraform show查看已创建/修改的资源。

5.5.3  Router interface资源删除

(1)     在创建router interface的基础上,删除router interface。

(2)     运行terraform destroy开始删除。

5.5.4  Router interface资源字段说明

·     router_id:虚拟路由器ID,字符串类型,必填字段。

·     subnet_id:子网ID,字符串类型,必填字段。

注意

·     必填字段,表示资源中必需填写此字段和值。

·     非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在默认值会以控制组件的默认值处理。

 

5.6  QoS资源管理

5.6.1  QoS资源查询

(1)     修改main.tf文件,配置查询所有qos,新增内容如下。

data "h3csdn_qoses" "qoses" {}

 

output "h3csdn_qoses" {

  value = data.h3csdn_qoses.qoses

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply查看所有虚拟端口资源。

5.6.2  QoS资源创建/修改

(1)     修改main.tf文件,配置创建或修改qos,新增内容如下。

resource "h3csdn_qos" "qos" {

  name = "qos_test"

   policies = {

   dscp = "59",

   rate_unit: "Kbps",

   rx_averatelimit = 0,

   rx_brustsize = 333,

   tx_averatelimit = 23330,

   tx_brustsize = 0

  }

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply开始创建/修改。

(4)     运行terraform show查看已创建/修改的资源。

5.6.3  QoS资源删除

(1)     在创建或修改qos的基础上,配置删除qos。

(2)     运行terraform destroy开始删除。

5.6.4  QoS资源字段说明

·     name:QoS名称,字符串类型,必填字段。

·     policies:QoS策略,字典类型,字典内容可参考示例,必填字段。

·     dscp:字符串类型,非必填字段。

·     rate_unit:速率单位,字符串类型,取值为Kbps或Mbps,非必填字段。

·     rx_averatelimit:平均接收速率,整数类型,非必填字段。

·     rx_brustsize:接收流量突发尺寸,整数类型,非必填字段。

·     tx_averatelimit:平均发送速率,整数类型,非必填字段。

·     tx_brustsize:发送流量突发尺寸,整数类型,非必填字段。

注意

·     必填字段,表示资源中必需填写此字段和值。

·     非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在默认值会以控制组件的默认值处理。

 

5.7  Port资源管理

5.7.1  Port资源查询

(1)     修改main.tf文件,配置查询所有port,新增内容如下。

data "h3csdn_ports" "ports" {}

 

output "h3csdn_ports" {

  value = data.h3csdn_ports.ports

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply查看所有虚拟端口资源。

5.7.2  Port资源创建/修改

(1)     修改main.tf文件,配置创建或修改port,新增内容如下。

resource "h3csdn_port" "port1" {

  name = "port_test"

  network_id = "59ae5453-d7be-40f4-8aaf-535184a8e783"

  mac_address = "fa:16:3e:bc:2d:51"

  fixed_ips = [

        {

          subnet_id = "1fa1a32d-bee1-420e-b7f2-60127cebd403",

          ip_address = "10.0.0.44"

        },

        {

          subnet_id = "aa7f29e6-0e77-4417-b1f4-0de2ac8ae293",

          ip_address = "24::32"

        },

      ]

  port_security_enabled =  true

  port_securities = [

        {

          port_security = "d1ee4e87-ceda-4512-9f5b-c14cd4a8c0e7",

        }

       ]

  qos = "b8ec06c3-941c-4956-a91c-0571117e9a25"

  }

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply开始创建/修改。

(4)     运行terraform show查看已创建/修改的资源。

5.7.3  Port资源删除

(1)     在创建或修改port的基础上,配置删除port。

(2)     运行terraform destroy开始删除。

5.7.4  Port资源字段说明

·     name:虚拟端口名称,字符串类型,非必填字段。

·     network_id:虚拟端口所属网络ID,字符串类型,必填字段。

·     mac_address:虚拟端口MAC地址,以fa:16:3e:bc:2d:51格式为例,字符串类型,非必填字段。

·     port_securities:安全策略列表,值为空时置为[],列表类型,必填字段。

·     port_security:安全组ID,字符串类型,当port_securities非空时必填。

·     fixed_ips:虚拟端口IP地址,列表类型,必填字段。

·     subnet_id:虚拟端口IP的子网,字符串类型,当fixed_ips非空时必填。

·     ip_address:虚拟端口IP,字符串类型,当fixed_ips非空时必填。

·     qos:虚拟端口绑定的QoS ID,字符串类型,非必填字段。

·     port_security_enabled:端口安全开关,取值true或者false,布尔类型,非必填字段。

注意

·     必填字段,表示资源中必需填写此字段和值。

·     非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在默认值会以控制组件的默认值处理。

·     涉及IPv6的IP地址或CIDR,必须为全大写缩略格式,例如bd:06D::/64应为BD:6D::/64。

 

5.8  Security group资源管理

5.8.1  Security group资源查询

(1)     修改main.tf文件,配置查询所有security group,新增内容如下。

data "h3csdn_securitygroups"  "sgs" {}

 

output "h3csdn_securitygroups" {

  value = data.h3csdn_securitygroups.sgs

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply查看所有安全组。

5.8.2  Security group资源创建/修改

(1)     修改main.tf文件,配置创建或修改security group,新增内容如下。

resource "h3csdn_securitygroup" "sg_instance" {

  name = "sg1"

  tenant_id = "a85d80eb-e5a0-4de6-b75b-4f48329ae262"

  empty_rule_action = "deny"

  ip_mac_binding = true

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply开始创建/修改。

(4)     运行terraform show查看已创建/修改的资源。

5.8.3  Security group资源删除

(1)     在创建或修改安全组的基础上,删除安全组。

(2)     运行terraform destroy开始删除。

5.8.4  Security group资源字段说明

·     name:安全组名称,字符串类型,必填字段。

·     tenant_id:虚拟路由器所属租户ID,字符串类型,必填字段。

·     empty_rule_action:空规则行为,取值为permit或deny,字符串类型,必填字段。

·     ip_mac_binding:IP-MAC防欺骗,取值true或者false,布尔类型,必填字段。

注意

·     必填字段,表示资源中必需填写此字段和值。

·     非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在默认值会以控制组件的默认值处理。

 

5.9  Security rule资源管理

5.9.1  Security rule资源查询

(1)     修改main.tf文件,配置查询所有Security rule,新增内容如下。

data "h3csdn_securityrules" "sr" {}

 

output "h3csdn_securityrules" {

  value = data.h3csdn_securityrules.sr

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply查看所有安全组规则。

5.9.2  Security_rule资源创建/修改

(1)     修改main.tf文件,配置创建或修改Security rule,新增内容如下。

resource "h3csdn_securityrule" "rule_instance" {

  name = "rule"

  portsecurity_id = "d638cc9f-19d4-48ef-bd25-6682965f0564"

  remote_portsecurity_id = "d638cc9f-19d4-48ef-bd25-6682965f0564"

  ip_version = "4"

  direction = "ingress"

  protocol = "udp"

  tenant_id = "60453b88-b5ce-497b-b173-adc822887a76"

}

(2)     运行terraform plan查看资源。

(3)     确定资源无误后,运行terraform apply开始创建/修改。

(4)     运行terraform show查看已创建/修改的资源。

5.9.3  Security rule资源删除

(1)     在创建或修改Security rule的基础上,删除Security rule。

(2)     运行terraform destroy开始删除。

5.9.4  Security rule资源字段说明

·     name:安全组规则名称,字符串类型,必填字段。

·     portsecurity_id:安全策略ID,字符串类型,必填字段。

·     remote_portsecurity_id:远端安全策略ID,字符串类型,非必填。

·     ip_version:IP版本,字符串类型,非必填。

·     ipprefix:IP前缀,字符串类型,非必填。

·     direction:安全组规则生效方向,字符串类型,取值为ingress或egress,必填字段。

·     protocol:协议类型,字符串类型,取值为tcp、udp或icmp,非必填字段。

·     tenant_id:安全组规则所属租户ID,字符串类型,必填字段。

·     portrange_max:端口号范围上限,整数类型,非必填。

·     portrange_min:端口号范围下限,整数类型,非必填。

·     icmp_type:ICMP协议类型,整数类型,非必填。

·     icmp_code:ICMP协议代码,整数类型,非必填。

注意

·     必填字段,表示资源中必需填写此字段和值。

·     非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在默认值会以控制组件的默认值处理。

 


6 常见问题解答

1. 在Terraform上操作资源时,如果控制组件返回“The specified resource does not exist.”错误,怎么办?

Terraform每次执行命令前,均会在控制组件上查找相应的资源并更新Terraform state文件中的值。当查找的资源不存在时,会报错。此时需要手动在Terraform state文件上删除此资源。

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!

新华三官网
联系我们