01-正文
本章节下载: 01-正文 (1.06 MB)
目 录
6.17.2 VLAN-VXLAN映射表设备绑定资源创建/修改
6.17.4 VLAN-VXLAN映射表设备绑定资源字段说明
6.18 VLAN/QinQ-VXLAN映射表接口绑定资源管理
6.18.1 VLAN/QinQ-VXLAN映射表接口绑定资源查询
6.18.2 VLAN/QinQ-VXLAN映射表接口绑定资源创建/修改
6.18.3 VLAN/QinQ-VXLAN映射表接口绑定资源删除
6.18.4 VLAN/QinQ-VXLAN映射表接口绑定资源字段说明
Terraform是一个开源的IT基础设施编排管理工具,通过扩展Terraform的Provider可以对接控制组件,轻松地创建、修改、删除、获取网络(Tenant、Network、Subnet等)和安全(防火墙服务、防火墙规则、地址对象组等)资源。
使用Terraform存在如下优势:
· 基础设施即代码
Terraform使用高级配置语法描述基础设施,使其可以纳入版本控制,并能像其他代码一样被管理和重用,为数据中心的架构提供了一种新的管理方式。
· 执行计划
Terraform的“计划”功能可以生成执行计划,清晰展示了Terraform在执行apply时将进行的操作,有助于避免意外情况的发生。
· 资源图
Terraform会构建所有资源的图,并行化处理非依赖资源的创建和修改,这使得Terraform能够高效地构建基础设施,让操作人员深入了解基础设施各组件之间的依赖关系。
· 变更自动化
Terraform可以自动应用复杂的变更集到您的基础架构上,上述的执行计划和资源图能够确切地展示Terraform将如何进行更改,避免了许多可能由人为操作引起的错误。
Terraform网络插件提供了针对数据中心控制组件的Provider,部署插件后可以编排如表1-1所示的网络资源。
功能 |
描述 |
Network |
提供向控制组件创建、修改、删除、查询虚拟链路层网络的功能 |
Port |
提供向控制组件创建、修改、删除、查询虚拟端口的功能 |
QoS |
提供向控制组件创建、修改、删除、查询网络策略的功能 |
Router |
提供向控制组件创建、修改、删除、查询虚拟路由器的功能 |
Router interface |
提供向控制组件添加、删除路由子网接口的功能 |
Security group |
提供向控制组件创建、修改、删除、查询安全组的功能 |
Security group rules |
提供向控制组件创建、修改、删除、查询安全组规则的功能 |
Subnet |
提供向控制组件创建、修改、删除、查询虚拟子网的功能 |
Tenant |
提供向控制组件创建、修改、删除、查询租户的功能 |
Floating IP |
提供向控制组件创建、修改、删除、查询浮动IP的功能 |
Fabric |
提供向控制组件创建、修改、删除、查询Fabric的功能 |
IP pool |
提供向控制组件创建、修改、删除、查询IP地址池的功能 |
VLAN pool |
提供向控制组件创建、修改、删除、查询VLAN池的功能 |
VXLAN pool |
提供向控制组件创建、修改、删除、查询VXLAN池的功能 |
VLAN-VXLAN映射表 |
提供向控制组件创建、修改、删除、查询VLAN-VXLAN映射表的功能 |
QinQ映射表 |
提供向控制组件创建、修改、删除、查询QinQ映射表的功能 |
VLAN/QinQ-VXLAN映射表设备绑定 |
提供向控制组件创建、修改、删除、查询VLAN/QinQ-VXLAN映射表设备绑定的功能 |
VLAN/QinQ-VXLAN映射表接口绑定 |
提供向控制组件创建、修改、删除、查询VLAN/QinQ-VXLAN映射表接口绑定的功能 |
PVLAN |
提供向控制组件创建、修改、删除、查询私有VLAN的功能 |
Group |
提供向控制组件创建、修改、删除、查询设备组的功能 |
Device |
提供向控制组件创建、删除、查询设备组成员的功能 |
Down link port |
提供向控制组件创建、删除、查询下行口的功能 |
PVID |
提供向控制组件创建、删除、查询Port VLAN ID的功能 |
Gateway |
提供向控制组件创建、修改删除、查询出口网关的功能 |
GW member |
提供向控制组件创建、修改删除、查询出口网关成员的功能 |
Terraform安全插件提供了针对数据中心控制组件安全业务的Provider,部署插件后可以编排如表1-2所示的安全资源。
功能 |
描述 |
Firewall |
提供向控制组件创建、修改、删除、查询租户防火墙服务实例的功能 |
Firewall Policy |
提供向控制组件创建、修改、删除、查询防火墙策略的功能 |
Firewall Rule |
提供向控制组件创建、修改、删除、查询防火墙规则的功能 |
Firewall Address Group |
提供向控制组件创建、修改、删除、查询地址对象组的功能 |
Firewall Service Group |
提供向控制组件创建、修改、删除、查询服务对象组的功能 |
Terraform插件所需的服务器或虚拟机的硬件配置需求如表2-1所示。
CPU内核 |
内存 |
所需磁盘空间 |
1核及以上 |
2GB及以上 |
5GB及以上 |
Terraform插件基于以下环境运行。
表2-2 软件配置需求
软件环境 |
版本 |
操作系统 |
CentOS 7、CentOS 8、Ubuntu、Kylin V10 |
Terraform |
1.1.x+ |
请参考Terraform官网上不同操作系统对应的说明,完成Terraform的安装。
Terraform版本需在1.1.0及以上。
获取所需版本的Terraform插件软件包,并将软件包拷贝至服务器或虚拟机上的待安装目录下,或通过FTP、TFTP、SCP等文件传输协议将软件包上传到指定目录。
使用FTP、TFTP方式上传时,请选择binary模式(二进制模式)传输,以免损坏软件包。
进入软件包(.zip文件)的存放路径(以路径/root为例),部署软件包。软件包的名称格式为SeerEngine_DC_TERRAFORM_PLUGIN-version.zip,其中version为软件包版本号。解压对应文件,并将文件拷贝到./h3c.com/sdn/tfplugin/1.0.0/{platform}/目录下(对应目录需预制,{platform}目录名称需与部署版本一致,可通过terraform version命令查看当前平台版本)。
[root@localhost linux_386]# chmod 755 terraform-provider-tfplugin
[root@localhost linux_386]# ll
总用量 19572
-rwxr-xr-x 1 root root 20039992 10月 27 16:10 terraform-provider-tfplugin
(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 |
对应用户所属域 |
(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
可通过卸载插件后重新安装来对Terraform插件进行升级。卸载插件请参见“3.3 卸载Terraform插件”。安装插件请参见“3.2 安装Terraform插件”。
请参考Terraform官网上不同操作系统对应的说明,完成Terraform的安装。
Terraform版本需在1.1.0及以上。
获取所需版本的Terraform插件软件包,并将软件包拷贝至服务器或虚拟机上的待安装目录下,或通过FTP、TFTP、SCP等文件传输协议将软件包上传到指定目录。
使用FTP、TFTP方式上传时,请选择binary模式(二进制模式)传输,以免损坏软件包。
进入软件包(.zip文件)的存放路径(以路径/root为例),部署软件包。软件包的名称格式为SeerEngine_DC_TERRAFORM_SEC-version-arch.zip,其中version为软件包版本号,arch为操作系统架构版本。解压对应文件,并将文件拷贝到./h3c.com/sdsec/dcplugin/1.0.0/{platform}/目录下(对应目录需预制,{platform}目录名称需与部署版本一致,可通过terraform version命令查看当前平台版本)。
[terraform@localhost linux_arm64]$ terraform version
Terraform v1.6.5
on linux_arm64
[root@localhost linux_arm64]# chmod 755 terraform-provider-dcplugin
[root@localhost linux_arm64]# ll
总用量 19400
-rwxrwxr-x 1 terraform terraform 19863016 1月 16 08:38 terraform-provider-dcplugin
(1) 用户home目录下,手动生成.terraformrc文件,文件内容如下。
[terraform@localhost ~]# cat .terraformrc
provider_installation {
filesystem_mirror {
path = "/home/terraform/providers"
include = ["h3c.com/*/*"]
}
}
表4-1 .terraformrc文件参数说明
参数 |
说明 |
path |
h3c.com/sdsec/dcplugin/1.0.0/所在父目录 |
include |
path路径下Terraform插件的安装路径,内容固定 |
(2) /home/terraform/workspace/tenant1目录下,手动生成main.tf文件,配置Terraform对应provider,内容如下。
[root@localhost tenant1]# cat main.tf
terraform {
required_providers {
h3csdn = {
source = "h3c.com/sdn/tfplugin"
version = "=1.0.0"
}
h3csdsec = {
source = "h3c.com/sdsec/dcplugin"
version = "=1.0.0"
}
}
required_version = ">= 1.1.0"
}
provider "h3csdn" {
url = "http://10.123.56.172:30000"
username = "admin"
password = "Pwd@12345"
domain = "sdn"
}
provider "h3csdsec" {
url = "http://10.123.56.172:30000"
username = "admin"
password = "Pwd@12345"
domain = "sdn"
}
表4-2 main.tf文件参数说明
参数 |
说明 |
|
required_providers |
required_providers用于指定Provider的registry源和版本。在这里内容固定 |
|
provider |
Provider代表一个服务提供商,Terraform通过插件机制与Provider进行交互。Provider通过关键字“provider”进行声明 |
|
h3csdsec |
url |
控制组件北向访问的URL |
username |
控制组件的登录用户名 |
|
password |
控制组件登录密码 |
|
domain |
对应用户所属域 |
(1) 进入.terraformrc配置文件中的path配置目录。
[terraform@localhost ~]# cd /home/terraform
(2) 删除.terraform.lock.hcl文件中的provider "h3c.com/sdsec/dcplugin"记录。
可通过卸载插件后重新安装来对Terraform插件进行升级。卸载插件请参见“4.3 卸载Terraform安全插件”。安装插件请参见“4.2 安装Terraform安全插件”。
以创建一个租户资源为例介绍如何使用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.
(1) 修改main.tf文件,配置查询所有tenant,新增内容如下。
data "h3csdn_tenants" "all" {}
output "h3csdn_tenants" {
value = data.h3csdn_tenants.all
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有租户资源。
(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查看已创建/修改的资源。
(1) 在创建或修改tenant的基础上,配置删除tenant。
(2) 运行terraform destroy开始删除。
· name:租户名称,字符串类型,必填字段。
· vds_list:虚拟分布式交换机列表,列表类型,租户可以被多个VDS使用,非必填字段。未填写该参数时,自动填入系统VDS的值。若系统VDS未设置,需手动填写vds_list。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有network,新增内容如下。
data "h3csdn_networks" "nets" {}
output "h3csdn_networks" {
value = data.h3csdn_networks.nets
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有虚拟链路层网络资源。
(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查看已创建/修改的资源。
(1) 在创建或修改network的基础上,配置删除network。
(2) 运行terraform destroy开始删除。
· name:虚拟链路层网络名称,字符串类型,非必填字段。
· shared:网络是否共享,布尔类型,取值为true或false,缺省值为false,外网及VLAN网络仅支持false,非必填字段。
· admin_state_up:管理状态,布尔类型,取值为true或false,无缺省值,非必填字段。
· external:是否为外网,布尔类型,取值为true或false,无缺省值,非必填字段。
· mtu:网络MTU值,整数类型,取值范围为68~65535的整数,无缺省值,非必填字段。
· tenant_id:网络所属租户名称,字符串类型,必填字段。
· provider_physical_network:物理接口名称,字符串类型,非必填字段。
· provider_network_type:网络类型,字符串类型,缺省值为vxlan,目前内网只支持取值为vxlan或vlan,外网只支持取值vxlan、vlan或flat,非必填字段。
· provider_segmentation_id:网络Segment ID,整数类型,无缺省值,非必填字段。
¡ 若provider_network_type取值为vlan,则provider_segmentation_id即为VLAN ID。
¡ 若provider_network_type取值为vxlan,则provider_segmentation_id即为VXLAN ID。
¡ 若provider_network_type取值为flat,则provider_segmentation_id不填。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有subnet,新增内容如下。
data "h3csdn_subnets" "sbs"{}
output "h3csdn_subnets" {
value = data.h3csdn_subnets.sbs
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有子网资源。
(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查看已创建/修改的资源。
(1) 在创建或修改subnet的基础上,删除subnet。
(2) 运行terraform destroy开始删除。
· name:虚拟子网名称,字符串类型,必填字段。
· network_id:子网所属网络ID,字符串类型,必填字段。
· network_name:子网所属网络名称,字符串类型,非必填字段。
· cidr:网络地址,字符串类型,IPv4子网格式为IP地址/掩码长度,IPv6子网格式为IPv6地址/前缀长度,必填字段。
· ip_version:IP版本,整数类型,取值为4或6,必填字段。
· tenant_id:子网所属租户名称,字符串类型,必填字段。
· gateway_ip:网关IP地址,字符串类型,非必填字段。
· enable_dhcp:子网DHCP开关,布尔类型,取值为true或者false,非必填字段。
· dns_nameservers:DNS服务器列表,列表类型,非必填字段。
· lease_time:DHCP地址租用时间,整数类型,取值范围为0~365的整数,单位为天,仅IPv4支持,必填字段。
· allocation_pools:子网地址池,列表类型,值为空时置为[],必填字段。
· start(allocation_pools子元素):子网地址池开始的IP地址,字符串类型,当allocation_pools非空时为必填字段。
· end(allocation_pools子元素):子网地址池结束的IP地址,字符串类型,当allocation_pools非空时为必填字段。
· ipv6_address_mode:IPv6地址模式,字符串类型,取值为slaac、dhcpv6-stateful或dhcpv6-stateless,不填写时等效为缺省值null,缺省表示使用静态地址,非必填字段。
· ipv6_ra_mode:IPv6 RA模式,字符串类型,取值为slaac、dhcpv6-stateful或dhcpv6-stateless,不填写时等效为缺省值null,缺省表示使用静态地址,非必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
· 涉及IPv6的IP地址或CIDR,必须为全大写缩略格式,例如bd:06D::/64应为BD:6D::/64。
(1) 修改main.tf文件,配置查询所有router,新增内容如下。
data "h3csdn_routers" "routers" {}
output "h3csdn_routers" {
value = data.h3csdn_routers.routers
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有虚拟路由器资源。
(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"
enable_snat = false
}
]
provider_segmentation_id = 2020
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改router的基础上,删除router。
(2) 运行terraform destroy开始删除。
· name:虚拟路由器名称,字符串类型,必填字段。
· admin_state_up:管理状态,布尔类型,取值为true或false,必填字段。
· tenant_id:虚拟路由器所属租户ID,字符串类型,必填字段。
· external_gateway:外部网关信息,值为空时置为[],必填字段。
· network_id(external_gateway子元素):虚拟路由器连接的外部网络信息,字符串类型,非必填字段。
· enable_snat:是否开启SNAT功能,布尔类型,非必填字段,仅当配置network_id后才可配置此参数。
· provider_segmentation_id:三层VXLAN ID,整数类型,取值范围为1~16777215的整数,必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有router interface,新增内容如下。
data "h3csdn_routerinterfaces" "faces" {}
output "h3csdn_routerinterfaces" {
value = data.h3csdn_routerinterfaces.faces
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有虚拟端口资源。
(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查看已创建/修改的资源。
(1) 在创建router interface的基础上,删除router interface。
(2) 运行terraform destroy开始删除。
· router_id:虚拟路由器ID,字符串类型,必填字段。
· subnet_id:子网ID,字符串类型,必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有qos,新增内容如下。
data "h3csdn_qoses" "qoses" {}
output "h3csdn_qoses" {
value = data.h3csdn_qoses.qoses
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有虚拟端口资源。
(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查看已创建/修改的资源。
(1) 在创建或修改qos的基础上,配置删除qos。
(2) 运行terraform destroy开始删除。
· name:QoS名称,字符串类型,必填字段。
· policies:QoS策略,字典类型,字典内容可参考示例,必填字段。
· dscp(policies子元素):DSCP,字符串类型,取值范围为0~63的整数,非必填字段。
· rate_unit(policies子元素):速率单位,字符串类型,取值为Kbps或Mbps,缺省值为Mbps,非必填字段。
· rx_averatelimit(policies子元素):平均接收速率,整数类型,非必填字段。根据rate_unit取值不同,该参数的取值范围如下:
¡ 当rate_unit为Mbps时,取值范围为0~2147483的整数,0表示不限速。
¡ 当rate_unit为Kbps时,取值范围为0~2147483647的整数,0表示不限速。
· rx_brustsize(policies子元素):接收流量突发尺寸,整数类型,取值范围为0~268435455的整数,单位为KBytes。如果配置了rx_averatelimit,则缺省值为rx_averatelimit/2,非必填字段。
· tx_averatelimit(policies子元素):平均发送速率,整数类型,非必填字段。根据rate_unit取值不同,该参数的取值范围如下:
¡ 当rate_unit为Mbps时,取值范围为0~2147483的整数,0表示不限速。
¡ 当rate_unit为Kbps时,取值范围为0~2147483647的整数,0表示不限速。
· tx_brustsize(policies子元素):发送流量突发尺寸,整数类型,取值范围为0~268435455的整数,单位为KBytes。如果配置了tx_averatelimit,则缺省值为tx_averatelimit/2,非必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有port,新增内容如下。
data "h3csdn_ports" "ports" {}
output "h3csdn_ports" {
value = data.h3csdn_ports.ports
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有虚拟端口资源。
(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查看已创建/修改的资源。
(1) 在创建或修改port的基础上,配置删除port。
(2) 运行terraform destroy开始删除。
· name:虚拟端口名称,字符串类型,非必填字段。
· network_id:虚拟端口所属网络ID,字符串类型,必填字段。
· mac_address:虚拟端口MAC地址,字符串类型,以fa:16:3e:bc:2d:51格式为例,非必填字段。
· port_securities:安全策略列表,列表类型,值为空时置为[],必填字段。
· port_security(port_securities子元素):安全组ID,字符串类型,当port_securities非空时必填。
· fixed_ips:虚拟端口IP地址,列表类型,必填字段。
· subnet_id(fixed_ips子元素):虚拟端口IP的子网,字符串类型,必填字段。
· ip_address(fixed_ips子元素):虚拟端口IP,字符串类型,必填字段。
· qos:虚拟端口绑定的QoS ID,字符串类型,非必填字段。
· port_security_enabled:端口安全开关,布尔类型,取值为true或者false,缺省值为false,非必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
· 涉及IPv6的IP地址或CIDR,必须为全大写缩略格式,例如bd:06D::/64应为BD:6D::/64。
(1) 修改main.tf文件,配置查询所有security group,新增内容如下。
data "h3csdn_securitygroups" "sgs" {}
output "h3csdn_securitygroups" {
value = data.h3csdn_securitygroups.sgs
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有安全组。
(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查看已创建/修改的资源。
(1) 在创建或修改安全组的基础上,删除安全组。
(2) 运行terraform destroy开始删除。
· name:安全组名称,字符串类型,必填字段。
· tenant_id:虚拟路由器所属租户ID,字符串类型,必填字段。
· empty_rule_action:空规则行为,字符串类型,取值为permit或deny,必填字段。
· ip_mac_binding:IP-MAC防欺骗,布尔类型,true表示打开,false表示关闭,必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有Security rule,新增内容如下。
data "h3csdn_securityrules" "sr" {}
output "h3csdn_securityrules" {
value = data.h3csdn_securityrules.sr
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有安全组规则。
(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查看已创建/修改的资源。
(1) 在创建或修改Security rule的基础上,删除Security rule。
(2) 运行terraform destroy开始删除。
· name:安全组规则名称,字符串类型,必填字段。
· portsecurity_id:安全策略ID,字符串类型,必填字段。
· remote_portsecurity_id:远端安全策略ID,字符串类型,非必填字段。
· ip_version:IP版本,字符串类型,取值为4和6,非必填字段。
· ipprefix:IP前缀,字符串类型,与方向相关,入方向时为源IP,出方向时为目的IP,非必填字段。
· direction:安全组规则生效方向,字符串类型,入方向为ingress,出方向为egress,必填字段。
· protocol:协议类型,字符串类型,取值为tcp、udp或icmp,非必填字段。
· tenant_id:安全组规则所属租户ID,字符串类型,必填字段。
· portrange_max:端口号范围上限,整数类型,端口范围为0~65535,仅当协议类型为tcp或udp时才可配置此参数,非必填字段。
· portrange_min:端口号范围下限,整数类型,端口范围为0~65535,仅当协议类型为tcp或udp时才可配置此参数,非必填字段。
· icmp_type:ICMP协议类型,整数类型,取值范围为0~255,无缺省值,仅当协议类型为icmp时才可配置此参数,非必填字段。
· icmp_code:ICMP协议代码,整数类型,取值范围为0~255,无缺省值,仅当协议类型为icmp时才可配置此参数,配置此参数时必须同时配置icmp协议类型,非必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有Floating IP,新增内容如下。
data "h3csdn_floatingips" "fip" {}
output "h3csdn_floatingips" {
value = data.h3csdn_floatingips.fip
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有安全组规则。
(1) 修改main.tf文件,配置创建或修改Floating IP,新增内容如下。
resource "h3csdn_floatingip" "fip1"{
floating_subnet_id = "6652867b-17c5-418e-b328-7bb61102b49f"
floating_network_id = "e05fdf0a-50ca-4d82-93ba-7d861d872cf7"
floating_ip_address = "191.0.1.23"
cloud_region_name = "region1"
port_id = "cf04de11-2751-472f-8067-ccb6408de623"
router_id = "2784b0aa-f6bd-4d88-a0a5-e64ce86842fe"
fixed_ip_address = "19.19.0.19"
qos_id = "816b94c5-a388-4da7-88d2-c5218d59c01f"
tenant_id = "d88d8406-a6bf-4d10-b42d-14052eacfaca"
type = "NORMAL"
exclude_ports = [
{
protocol = "TCP"
dest_portrange_min = "10"
dest_portrange_max= "30"
}
]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改Floating IP的基础上,删除Floating IP。
(2) 运行terraform destroy开始删除。
· port_id:浮动IP关联虚拟端口ID,字符串类型,非必填字段。
· app_cluster_vip_id:应用集群虚IP ID,字符串类型,非必填字段。
· fixed_ip_address:端口上和浮动IP关联的IP地址,字符串类型,非必填字段。
· qos_id:QoS策略ID,字符串类型,非必填字段。
· rx_averateLimit:入方向限速值,单位kbps,字符串类型,非必填字段。
· tx_averateLimit:出方向限速值,单位kbps,字符串类型,非必填字段。
· local_port_number:内网端口号,仅当浮动IP绑定vPort或应用集群虚IP时此参数有效,端口范围为1~65535,且网络协议类型必须是TCP或UDP,字符串类型,非必填字段。
· exclude_ports:浮动IP拒绝服务的端口,与原有浮动IP协议protocol互斥,值为空时置为[],字符串类型,必填字段。
· cloud_region_name:云区域名称,字符串类型,非必填字段。
· type:取值为NORMAL和INTERNAL_IP,缺省为NORMAL,且不支持修改,字符串类型,非必填字段。
· router_id:浮动IP关联的路由器ID,仅当浮动IP绑定vPort或应用集群虚IP时此参数有效,字符串类型,非必填字段。
· tenant_id:租户ID,字符串类型,非必填字段。
· floating_network_id:浮动IP关联的外部网络ID,与floating_subnet_id必选其一,字符串类型,非必填字段。
· floating_subnet_id:浮动IP关联的外部网络中的子网ID,与floating_network_id必选其一,字符串类型,非必填字段。
· floating_ip_address:外部网络上的浮动IP,字符串类型,非必填字段。
· protocol:外部网络上的浮动网络协议类型,网络协议类型现在仅支持TCP、UDP、ICMP,字符串类型,非必填字段。
· port_number:外部网络上的浮动网络端口号,无缺省值,端口范围为1~65535,且网络协议类型必须是TCP或UDP,字符串类型,非必填字段。
· exclude_ports:浮动IP拒绝服务的端口,各元素值参考如下。
¡ protocol:浮动IP拒绝服务的端口协议类型,协议类型仅支持TCP、UDP,字符串类型,必填字段。
¡ dest_portrange_min:浮动IP拒绝服务的端口最小值,端口范围为0~65535,字符串类型,必填字段。
¡ dest_portrange_max:浮动IP拒绝服务的端口最大值,端口范围为0~65535,字符串类型,必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有Fabric,新增内容如下。
data "h3csdn_fabrics" "fabrics" {}
output "h3csdn_fabrics" {
value = data.h3csdn_fabrics.fabrics
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有Fabric。
(1) 修改main.tf文件,配置创建或修改Fabric,新增内容如下。
resource "h3csdn_fabric" "fabric1" {
name = "terraform_fabric"
as_number = 101
service_network_type = "VXLAN"
multicast_ctrl = {"multicast_enable": true, "multicast_ipv6_enable": false}
epg_controller = false
default_fabric = false
mtu = 1450
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改Fabric的基础上,删除Fabric。
(2) 运行terraform destroy开始删除。
· name:Fabric的名称,字符串类型,非必填字段。
· as_number:本地AS号,整数类型,无缺省值,取值范围为1~4294967295的整数,如需使用Fabric连接和自动化上线功能,则必须配置该参数。非必填字段。
· service_network_type:业务网络类型,字符串类型,可取值为VLAN或VXLAN,缺省值为VXLAN,创建完成后不支持修改,非必填字段。
· mtu:Fabric的MTU值,整数类型,无缺省值,取值范围为68~9216的整数,非必填字段。
· epg_controller:EPG开关,布尔类型,取值为true或false,非必填字段。
· default_fabric:全局默认Fabric,布尔类型,取值为true或false,缺省值为false,全局仅能有一个默认Fabric,非必填字段。
· multicast_ctrl:组播网络开关,字典类型,值为空时置为{},必填字段。
· multicast_enable(multicast_ctrl子元素):IPv4组播网络开关,布尔类型,取值为true或false,缺省为false,true表示开启IPv4组播网络,false表示关闭IPv4组播网络,非必填字段。
· multicast_ipv6_enable(multicast_ctrl子元素):IPv6组播网络开关,布尔类型,取值为true或false,缺省为false。true表示开启IPv6组播网络,false表示关闭IPv6组播网络,非必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有IP地址池,新增内容如下。
data "h3csdn_ippools" "all"{}
output "h3csdn_ippools" {
value = data.h3csdn_ippools.all
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有IP地址池。
(1) 修改main.tf文件,配置创建或修改IP地址池,新增内容如下。
resource "h3csdn_ippool" "ippool" {
name = "sdffssssdsssold"
type = "NGFW_MANAGE"
needbind = false
ip_pool_list = [
{
start = "9.0.0.1"
end = "9.0.0.10"
nexthop = "9.0.0.1"
mask = 16
}
]
ipv6_pool_list = [
]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改IP地址池的基础上,删除IP地址池。
(2) 运行terraform destroy开始删除。
· name:IP地址池的名称,字符串类型,非必填字段。
· type:IP地址池的类型,字符串类型,可取值如下,必填字段。
¡ GENERAL_NETWORK:通用网络
¡ SEC_INTERNAL:安全内网
¡ SEC_EXTERNAL:安全外网
¡ TENANT_SUPPORT_FW:租户承载防火墙内网
¡ TENANT_SUPPORT_LB:租户承载负载分担内网
¡ SEC_INTERNAL_ROUTERLINK:虚拟路由器互通网络
¡ DATA_CENTER_INTERCONNECT:数据中心互联网络
¡ TENANT_SUPPORT:租户承载网络
¡ NGFW_MANAGE:虚拟管理网络
¡ PHY_MANAGE:物理管理网络
¡ PHY_VTEP:物理VTEP网络
¡ UNDERLAY_NETWORK:Underlay互通网络
¡ MULTICAST_NETWORK:组播网络
· cidr:网络地址,字符串类型,格式为IP地址/掩码长度,非必填字段。
· nexthop:网关,字符串类型,当IP地址池类型为SEC_EXTERNAL或PHY_MANAGE时,必须配置nexthop,其他类型不可配置nexthop,非必填字段。
· needbind:地址池绑定标识,布尔类型,取值为true或false,true表示IP地址池不是默认地址池,需要被绑定才可使用;false表示IP地址池是默认地址池,不需被绑定也可使用,非必填字段。
· ipv4_mask:IPv4掩码,字符串类型,仅当IP地址类型为租户承载网络或租户承载防火墙内网时可配置。取值范围为2~31。RBM防火墙组网时,要求取值范围为2~29,非必填字段。
· ipv6_mask:IPv6掩码,字符串类型,仅当IP地址类型为租户承载网络或租户承载防火墙内网时可配置。取值范围为1~127。RBM防火墙组网时,要求取值范围为1~125,非必填字段。
· ip_pool_list:IPv4地址池列表,列表(字典)类型,值为空时置为[],必填字段。
· ipv6_pool_list:IPv6地址池列表,列表(字典)类型,值为空时置为[],必填字段。
· start(ip_pool_list子元素):网段地址的起始地址,字符串类型,点分十进制格式,ip_pool_list非空时为必填字段。
· end(ip_pool_list子元素):网段地址的结束地址,字符串类型,点分十进制格式,ip_pool_list非空时为必填字段。
· mask(ip_pool_list子元素):掩码,整数类型,虚拟管理网类型和物理管理网类型的地址池IPv4的地址段如果有CIDR可不配置。其他类型的地址池不可配置。IPv4网段的取值范围为1~30,非必填字段。
· nexthop(ip_pool_list子元素):下一跳地址,字符串类型,IPv4的地址段如果地址池有nexthop可不配置,其他类型的地址池不可配置,非必填字段。
· start(ipv6_pool_list子元素):网段地址的起始地址,字符串类型,冒分十六进制格式,ipv6_pool_list非空时为必填字段。
· end(ipv6_pool_list子元素):网段地址的结束地址,字符串类型,冒分十六进制格式,ipv6_pool_list非空时为必填字段。
· mask(ipv6_pool_list子元素):掩码,整数类型,虚拟管理网类型的地址池IPv6地址段必选,其他类型的地址池不可配置。IPv6网段的取值范围为1~126,非必填字段。
· nexthop(ipv6_pool_list子元素):下一跳地址,字符串类型,虚拟管理网类型的地址池IPv6地址段必选,其他类型的地址池不可配置,非必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有VLAN池,新增内容如下。
data "h3csdn_vlanpools" "all"{}
output "h3csdn_vlanpools" {
value = data.h3csdn_vlanpools.all
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有VLAN池。
(1) 修改main.tf文件,配置创建或修改VLAN池,新增内容如下。
resource "h3csdn_vlanpool" "vlanpool" {
name = "tlanpool"
type = "VPC_INTERCONNECT_VLAN"
needbind = false
range_list = [
{
start = 1
end = 9
},
{
start = 11
end = 20
}
]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改VLAN池的基础上,删除VLAN池。
(2) 运行terraform destroy开始删除。
· name:VLAN池的名称,字符串类型,非必填字段。
· type:VLAN池的类型,字符串类型,取值如下,缺省为TENANT_VLAN,非必填字段。
¡ TENANT_VLAN:表示租户承载网络类型VLAN池。
¡ VPC_INTERCONNECT_VLAN:表示虚拟路由器互通网络类型VLAN池。
¡ TENANT_ACCESS_VLAN:表示租户接入网络类型VLAN池,控制组件纳管vCenter为端口组分配VLAN。
· needbind:VLAN池绑定标识,布尔类型,取值为true表示VLAN池不是默认VLAN池,需要被绑定才可使用,取值为false表示VLAN池是默认VLAN池,不需被绑定也可使用,非必填字段。
· range_list:VLAN池范围列表,列表(字典)类型,必填字段。
· start(range_list子元素):VLAN池的起始值,整数类型,取值范围为1~4094,range_list非空时为必填字段。
· end(range_list子元素):VLAN池的终止值,整数类型,取值范围为1~4094,终止VLAN ID值必须大于等于起始VLAN ID值,range_list非空时为必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有VXLAN池,新增内容如下。
data "h3csdn_vxlanpools" "vxlanpools" {}
output "h3csdn_vxlanpools" {
value = data.h3csdn_vxlanpools.vxlanpools
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有VXLAN池。
(1) 修改main.tf文件,配置创建或修改VXLAN池,新增内容如下。
resource "h3csdn_vxlanpool" "vxlanpool1" {
name = "terraform_vxlanpool"
range_list = [{start:80000,end:90000}]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改VXLAN池的基础上,删除VXLAN池。
(2) 运行terraform destroy开始删除。
· name:VXLAN池的名称,字符串类型,必填字段。
· range_list:VXLAN池的范围列表,列表(字典)类型,值为空时置为[],必填字段。
· start(range_list子元素):VXLAN池的起始值,整数类型,取值范围为1~16777215,range_list非空时为必填字段。
· end(range_list子元素):VXLAN池的终止值,整数类型,取值范围为1~16777215,且结束值必须大于等于起始值,range_list非空时为必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有VLAN-VXLAN映射表,新增内容如下。
data "h3csdn_vlanvxlanmaps" "all"{}
output "h3csdn_vlanvxlanmaps" {
value = data.h3csdn_vlanvxlanmaps.all
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有VLAN-VXLAN映射表。
(1) 修改main.tf文件,配置创建或修改VLAN-VXLAN映射表,新增内容如下。
resource "h3csdn_vlanvxlanmap" "vlanvxlanmap" {
name = "tvlanmap2"
description = "kakaaa"
vlan_map_list = [
{
start_vlan = 100
end_vlan = 105
start_vxlan = 110
end_vxlan = 110
access_mode = "VLAN"
name = "tmao"
},
{
start_vlan = 200
end_vlan = 205
start_vxlan = 210
end_vxlan = 210
access_mode = "Ethernet"
name = "tmaoa"
}
]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改VLAN/QinQ-VXLAN映射表的基础上,删除VLAN-VXLAN映射表。
(2) 运行terraform destroy开始删除。
· name:映射表名称,字符串类型,必填字段。
· description:映射表描述,字符串类型,非必填字段。
· vlan_map_list:映射表的映射关系列表,列表(字典)类型,值为空时置为[],必填字段。
· name(vlan_map_list子元素):映射关系名称,字符串类型,非必填字段。
· start_vlan(vlan_map_list子元素):起始VLAN ID,整数类型,取值范围为1~4094,vlan_map_list非空时为必填字段。
· end_vlan(vlan_map_list子元素):结束VLAN ID,整数类型,取值范围为1~4094,end_vlan值必须大于等于start_vlan值,vlan_map_list非空时为必填字段。
· start_vxlan(vlan_map_list子元素):起始VXLAN ID,整数类型,取值范围为1~16777215,vlan_map_list非空时为必填字段。
· end_vxlan(vlan_map_list子元素):结束VXLAN ID,整数类型,取值范围为1~16777215,非必填字段。
· access_mode(vlan_map_list子元素):映射对应AC的接入模式,字符串类型,可取值为VLAN或Ethernet,非必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有QinQ映射表,新增内容如下。
data "h3csdn_qinqmaps" "all"{}
output "h3csdn_qinqmaps" {
value = data.h3csdn_qinqmaps.all
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有QinQ映射表。
(1) 修改main.tf文件,配置创建或修改QinQ映射表,新增内容如下。
resource "h3csdn_qinqmap" "qinqmap" {
name = "tqinqmap3"
description = "kakaa"
vlan_map_list = [
{
start_vlan = 200
end_vlan = 205
start_vxlan = 210
end_vxlan = 210
start_cvlan = 220
end_cvlan = 225
access_mode = "Ethernet"
name = "taoa"
exact_match = true
rewrite_rules = [
{
rewrite_direction = "inbound",
rewrite_type = "NEST",
symmetric = false,
rewrite_cvlan_id = 1,
rewrite_svlan_id = 22
},
{
rewrite_direction = "outbound",
rewrite_type = "NEST",
symmetric = false,
rewrite_cvlan_id = 3,
rewrite_svlan_id = 33
}
]
}
]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改QinQ映射表的基础上,删除QinQ映射表。
(2) 运行terraform destroy开始删除。
· name:映射表名称,字符串类型,必填字段。
· description:映射表描述,字符串类型,非必填字段。
· vlan_map_list:映射表的映射关系列表,列表(字典)类型,值为空时置为[],必填字段。
· name(vlan_map_list子元素):映射关系名称,字符串类型,非必填字段。
· start_vlan(vlan_map_list子元素):起始VLAN ID,整数类型,取值范围为1~4094,vlan_map_list非空时为必填字段。
· end_vlan(vlan_map_list子元素):结束VLAN ID,整数类型,取值范围为1~4094,end_vlan值必须大于等于start_vlan值,vlan_map_list非空时为必填字段。
· start_vxlan(vlan_map_list子元素):起始VXLAN ID,整数类型,取值范围为1~16777215,vlan_map_list非空时为必填字段。
· end_vxlan(vlan_map_list子元素):结束VXLAN ID,整数类型,取值范围为1~16777215,非必填字段。
· access_mode(vlan_map_list子元素):映射对应AC的接入模式,字符串类型,可取值为VLAN或Ethernet,非必填字段。
· start_cvlan(vlan_map_list子元素):QinQ映射表中某映射关系的内层起始VLAN ID,整数类型,取值范围为1~4094,非必填字段。
· end_cvlan(vlan_map_list子元素):QinQ映射表中某映射关系的内层结束VLAN ID,整数类型,取值范围为1~4094,end_cvlan值必须大于等于start_cvlan值,非必填字段。
· exact_match(vlan_map_list子元素):精确匹配模式,布尔类型,取值为true或false,vlan_map_list非空时为必填字段。
· rewrite_rules(vlan_map_list子元素):报文VLAN标签处理规则列表,列表(字典)类型,非必填字段。
· rewrite_direction(rewrite_rules子元素):标签处理规则应用的报文方向,字符串类型,可取值为inbound或outbound,rewrite_rules非空时为必填字段。
· rewrite_type(rewrite_rules子元素):报文标签处理类型,字符串类型,可取值为NEST、REMARK_ONE、REMARK_TWO、STRIP_SVLAN、STRIP_CVLAN和STRIP_BOTH,rewrite_rules非空时为必填字段。
· symmetric(rewrite_rules子元素):出方向报文进行对称的反向标签操作,布尔类型,true表示进行反向标签操作,false表示不进行反向标签操作,非必填字段。
· rewrite_svlan_id(rewrite_rules子元素):根据标签处理规则修改后的外层VLAN ID,整数类型,取值范围为1~4094,非必填字段。
· rewrite_cvlan_id(rewrite_rules子元素):根据标签处理规则修改后的内层VLAN ID,整数类型,取值范围为1~4094,非必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有VLAN/QinQ-VXLAN映射表设备绑定资源,新增内容如下。
data "h3csdn_vlandomainbindings" "all"{}
output "h3csdn_vlandomainbindings" {
value = data.h3csdn_vlandomainbindings.all
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有VLAN-VXLAN映射表设备绑定资源。
(1) 修改main.tf文件,配置创建或修改VLAN-VXLAN映射表设备绑定资源,新增内容如下。
resource "h3csdn_vlandomainbinding" "vlandomainbind" {
vlan_domain_id = h3csdn_vlanvxlanmap.vlanvxlanmap.id
bind_l2gw_list = ["4fa7c188-058e-4db2-82e0-dbf71a167d9b","69272f33-73e3-45a4-8e86-b00d47189fcc"]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改VLAN-VXLAN映射表设备绑定资源的基础上,删除VLAN-VXLAN映射表设备绑定资源。
(2) 运行terraform destroy开始删除。
· vlan_domain_id:映射表ID,字符串类型,必填字段。
· bind_l2gw_list:与映射表关联的设备的ID,列表类型,每个数组元素为一个数据结构,数据结构包含l2gw_id、l2gw_name,l2gw_id必选,l2gw_name不需要传入,必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有VLAN/QinQ-VXLAN映射表接口绑定资源,新增内容如下。
data "h3csdn_portvlandomainbindings" "all"{}
output "h3csdn_portvlandomainbindings" {
value = data.h3csdn_portvlandomainbindings.all
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有VLAN/QinQ-VXLAN映射表接口绑定资源。
(1) 修改main.tf文件,配置创建或修改VLAN/QinQ-VXLAN映射表接口绑定资源,新增内容如下。
resource "h3csdn_portvlandomainbinding" "portvlandomainbind" {
vlan_domain_id = h3csdn_vlanvxlanmap.vlanvxlanmap.id
bind_port_list = [
{device_id = "bf7115e4-4f58-4569-887c-3c8ca752247a"
port_name = "Twenty-FiveGigE1/0/1"},
{device_id = "69272f33-73e3-45a4-8e86-b00d47189fcc"
port_name = "Twenty-FiveGigE1/0/1"}
]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改VLAN/QinQ-VXLAN映射表接口绑定资源的基础上,删除VLAN/QinQ-VXLAN映射表接口绑定资源。
(2) 运行terraform destroy开始删除。
· vlan_domain_id:映射表ID,字符串类型,必填字段。
· bind_port_list:与映射表关联的设备接口列表,列表(字典)类型,必填字段。
· device_id(bind_port_list子元素):与映射表绑定的接口的设备UUID,字符串类型,必填字段。
· port_name(bind_port_list子元素):与映射表绑定的接口名称,字符串类型,必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有PVLAN,新增内容如下。
data "h3csdn_pvlans" "pvlans" {}
output "h3csdn_pvlans"{
value = data.h3csdn_pvlans.pvlans
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有PVLAN。
(1) 修改main.tf文件,配置创建或修改PVLAN,新增内容如下。
resource "h3csdn_pvlan" "pvlan1" {
name = "terraform_pvlan"
description = "Terraform pvlan"
primary_vlan_id = 200
primary_network_id = "089ae826-4d9f-41ed-89d9-5ead6b55f4b0"
secondary_vlan_map_list = [{type="ISOLATED",vlan_id=201}]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改PVLAN的基础上,删除PVLAN。
(2) 运行terraform destroy开始删除。
· name:PVLAN的名称,字符串类型,必填字段。
· description:PVLAN的描述,字符串类型,非必填字段。
· primary_vlan_id:PVLAN的主VLAN ID,整数类型,取值范围为1~4094,创建完成后不支持修改,必填字段。
· primary_network_id:PVLAN对应的虚拟链路层网络ID,字符串类型,创建完成后不支持修改,必填字段。
· secondary_vlan_map_list:PVLAN对应的从VLAN列表,列表(字典)类型,值为空时置为[],必填字段。
· type(secondary_vlan_map_list子元素):Secondary VLAN类型,字符串类型,取值为ISOLATED,secondary_vlan_map_list非空时为必填字段。
· vlan_id(secondary_vlan_map_list子元素):从VLAN的VLAN ID,整数类型,取值范围为1~4094,secondary_vlan_map_list非空时为必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有设备组,新增内容如下。
data "h3csdn_groups" "groups" {}
output "h3csdn_groups"{
value = data.h3csdn_groups.groups
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有设备组。
(1) 修改main.tf文件,配置创建或修改设备组,新增内容如下。
resource "h3csdn_group" "group1" {
name = "terraform_group_update"
fabric_id = "059554f0-8197-4d47-99a0-079308b5af00"
network_type = "GROUP_CGSR"
description = "Terraform Group Update"
vtep_ip = "12.12.3.1"
mac = "3c:8c:65:4e:dd:71"
is_remote_group = false
export_gateway = true
dc_interconnect = false
dc_connect = false
service_leaf = false
ha_type = "M-LAG"
subnet_gateway_enable = true
ext_network_routing_backup_enable = "CLOSE"
third_fw_status = "CLOSE"
fw_access_mode = "DIRECT"
connect_type = "VLAN_CROSS"
is_bind_ippool = false
is_bind_vlanrange = false
bind_ippools = []
bind_vlanranges = []
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改设备组的基础上,删除设备组。
(2) 运行terraform destroy开始删除。
· name:设备组名称,字符串类型,必填字段。
· fabric_id:设备组所属Fabric ID,字符串类型,必填字段。
· network_type:设备组的工作模式,字符串类型,必填字段。如果设备组已经分给租户使用,设备组的工作模式不能修改。可选值如下:
¡ GROUP_SELF:独立设备组,不绑定网关服务设备,设备组直接作为网关使用。
¡ GROUP_CGSR:服务设备组。
· description:设备组描述,字符串类型,非必填字段。
· vtep_ip:IPv4的VTEP地址,字符串类型,点分十进制格式,非必填字段。
· vtep_ip6:IPv6的VTEP地址,字符串类型,冒分十六进制格式,非必填字段。
· mac:设备组MAC地址,字符串类型,不支持广播、多播、全零和网元管理保留MAC地址,非必填字段。
· is_remote_group:远端设备组,布尔类型,取值为true或false,true表示远端设备组,false表示非远端设备组,非必填字段。
· export_gateway:网络位置为出口网关,布尔类型,取值为true或false,true表示网络位置为出口网关,流量的出口是网关,false表示网络位置非出口网关,非必填字段。
· dc_interconnect:网络位置支持Fabric间互通,布尔类型,取值为true或false,仅支持由false改为true,非必填字段。
¡ true表示网络位置支持Fabric间互通,设备组中的边界设备能够在Fabric间互通。
¡ false表示网络位置不支持Fabric间互通。
· dc_connect:网络位置为DC间互联,布尔类型,取值为true或false,false表示网络位置非DC间互联,true表示网络位置为DC间互联。该参数只允许由false改为true,非必填字段。
¡ 当设备组的工作模式为独立设备组时,缺省值为false。
¡ 当设备组的工作模式为服务设备组时,缺省值为true。此种场景下,出口网关只允许绑定一个设备组。
· service_leaf:网络位置为Service Leaf,布尔类型,取值为true或false,非必填字段。
¡ true表示网络位置为Service Leaf,使用Service Leaf设备组旁挂防火墙的组网流量模型。
¡ false表示网络位置非Service Leaf。
· ha_type:HA部署模式,字符串类型,取值为IRF(表示设备组中仅支持一台设备转发流量)、Multi-Active(表示设备组中支持多台设备同时转发流量)或M-LAG(表示设备组中支持两台设备形成M-LAG模式进行转发流量),非必填字段。
· subnet_gateway_enable:子网网关,布尔类型,取值为true或false,当电信云场景为开启时,缺省值为true,该参数不允许修改;当电信云场景为关闭时,缺省值为false,该参数允许修改。true表示设备组中边界设备会下发子网网关配置;false表示设备组中边界设备不会下发子网网关配置非必填字段。
· ext_network_routing_backup_enable:M-LAG路由备份,字符串类型,取值为OPEN或CLOSE,OPEN表示允许下发路由重生成配置;CLOSE表示不允许下发路由重生成配置,非必填字段。
· third_fw_status:第三方防火墙,字符串类型,取值为OPEN或CLOSE,OPEN表示支持对接第三方防火墙,CLOSE表示不支持对接第三方防火墙,非必填字段。
· fw_access_mode:防火墙接入模式,字符串类型,取值为DIRECT(防火墙接入模式为直连)、HAIRPIN(防火墙接入模式为旁挂)或CLOSE(防火墙接入模式为关闭),非必填字段。
· connect_type:连接方式,字符串类型,取值为VLAN(VLAN同网段)或VLAN_CROSS(VLAN跨网段),network_type类型为GROUP_CGSR时该字段有效,非必填字段。
· is_bind_ippool:设备组绑定地址池标识符,布尔类型,取值为true或false,true表示设备组不使用默认地址池,需再绑定地址池;false表示设备组使用默认地址池,不需再绑定地址池,非必填字段。
· is_bind_vlanrange:设备组绑定VLAN池标识符,布尔类型,取值为true或false,true表示设备组不使用默认VLAN池,需再绑定VLAN池;false表示设备组使用默认VLAN池,不需再绑定VLAN池,非必填字段。
· bind_ippools:设备组绑定的地址池列表,列表(字典)类型,值为空时置为[],必填字段。
· bind_vlanranges:设备组绑定的VLAN池列表,列表(字典)类型,值为空时置为[],必填字段。
· ippool_id(bind_ippools子元素):地址池ID,字符串类型,当bind_ippools非空时为必填字段。
· ippool_name(bind_ippools子元素):地址池名称,字符串类型,非必填字段。
· vlanrange_id(bind_vlanranges子元素):VLAN池ID,字符串类型,当bind_vlanranges非空时为必填字段。
· vlanrange_name(bind_vlanranges子元素):VLAN池名称,字符串类型,非必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有设备组成员,新增内容如下。
data "h3csdn_devices" "all"{}
output "h3csdn_devices" {
value = data.h3csdn_devices.all
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有设备组成员。
(1) 修改main.tf文件,配置创建设备组成员,新增内容如下。
resource "h3csdn_device" "device" {
id = "4fa7c188-058e-4db2-82e0-dbf71a167d9b"
group_id = "9bc33f58-1d5a-4ca6-b268-7c370485e3c7"
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建。
(4) 运行terraform show查看已创建的资源。
(1) 在创建设备组成员的基础上,删除设备组成员。
(2) 运行terraform destroy开始删除。
· id:设备组成员ID,字符串类型,必填字段。
· group_id:设备组的ID,字符串类型,必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有下行口资源,新增内容如下。
data "h3csdn_downlinkports" "all"{}
output "h3csdn_downlinkports" {
value = data.h3csdn_downlinkports.all
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有下行口资源。
(1) 修改main.tf文件,配置创建下行口资源,新增内容如下。
resource "h3csdn_downlinkport" "downlinkport" {
device_id = "69272f33-73e3-45a4-8e86-b00d47189fcc"
ports = [
{port_name = "Twenty-FiveGigE1/0/7"},
{port_name = "Twenty-FiveGigE1/0/8"}
]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建。
(4) 运行terraform show查看已创建的资源。
(1) 在创建下行口资源的基础上,删除下行口资源。
(2) 运行terraform destroy开始删除。
· device_id:配置下行口的设备UUID,字符串类型,必填字段。
· ports:接口列表,列表(字典)类型,必填字段。
· port_name(ports子元素):接口名称,字符串类型,必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有PVID,新增内容如下。
data "h3csdn_pvids" "all"{}
output "h3csdn_pvids" {
value = data.h3csdn_pvids.all
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有PVID。
(1) 修改main.tf文件,配置创建PVID,新增内容如下。
resource "h3csdn_pvid" "pvid" {
port_pvids = [
{device_id = "bf7115e4-4f58-4569-887c-3c8ca752247a"
port_name = "Twenty-FiveGigE1/0/1"
pvid = 100},
{device_id = "69272f33-73e3-45a4-8e86-b00d47189fcc"
port_name = "Twenty-FiveGigE1/0/1"
pvid = 30}
]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建。
(4) 运行terraform show查看已创建的资源。
(1) 在创建PVID的基础上,删除PVID。
(2) 运行terraform destroy开始删除。
· port_pvids:设备端口列表,列表(字典)类型,必填字段。
· device_id(port_pvids子元素):配置PVID的设备UUID,字符串类型,必填字段。
· port_name(port_pvids子元素):接口名称,字符串类型,必填字段。
· pvid(port_pvids子元素):接口PVID,整数类型,取值范围为1~4094的整数,必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有出口网关,新增内容如下。
data "h3csdn_gateways" "gateways" {}
output "h3csdn_gateways"{
value = data.h3csdn_gateways.gateways
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有出口网关。
(1) 修改main.tf文件,配置创建或修改出口网关,新增内容如下。
resource "h3csdn_gateway" "gateway1" {
name = "terraform_gateway"
description = "Terraform gateway"
type = "GROUP"
default_gateway = true
predefine = true
track = 101
member_list = ["03f30e06-f3e6-4250-b636-f0fb7c260753"]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改出口网关的基础上,删除出口网关。
(2) 运行terraform destroy开始删除。
· name:出口网关名称,字符串类型,非必填字段。
· description:出口网关描述,字符串类型,非必填字段。
· type:出口网关类型,字符串类型,取值为GROUP(组合类型的出口网关),不支持修改,必填字段。
· default_gateway:是否为默认网关,布尔类型,取值为true或false,默认为true,非必填字段。
· predefine:外网VRF配置下发方式,布尔类型,取值为true或false,true表示外网VRF配置需要手动在设备上自定义预配置下发;false表示外网VRF配置由控制组件按规则自动下发。缺省值为false,非必填字段。
· track:配置出口网关NQA探测联动的Track项序号,整数类型,取值范围为1~1024,非必填字段。
· member_list:出口网关成员列表,列表类型,当出口网关类型为GROUP时最多可指定2个成员,非必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有出口网关成员,新增内容如下。
data "h3csdn_gwmembers" "gwmembers" {}
output "h3csdn_gwmembers"{
value = data.h3csdn_gwmembers.gwmembers
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有出口网关成员。
(1) 修改main.tf文件,配置创建或修改出口网关成员,新增内容如下。
resource "h3csdn_gwmember" "gwmember1" {
name = "terraform_gw_member"
family = "PHY_DEV"
priority = 17
group_id = "4d3007e9-19aa-40f8-96fc-e4b2037e020e"
vpn_instance = "terraform_vpn_instance"
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改出口网关成员的基础上,删除出口网关成员。
(2) 运行terraform destroy开始删除。
· name:出口网关成员名称,字符串类型,非必填字段。
· family:资源类型,字符串类型,取值可为PHY_DEV(表示物理设备)、NFV(表示虚拟设备)或NGFW(表示下一代防火墙设备),必填字段。
· priority:成员优先级,整数类型,取值范围为0~99,数值越大优先级越高,仅是family为PHY_DEV时可指定,缺省值为0,非必填字段。
· group_id:网关组ID,字符串类型,必填字段。
· vpn_instance:VRF名称,字符串类型,非必填字段。
· 必填字段,表示资源中必须填写此字段和值。
· 非必填字段,表示资源中可不填写此字段,如果此字段在控制组件中存在缺省值会以控制组件的缺省值处理。
(1) 修改main.tf文件,配置查询所有防火墙地址对象组,新增内容如下。
data "h3csdsec_firewall_address_groups" "addrGroupAll" {}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有地址对象组资源。
(1) 修改main.tf文件,配置创建或修改防火墙地址对象组,新增内容如下。
resource "h3csdsec_firewall_address_group" "fwAddressGroup1" {
name = "fwAddressGroup1"
tenant_id = h3csdn_tenant.tenantfromterraform1.id
audited = true
ip_version = 4
objects = [{
address = "9.3.4.0/24"
},
{
address = "3.3.4.5"
},
{
address = "20.3.4.5"
},
{
address = "1.3.4.5"
},
{
address = "7.3.4.5"
},
{
address = "10.3.4.5"
}
]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
涉及IPv6的IP地址或CIDR,必须为全大写缩略格式,例如bd:06D::/64应为BD:6D::/64。
(1) 在创建或修改防火墙地址对象组的基础上,配置删除地址对象组。
(2) 运行terraform destroy开始删除。
· id:地址对象组ID,只读,由控制组件生成。
· name:地址对象组名称,字符串类型,必填字段。
· ip_version:IP协议版本,取值4或6,必填字段。
· audited:审计状态,只有已审计的地址对象组才生效,取值true或false,必填字段。
· tenant_id:租户ID,字符串类型,必填字段。
· objects:地址对象列表,object类型,必填字段。
Object类型参数说明:
¡ id:地址对象ID,只读,由控制组件自动生成。
¡ address:IPv4或IPv6地址、CIDR或以‘-’分隔的地址段,必填字段。
(1) 修改main.tf文件,配置查询所有防火墙服务对象组,新增内容如下。
data "h3csdsec_firewall_service_groups" "svcGroupAll" {}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有服务对象组资源。
(1) 修改main.tf文件,配置创建或修改防火墙服务对象组,新增内容如下。
resource "h3csdsec_firewall_service_group" "fwServiceGroup1" {
name = "fwServiceGroup1"
tenant_id = h3csdn_tenant.tenantfromterraform1.id
audited = true
objects = [
{
protocol = "tcp"
},
{
protocol = "udp"
destination_port = "8080"
source_port = "1-65535"
}
]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改防火墙服务对象组的基础上,配置删除服务对象组。
(2) 运行terraform destroy开始删除。
· id:服务对象组ID,只读,由控制组件生成。
· name:服务对象组名称,字符串类型,必填字段。
· audited:审计状态,只有已审计的服务对象组才生效,取值true或false,必填字段。
· tenant_id:租户ID,字符串类型,必填字段。
· objects:服务对象列表,object类型,必填字段。
Object类型参数说明:
¡ id:服务对象ID,只读,由控制组件自动生成。
¡ protocol:协议,取值icmp、tcp、udp、icmpv6、sctp,必填字段。
¡ destination_port:目的端口,取值为端口号或以‘-’分隔的端口范围,非必填字段。
¡ source_port:源端口,取值为端口号或以‘-’分隔的端口范围,非必填字段。
(1) 修改main.tf文件,配置查询所有防火墙规则,新增内容如下。
data "h3csdsec_firewall_rules" "firewallRuleAll" {}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有防火墙规则资源。
(1) 修改main.tf文件,配置创建或修改防火墙规则,新增内容如下。
resource "h3csdsec_firewall_rule" "v4rule1" {
name = "v4rule1"
tenant_id = h3csdn_tenant.tenantfromterraform1.id
ip_version = 4
action = "allow"
protocol = "tcp"
source_port = "100:200"
destination_port = "8000:9000"
source_address = "201.0.0.2-201.0.0.100"
destination_address = "100.0.0.1-100.0.0.100"
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
· 更新规则会导致控制组件上所属策略的audited状态自动变为false,需要再次执行terraform将控制组件策略audited状态更新为与Terraform配置一致。
· 涉及IPv6的IP地址或CIDR,必须为全大写缩略格式,例如bd:06D::/64应为BD:6D::/64。
(1) 在创建或修改防火墙规则的基础上,配置删除规则。
(2) 运行terraform destroy开始删除。
· id:规则ID,只读,由控制组件生成。
· name:规则名称,字符串类型,必填字段。
· ip_version:IP协议版本,取值4或6,必填字段。
· tenant_id:租户ID,字符串类型,必填字段。
· action:动作,取值deny或allow,必填字段。
· destination_address:目的地址,取值为IPv4或IPv6地址、CIDR或以‘-’分隔的地址段,非必填字段。
· destination_address_group:目的地址对象组ID,字符串类型,非必填字段。
· destination_port:目的端口,取值为端口号或以‘:’分隔的端口范围,非必填字段。
· protocol:协议,取值有icmp、tcp、udp、icmpv6、sctp,非必填字段。
· service_group:服务对象组ID,字符串类型,非必填字段。
· source_address:目的地址,取值为IPv4或IPv6地址、CIDR或以‘-’分隔的地址段,非必填字段。
· source_address_group:目的地址对象组ID,字符串类型,非必填字段。
· source_port:目的端口,取值为端口号或以‘:’分隔的端口范围,非必填字段。
(1) 修改main.tf文件,配置查询所有防火墙策略,新增内容如下。
data "h3csdsec_firewall_policies" "firewallPolicyAll" {}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有防火墙策略资源。
(1) 修改main.tf文件,配置创建或修改防火墙策略,新增内容如下。
resource "h3csdsec_firewall_policy" "forwardPolicy1" {
name = "forwardPolicy1"
tenant_id = h3csdn_tenant.tenantfromterraform1.id
audited = true
rules = [
h3csdsec_firewall_rule.v4rule1.id,
h3csdsec_firewall_rule.v4rule2.id,
h3csdsec_firewall_rule.v6rule1.id,
h3csdsec_firewall_rule.v6rule2.id,
h3csdsec_firewall_rule.deafult_rule_v4.id,
h3csdsec_firewall_rule.deafult_rule_v6.id
]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
(1) 在创建或修改防火墙策略的基础上,配置删除策略。
(2) 运行terraform destroy开始删除。
· id:策略ID,只读,由控制组件生成。
· name:策略名称,字符串类型,必填字段。
· tenant_id:租户ID,字符串类型,必填字段。
· audited:审计状态,只有已审计的防火墙策略才生效,取值true或false,必填字段。
· rules:防火墙策略中的规则ID列表,必填字段。
(1) 修改main.tf文件,配置查询所有防火墙服务实例,新增内容如下。
data "h3csdsec_firewalls" "firewallAll" {}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply查看所有防火墙服务实例。
(1) 修改main.tf文件,配置创建或修改防火墙服务实例,新增内容如下。
resource "h3csdsec_firewall" "fw1" {
name = "fw1"
tenant_id = h3csdn_tenant.tenantfromterraform1.id
forward_policy_id = h3csdsec_firewall_policy.forwardPolicy1.id
backward_policy_id = h3csdsec_firewall_policy.backwardPolicy1.id
routers = [h3csdn_router.rt1.id]
}
(2) 运行terraform plan查看资源。
(3) 确定资源无误后,运行terraform apply开始创建/修改。
(4) 运行terraform show查看已创建/修改的资源。
同时删除防火墙服务实例、地址对象组或服务对象组时,概率出现防火墙设备上残留多余的对象组配置。建议通过Terraform删除防火墙配置后,在控制组件上检查控制组件与虚拟设备的配置同步状态。
(1) 在创建或修改防火墙服务实例的基础上,配置删除实例。
(2) 运行terraform destroy开始删除。
· id:服务实例ID,只读,由控制组件生成。
· name:服务实例名称,字符串类型,必填字段。
· tenant_id:租户ID,字符串类型,必填字段。
· forward_policy_id:入方向防火墙策略ID,非必填字段。
· backward_policy_id:出方向防火墙策略ID,非必填字段。
· routers:防火墙服务实例关联的虚拟路由器ID列表,必填字段。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!