首页 > 其他分享 >02.Terraform基础

02.Terraform基础

时间:2023-01-10 17:02:49浏览次数:45  
标签:02 group terraform 基础 Terraform vpc resource id alicloud

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

image-20230105184637055

  1. 准备好代码base目录

image-20230109182136525

配置阿里云RAM

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

image-20230109182633941

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

image-20230109182932725

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

image-20230109183611588

  1. 对terraform用户授权

image-20230109185436276

需要的权限如下: AliyunECSFullAccess,AliyunVPCFullAccess

配置阿里云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(Virtual Private Cloud)是用户基于阿里云创建的自定义私有网络,不同的专有网络之间二层逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如ECS、负载均衡、RDS等。

//生产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

tf-1

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

image-20230110162914783

  1. 计划和预览
terraform plan

image-20230110162935043

  1. 申请资源
terraform apply

image-20230110163013773

  1. 资源验证

image-20230110163039571

image-20230110163101825

image-20230110163139586

  1. 展示申请资源
terraform show

image-20230110163323443

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

image-20230110163353581

标签:02,group,terraform,基础,Terraform,vpc,resource,id,alicloud
From: https://blog.51cto.com/u_13812615/6000465

相关文章

  • python之路 57 linux 基础 命令与执行效果
    虚拟环境的安装与配置1.VMware软件安装这里有一个15版本和一个16版本的链接:https://pan.baidu.com/s/1vkNxxQ6NS9q7XYJ6qiVMaQ提取码:t3lf2.软件配置与Xshell远程工......
  • Bonitasoft认证绕过和RCE漏洞分析及复现(CVE-2022-25237)
    一、漏洞原理漏洞简述Bonitasoft是一个业务自动化平台,可以更轻松地在业务流程中构建、部署和管理自动化应用程序;Bonita是一个用于业务流程自动化和优化的开源和可扩展......
  • 2023 年汽车行业向好发展,火山引擎 VeDI 助力车企数智转型
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群2023年的汽车市场,预计能有一个向好的转型。据中汽协公布的2022年1-11月累计汽车销量......
  • 02-Resnet18 图像分类
     图1Resnet的残差块   图2Resnet18网络架构Cifar10数据集的Resnet10的框架实现(Pytorch):1importtorch2fromtorchimportnn34#ResNet18_Bas......
  • Java基础学习06
    学到一个新的之前没遇到的方法的参数表示:可变参数(2023-01-10)当多个函数的功能相同,参数的类型也相同,但是参数的个数不同的时候就可以用到可变参数。表示方法:int...nums;......
  • 2023年汽车行业向好发展,火山引擎VeDI助力车企数智转型
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群2023年的汽车市场,预计能有一个向好的转型。据中汽协公布的2022年1-11月累计汽车销量数据,达到24......
  • 02-Lenet5 图像分类网络
      图1Lenet5手写字符分类网络架构Cifar10数据集的Lenet5的框架实现(Pytorch):1importtorch2fromtorchimportnn,optim3importtorch.nn.functional......
  • Android BaseAdapter应用基础
    Android基础类之BaseAdapterBaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示......
  • 光点农业农村领域信用大数据平台解决方案入选“2022广东省政务服务创新案例”
    近期,广东省电子政务协会面向全省各级政府机构、企事业单位征集政务服务创新案例以及解决方案。经过初评及专家评审,光点科技农业农村领域信用大数据平台解决方案成功入选“20......
  • 2023.1.9(Educational Codeforces Round 141 & NEERC2017)
    A.YetAnotherTournamentLinkhttps://codeforces.com/contest/1783/problem/CStatement除了你以外有\(n\)个人,编号为\(0\ton-1\),每个人有两个权值\(a_i\)和......