云服务器内容精选

  • 编码函数 表5 编码函数 函数名称 函数描述 样例 运行结果 base64encode 将UTF-8字符串转换为base64编码 base64encode("Hello, cloud!") SGVsbG8sIGNsb3VkIQ== base64decode 将base64编码解码为UTF-8字符串(结果非UTF-8格式会报错) base64decode("SGVsbG8sIGNsb3VkIQ==") Hello, cloud! base64gzip 将UTF-8字符串压缩并转换为base64编码 base64gzip("Hello, cloud!") H4sIAAAAAAAA//JIzcnJ11FIzskvTVEEAAAA//8BAAD//wbrhYUNAAAA
  • 文件操作函数 表7 文件操作函数 函数名称 函数描述 样例 运行结果 abspath 计算文件的绝对路径 abspath("./hello.txt") /home/demo/test/terraform/hello.txt dirname 计算字符串中包含的路径 dirname("foo/bar/baz.txt") foo/bar basename 计算字符串中的文件名 basename("foo/bar/baz.txt") baz.txt file 读取文件并返回文件内容 file("./hello.txt") Hello, cloud! filebase64 读取文件并返回文件内容的base64编码 filebase64("./hello.txt") SGVsbG8sIGNsb3VkIQ==
  • 数值计算函数 表2 数值计算函数 函数名称 函数描述 样例 运行结果 abs 计算绝对值 abs(-12.4) 12.4 max 计算最大值 max(12, 54, 6) max([12, 54, 6]...) 54 54 min 计算最小值 min(12, 54, 6) min([12, 54, 6]...) 6 6 log 计算对数 log(16, 2) 4 power 计算x的y次幂 power(3, 2) 9
  • 集合函数 表3 集合函数 函数名称 函数描述 样例 运行结果 element 通过下标从列表中检索对应元素值 element(["One", "Two", "Three"], 1) Two index 返回给定值在列表中的索引,如果该值不存在将报错。 index(["a", "b", "c"], "b") 1 lookup 使用给定的键从映射表中检索对应的值。如果给定的键不存在,则返回默认值。 lookup({IT="A", CT="B"}, "IT", "G") lookup({IT="A", CT="B"}, "IE", "G") A G flatten 展开列表中的嵌套元素 flatten([["a", "b"], [], ["c"]]) ["a", "b", "c"] keys 返回map中的所有key keys({a=1, b=2, c=3}) ["a", "b", "c"] length 获取列表、映射或是字符串的长度 length(["One", "Two", "Three"]) length({IT="A", CT="B"}) length("Hello, cloud!") 3 2 13
  • 类型转化函数 表4 类型转化函数 函数名称 函数描述 样例 运行结果 toset 将列表类型转换为集合类型 toset(["One", "Two", "One"]) ["One", "Two"] tolist 将集合类型转换为列表类型 toset(["One", "Two", "Three"]) ["One", "Two", "Three"] tonumber 将字符串类型转换为数字类型 tonumber("33") 33 tostring 将数字类型转换为字符串类型 tostring(33) "33"
  • 哈希和加密函数 表6 哈希和加密函数 函数名称 函数描述 样例 运行结果 sha256 计算字符串的SHA256值(16进制) sha256("Hello, cloud!") 0ad167d1e3ac8e9f4e4f7ba83e92d0e3838177e959858631c770caaed8cc5e3a sha512 计算字符串的SHA512值(16进制) sha512("Hello, cloud!") 6eb6ed9fc4edffaf90e742e7697f6cc7d8548e98aa4d5aa74982e5cdf78359e84a3ae9f226313b2dec765bf1ea4c83922dbfe4a61636d585da44ffbd7e900f56 base64sha256 计算字符串的SHA256值,并转换为base64编码 base64sha256("Hello, cloud!") CtFn0eOsjp9OT3uoPpLQ44OBd+lZhYYxx3DKrtjMXjo= base64sha512 计算字符串的SHA512值,并转换为base64编码 base64sha512("Hello, cloud!") brbtn8Tt/6+Q50LnaX9sx9hUjpiqTVqnSYLlzfeDWehKOunyJjE7Lex2W/HqTIOSLb/kphY21YXaRP+9fpAPVg== md5 计算MD5值 md5("hello world") 5eb63bbbe01eeed093cb22bb8f5acdc3 base64sha512("Hello, cloud!")不等于base64encode(sha512("Hello, cloud!")),因为sha512计算的十六进制值结果在Terraform中是Unicode编码格式,并没指定UTF-8实现。
  • 字符串函数 表1 字符串函数 函数名称 函数描述 样例 运行结果 format 字符串格式化 format("Hello, %s!", "cloud") Hello, cloud! lower 将字符串中的字母转换为小写 lower("HELLO") hello upper 将字符串中的字母转换为大写 upper("hello") HELLO join 使用自定义字符将列表拼接成字符串 join(", ", ["One", "Two", "Three"]) One, Two, Three split 根据分隔符拆分字符串 split(", ", "One, Two, Three") ["One", "Two", "Three"] substr 通过偏移量和长度从给定的字符串中提取一个子串 substr("hello world!", 1, 4) ello replace 把字符串中的str1替换成str2 replace("hello, cloud!", "h", "H") Hello, cloud!
  • 样式约定 HCL约定了一些惯用的风格样式,以确保不同团队编写的文件和模块的风格一致性。建议用户遵循这些约定,推荐的样式约定如下: 对于每个嵌套级别,缩进两个空格。 当多个单行的参数在同一嵌套级别连续出现时,建议将等号对齐。 name = "myinstance"security_groups = ["default", "internal"] 使用空行分隔块中的逻辑参数组。 当块主体同时包含参数和块时,建议将所有参数放在顶部,嵌套块放在参数的下方并使用空行隔开。 将元参数(meta-arguments) 放在块主体的顶部,并使用空行与其它参数隔开;将元参数块(meta-argument blocks) 放在块主体的最后,并用空行与其他块隔开。 resource "huaweicloud_obs_bucket" "demo" { count = 1 bucket = "bucket_demo" acl = "public-read" tags = { foo = "bar" env = "test" } lifecycle { create_before_destroy = true }} 顶层块之间使用空行将彼此隔开。 建议将相同类型的嵌套块放在一起,不同类型的嵌套块使用空行隔开。
  • 块 (Block) 块将多个参数聚合在一起,并支持嵌套。块由块类型、块标签和块主体构成,格式如下: resource "huaweicloud_compute_instance" "myinstance" { name = "myinstance" ...... network { uuid = "55534eaa-533a-419d-9b40-ec427ea7195a" }}