{
    "terraform": {
        "required_providers": [
            {
                "huaweicloud": {
                    "source": "huawei.com/provider/huaweicloud",
                    "version": "1.46.0"
                }
            }
        ]
    },
    "provider": {
        "huaweicloud": {
            "cloud": "myhuaweicloud.com",
            "endpoints": {
                "iam": "iam.cn-north-4.myhuaweicloud.com",
                "dns": "dns.cn-north-4.myhuaweicloud.com"
            },
            "insecure": true,
            "region": "cn-north-4",
            "auth_url": "https://iam.cn-north-4.myhuaweicloud.com/v3"
        }
    },
    "variable": {
        "vpc_name": {
            "default": "deploying-and-managing-kubernetes-clusters_demo",
            "description": "虚拟私有云名称,该模板新建VPC,不允许重名。取值范围:1-57个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点)。默认为deploying-and-managing-kubernetes-clusters_demo",
            "type": "string",
            "nullable": "false"
        },
        "secgroup_name": {
            "default": "deploying-and-managing-kubernetes-clusters_demo",
            "description": "安全组名称,该模板新建安全组,安全组规则请参考部署指南进行配置。取值范围:1-64个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点)。默认为deploying-and-managing-kubernetes-clusters_demo",
            "type": "string",
            "nullable": "false"
        },
        "ecs_name": {
            "default": "deploying-and-managing-kubernetes-clusters_demo",
            "description": "弹性云服务器名称,不允许重名。取值范围:1-60个字符,支持字母、数字、中文、下划线(_)、中划线(-)、英文句号(.)。默认为deploying-and-managing-kubernetes-clusters_demo",
            "type": "string",
            "nullable": "false"
        },
        "ecs_flavor": {
            "default": "c7.large.2",
            "description": "弹性云服务器规格,请使用2vCPUs|4GiB及其以上规格。默认c7.large.2 | 2vCPUs | 4GiB。",
            "type": "string",
            "nullable": "false",
            "validation": {
                "condition": "${length(regexall(\"^([a-z][a-z0-9]{0,3}\\\\.)(small\\\\.|medium\\\\.|(x||[1-9][0-9]{0,1}x)large\\\\.)[1-9][0-9]{0,1}$\",var.ecs_flavor))>0}",
                "error_message": "Invalid input. Please re-enter."
            }
        },
        "ecs_password": {
            "default": "",
            "description": "弹性云服务器初始密码,创建完成后,请参考部署指南登录ECS控制台修改密码。取值范围:长度为8-26位,密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种,密码不能包含用户名或用户名的逆序。管理员帐户为root。",
            "type": "string",
            "nullable": "false",
            "sensitive": true
        },
        "system_disk_size": {
            "default": 200,
            "description": "指定系统盘大小,以GB为单位,取值范围为40~1024,不支持缩盘。默认为200",
            "type": "number",
            "nullable": "false",
            "validation": {
                "condition": "${length(regexall(\"^([4-9]\\\\d|[1-9]\\\\d{2}|10[0-1][0-9]|102[0-4])$\",var.system_disk_size))>0}",
                "error_message": "Invalid input, please re-enter."
            }
        },
        "charging_mode": {
            "default": "postPaid",
            "description": "计费模式,默认自动扣费,取值为prePaid(包年包月)或postPaid(按需计费),默认postPaid。",
            "type": "string",
            "nullable": "false",
            "validation": {
                "condition": "${contains([\"postPaid\",\"prePaid\"], var.charging_mode)}",
                "error_message": "Invalid input, please re-enter."
            }
        },
        "charging_unit": {
            "default": "month",
            "description": "包年包月。有效值为“year”或“month”。当charging_mode(计费模式)为prePaid时,此选项为必填项。默认为month。",
            "type": "string",
            "nullable": "false",
            "validation": {
                "condition": "${contains([\"month\",\"year\"], var.charging_unit)}",
                "error_message": "Invalid input, please re-enter."
            }
        },
        "charging_period": {
            "default": 1,
            "description": "包年包月时长,当charging_unit取值为“year”,取值范围为1~3;取值为“month”,取值范围为1~9。当charging_mode(计费模式)为prePaid时,此选项为必填项。默认为1。",
            "type": "number",
            "nullable": "false",
            "validation": {
                "condition": "${length(regexall(\"^[1-9]$\",var.charging_period))>0}",
                "error_message": "Invalid input, please re-enter."
            }
        },
        "eip_bandwidth_size": {
            "default": 5,
            "description": "弹性公网IP带宽大小,该模板采用按带宽计费。取值范围为1~2000Mbit/s。默认值为5Mbit/s",
            "type": "number",
            "nullable": "false",
            "validation": {
                "condition": "${length(regexall(\"^(1[0-9]{3}|[1-9][0-9]{0,2}|2000)$\",var.eip_bandwidth_size))>0}",
                "error_message": "Invalid input. Please re-enter."
            }
        }
    },
    "data": {
        "huaweicloud_availability_zones": {
            "availability_zones": {}
        },
        "huaweicloud_images_image": {
            "CentOS": {
                "most_recent": true,
                "name": "CentOS 7.8 64bit",
                "visibility": "public"
            }
        }
    },
    "resource": {
        "huaweicloud_vpc": {
            "vpc": {
                "cidr": "172.16.0.0/24",
                "name": "${var.vpc_name}"
            }
        },
        "huaweicloud_vpc_subnet": {
            "subnet": {
                "availability_zone": "${data.huaweicloud_availability_zones.availability_zones.names[0]}",
                "cidr": "${huaweicloud_vpc.vpc.cidr}",
                "gateway_ip": "172.16.0.1",
                "name": "${var.vpc_name}_subnet",
                "vpc_id": "${huaweicloud_vpc.vpc.id}"
            }
        },
        "huaweicloud_networking_secgroup": {
            "secgroup": {
                "name": "${var.secgroup_name}"
            }
        },
        "huaweicloud_networking_secgroup_rule": {
            "allow_ping": {
                "description": "允许ping程序测试弹性云服务器的连通性",
                "direction": "ingress",
                "ethertype": "IPv4",
                "protocol": "icmp",
                "remote_ip_prefix": "0.0.0.0/0",
                "security_group_id": "${huaweicloud_networking_secgroup.secgroup.id}"
            },
            "allow_ssh_linux": {
                "description": "允许SSH远程连接Linux弹性云服务器",
                "direction": "ingress",
                "ethertype": "IPv4",
                "ports": 22,
                "protocol": "tcp",
                "remote_ip_prefix": "172.16.0.0/24",
                "security_group_id": "${huaweicloud_networking_secgroup.secgroup.id}"
            },
            "allow_all": {
                "description": "允许用户通过浏览器登录Kuboard-Spray平台",
                "direction": "ingress",
                "ethertype": "IPv4",
                "ports": 80,
                "protocol": "tcp",
                "remote_ip_prefix": "0.0.0.0/0",
                "security_group_id": "${huaweicloud_networking_secgroup.secgroup.id}"
            }
        },
        "huaweicloud_vpc_eip": {
            "myeip": {
                "bandwidth": {
                    "charge_mode": "bandwidth",
                    "name": "${var.ecs_name}_eip",
                    "share_type": "PER",
                    "size": "${var.eip_bandwidth_size}"
                },
                "publicip": {
                    "type": "5_bgp"
                },
                "charging_mode": "${var.charging_mode}",
                "period_unit": "${var.charging_unit}",
                "period": "${var.charging_period}"
            }
        },
        "huaweicloud_compute_instance":{
            "instance": {
                "name": "${var.ecs_name}_ecs",
                "image_id": "${data.huaweicloud_images_image.CentOS.id}",
                "flavor_id": "${var.ecs_flavor}",
                "security_group_ids": [
                    "${huaweicloud_networking_secgroup.secgroup.id}"
                ],
                "availability_zone": "${data.huaweicloud_availability_zones.availability_zones.names[0]}",
                "system_disk_type": "SAS",
                "system_disk_size": "${var.system_disk_size}",
                "charging_mode": "${var.charging_mode}",
                "period_unit": "${var.charging_unit}",
                "period": "${var.charging_period}",
                "admin_pass": "${var.ecs_password}",
                "network": {
                    "fixed_ip_v4": "172.16.0.10",
                    "uuid": "${huaweicloud_vpc_subnet.subnet.id}"
                },
                "eip_id": "${huaweicloud_vpc_eip.myeip.id}",
                "user_data": "#!/bin/bash\necho 'root:${var.ecs_password}'|chpasswd\nwget -P /tmp/ https://documentation-samples.obs.cn-north-4.myhuaweicloud.com/solution-as-code-publicbucket/solution-as-code-moudle/deploying-and-managing-kubernetes-clusters/userdata/install_kuboard_spray.sh\nchmod 744 /tmp/install_kuboard_spray.sh\nsh /tmp/install_kuboard_spray.sh \nrm -rf /tmp/install_kuboard_spray.sh"
            }
        }
    },
    "output": {
        "登录Kuboard-Spray": {
            "value": "部署成功后,脚本开始执行,耐心等待大约10分钟左右。请在浏览器输入网址:http://${huaweicloud_vpc_eip.myeip.address},即可访问网站"
        }
    }
}