天天看点

Terraform 语法 resource(1)

resource是我们的资源,一般在terraform里面定义的都是资源,是个非常重要的角色。

Terraform 语法 resource(1)

关键字resource+资源类型(比如dns,ecs,vpc,交换机)+资源的名称。

模块下资源的名称要保证唯一,不要冲突。

块里面就是所有resource的配置,也就是它的主体部分。

Terraform 语法 resource(1)

对于资源我们只需要了解它的主体,它的结构,接下来就可以开始定义ecs。

​​阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台​​

首先你得知道在哪个区域创建ecs,创建的时候选择镜像,操作系统,然后是系统盘多大,cpu,内存这些规格大小。

Terraform 语法 resource(1)
Terraform 语法 resource(1)

接下来为你配置网络

Terraform 语法 resource(1)

 分配公网IP,带宽,安全组,弹性网卡,ipv6。

Terraform 语法 resource(1)

最后就是系统的配置,账号密码这些。实例名称,主机名称。

Terraform 语法 resource(1)

cloud-init其实就是每个云产品的机制,实例创建完之后想要执行一些任务,就可以借用这种机制去执行。里面可以写一段脚本。

下面就要去定义ecs资源了,resource是从provider里面来的。

第一个是可用区,第二个是安全组,之前创建过安全组,然后加了两条安全组的规则,80和22。

再往下面就是实例的类型,规格。

再后面就是云盘。

镜像的id可以通过data source去拿到。

Terraform 语法 resource(1)

这个就是我资源的配置

Terraform 语法 resource(1)

 ecs创建之后可能会去搭建一些服务,那么就需要通过ecs的公网IP,公网IP就可以访问这台服务器了。

这个密码其实就是在配置文件里面写的密码(password= "root@123")记住这里需要创建22端口访问规则,在安全组里面。

Terraform 语法 resource(1)

当你在上面部署了一台ecs,并且在ecs上面部署了你的web应用,那么就需要配置域名解析了。DNS是有zone区分的, 

 ​​阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台​​

Terraform 语法 resource(1)

 这个域名其实就是我的zone,然后进去添加解析。

Terraform 语法 resource(1)

可以看到这个域名解析到这个IP了。

Terraform 语法 resource(1)

上面演示就是加了一条DNS的A记录,指向了我们ecs的IP。

​​Terraform Registry​​

# Create a new Domain record
resource "alicloud_dns_record" "record" {
  name        = "domainname"
  host_record = "@"
  type        = "A"
  value       = "192.168.99.99"
}      

 type=A表示添加一条A记录,A记录一般指定的一台主机IP。name是zone的名称,然后是记录。