02.Terraform基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02.Terraform基础相关的知识,希望对你有一定的参考价值。

Terraform基础

开发环境配置

  1. 安装terraform: https://developer.hashicorp.com/terraform/downloads?product_intent=terraform

  2. 安装vscode编辑器: https://code.visualstudio.com/docs/?dv=osx

  3. 安装编辑器插件: vscode-icons-mac 或者Material Icon Theme

  1. 准备好代码base目录

配置阿里云RAM

  1. 登录阿里云https://www.aliyun.com/ 并通过控制台进入RAM

  1. 创建terraform用户,注意只需要OpenAPI 调用访问

  1. 将生成的access id和access secret保存备用

  1. 对terraform用户授权

配置阿里云Provider

  • Terraform通过provider管理基础设施,使用provider与云供应商API 进行交互;每个Provider都包含相关的资源和数据源;

  • alicloud provider : https://registry.terraform.io/providers/aliyun/alicloud/latest/docs

声明provider

  • required_providers 定义providers;
  • source 定义provider的源地址;
  • version指定provider的版本号
  1. 在basic下创建a_basic目录,并新增versions.tf
terraform 
  required_version = "1.3.7"
  required_providers 
    alicloud = 
      source = "aliyun/alicloud"
      version = "1.195.0"
    
  

配置Provider

  • alicloud_access_key RAM用户的AK信息;
  • alicloud_secret_key RAM用户的SK信息;
  • region定义创建资源的区域;
  1. a_basic/main.tf
provider "alicloud" 
  access_key = var.alicloud_access_key
  secret_key = var.alicloud_secret_key
  region     = var.region

定义variables变量

  • 可以从环境变量或者文本文件中读取
  1. a_basic/variables.tf
variable "alicloud_access_key" 
  type = string


variable "alicloud_secret_key" 
  type = string


variable "region" 
  type = string

  1. 声明TF环境变量,需要export TF_VAR开头,结合上述定义的变量去操作
export TF_VAR_alicloud_access_key="12345"
export TF_VAR_alicloud_secret_key="sbcopyit123"
export TF_VAR_region="cn-hangzhou"

定义阿里云资源

  • 资源来自Provider, 是Terraform中最重要的元素。每个资源块描述一个或多个基础对象,例如网络、计算实例或更高级别的组件,例如 DNS 记录。
  • 资源名称必须以字母或下划线开头,并且只能包含字母、数字、下划线和破折号。
  • 格式如下
  resource "resource_type" "name" 
  
  
  1. 例如定义vpc资源: a_basic/alicloud_vpc.tf
//生产vpc
resource "alicloud_vpc" "vpc_prod" 
    vpc_name = "hangzhou-prod-vpc"
    cidr_block = "10.0.0.0/8"

//生产交换机
resource "alicloud_vswitch" "prod-vsw" 
    vpc_id = alicloud_vpc.vpc_prod.id
    cidr_block = "10.0.0.0/24"
    zone_id = "cn-hangzhou-b"

//测试vpc
resource "alicloud_vpc" "vpc_test" 
    vpc_name = "hangzhou-test-vpc"
    cidr_block = "172.80.0.0/12"


resource "alicloud_vswitch" "test-vsw" 
    vpc_id = alicloud_vpc.vpc_test.id
    cidr_block = "172.80.0.0/24"
    zone_id = "cn-hangzhou-k"

  1. 创建安全组: a_basic/alicloud_secure_group.tf
resource "alicloud_security_group" "prod-web-secure" 
    name = "hangzhou_prod_web_secure_group"
    vpc_id = alicloud_vpc.vpc_prod.id
    security_group_type = "normal"


resource "alicloud_security_group_rule" "prod-web-secure-rule" 
    type = "ingress"
    ip_protocol = "tcp"
    nic_type = "intranet"
    policy = "accept"
    port_range        = "80/80"
    priority          = 1
    security_group_id = alicloud_security_group.prod-web-secure.id
    cidr_ip           = "0.0.0.0/0"


resource "alicloud_security_group" "test-web-secure" 
    name = "hangzhou_test_web_secure_group"
    vpc_id = alicloud_vpc.vpc_test.id
    security_group_type = "normal"


resource "alicloud_security_group_rule" "test-web-secure-rule" 
    type = "ingress"
    ip_protocol = "tcp"
    nic_type = "intranet"
    policy = "accept"
    port_range        = "80/80"
    priority          = 1
    security_group_id = alicloud_security_group.test-web-secure.id
    cidr_ip           = "0.0.0.0/0"

申请阿里云资源

  1. 环境初始化
cd ~/Desktop/workspace/terraform_dode/basic/a_basic
terraform init

  1. 格式化代码
terraform fmt
  1. 验证代码
terraform validate -json

  1. 计划和预览
terraform plan

  1. 申请资源
terraform apply

  1. 资源验证

  1. 展示申请资源
terraform show

  1. 删除资源(慎重)
terraform destroy

以上是关于02.Terraform基础的主要内容,如果未能解决你的问题,请参考以下文章

java基础-变量

Groovy基础语法详解

冒号的解释及造句

在 PHP 中将 2 个或更多 png 图像合并到基本图像上

英语破折号是一杠还是两杠?用中文(中国)输入法怎么输入?求最规范的英语破折号打法。

键盘如何打英文的破折号?