Skip to main content

moregeek program

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




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


服务案例 sql server数据库反复重启问题-多极客编程

LinkSLA智能运维管家对主流数据库的监控,能够及时发现异常,快速响应,保障业务系统的稳定。平台通过对SQL Server数据库监控,帮助用户在数据库出现异常时事件处理。一、SQL Server数据库监控内容如下1 、数据库服务器基本性能监控。包括:服务器的CPU数量,内存大小,服务器在线时间,在线数据实例个数,离线数据实例个数和挂起的数据实例个数。2、监控数据库基本统计信息。比如实时用户连接数

openldap平台搭建-多极客编程

轻型目录访问协议(英文: LightweightDirectoryAccessProtocol,缩写: LDAP)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。OpenLDAP是轻型目录访问协议( LightweightDirectoryAccessProtocol, LDAP)的自由和开源的实现,在其 OpenLDAP许可证下发行,并已经被包含在众

超深度解析 linux i/o 的那些事儿-多极客编程

本文主要以一张图为基础,向大家介绍 Linux在 I/O 上做了哪些事情,即 Linux 中直接 I/O 原理,希望本文的经验和思路能为读者提供一些帮助和思考。我们先看一张图:这张图大体上描述了 Linux 系统上,应用程序对磁盘上的文件进行读写时,从上到下经历了哪些事情。这篇文章就以这张图为基础,介绍 Linux 在 I/O 上做了哪些事情。文件系统什么是文件系统文件系统,本身是对存储设备上的文

sysbench服务器性能测试-多极客编程

1,sysbench简介sysbench是一款开源的​​多线程​​​​性能测试​​工具,可以执行cpu/内存/线程/IO/数据库等方面的性能测试;包含以下几种测试:cpu性能磁盘IO性能调度程序性能内存分配及传输速度POSIX线程性能数据库性能(OLTP基准测试)数据库目前支持MySQL/PostgreSQL/Oracle​2,工具安装编译好的离线二进制rpm包下载链接:​​​​​​https:/

跨地域ossim传感器部署实战-多极客编程

需求:A公司数据中心部署了一套OSSIM系统,随着公司业务扩大,现在在多个城市建立了分支办公司,需要将分支公司服务器资产数据汇总到A公司总部,而OSSIM Sensor传感器无法通过物联网直接连接到总部OSSIM Server。下面我们利用OSSIM里集成的VPN工具进行设置实现跨地域传感器部署。步骤1:登录终端以root用户身份登录OSSIM Server终端控制台。登录完成之后,大家可以看到字

从一次kafka宕机引发的高可用思考-多极客编程

问题要从一次Kafka的宕机开始说起。笔者所在的是一家金融科技公司,但公司内部并没有采用在金融支付领域更为流行的 RabbitMQ ,而是采用了设计之初就为日志处理而生的 Kafka ,所以我一直很好奇Kafka的高可用实现和保障。从 Kafka 部署后,系统内部使用的 Kafka 一直运行稳定,没有出现不可用的情况。但最近系统测试人员常反馈偶有Kafka消费者收不到消息的情况,登陆管理界面发现三

服务案例 sql server数据库反复重启问题-多极客编程

LinkSLA智能运维管家对主流数据库的监控,能够及时发现异常,快速响应,保障业务系统的稳定。平台通过对SQL Server数据库监控,帮助用户在数据库出现异常时事件处理。一、SQL Server数据库监控内容如下1 、数据库服务器基本性能监控。包括:服务器的CPU数量,内存大小,服务器在线时间,在线数据实例个数,离线数据实例个数和挂起的数据实例个数。2、监控数据库基本统计信息。比如实时用户连接数

openldap平台搭建-多极客编程

轻型目录访问协议(英文: LightweightDirectoryAccessProtocol,缩写: LDAP)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。OpenLDAP是轻型目录访问协议( LightweightDirectoryAccessProtocol, LDAP)的自由和开源的实现,在其 OpenLDAP许可证下发行,并已经被包含在众

超深度解析 linux i/o 的那些事儿-多极客编程

本文主要以一张图为基础,向大家介绍 Linux在 I/O 上做了哪些事情,即 Linux 中直接 I/O 原理,希望本文的经验和思路能为读者提供一些帮助和思考。我们先看一张图:这张图大体上描述了 Linux 系统上,应用程序对磁盘上的文件进行读写时,从上到下经历了哪些事情。这篇文章就以这张图为基础,介绍 Linux 在 I/O 上做了哪些事情。文件系统什么是文件系统文件系统,本身是对存储设备上的文

sysbench服务器性能测试-多极客编程

1,sysbench简介sysbench是一款开源的​​多线程​​​​性能测试​​工具,可以执行cpu/内存/线程/IO/数据库等方面的性能测试;包含以下几种测试:cpu性能磁盘IO性能调度程序性能内存分配及传输速度POSIX线程性能数据库性能(OLTP基准测试)数据库目前支持MySQL/PostgreSQL/Oracle​2,工具安装编译好的离线二进制rpm包下载链接:​​​​​​https:/

跨地域ossim传感器部署实战-多极客编程

需求:A公司数据中心部署了一套OSSIM系统,随着公司业务扩大,现在在多个城市建立了分支办公司,需要将分支公司服务器资产数据汇总到A公司总部,而OSSIM Sensor传感器无法通过物联网直接连接到总部OSSIM Server。下面我们利用OSSIM里集成的VPN工具进行设置实现跨地域传感器部署。步骤1:登录终端以root用户身份登录OSSIM Server终端控制台。登录完成之后,大家可以看到字

从一次kafka宕机引发的高可用思考-多极客编程

问题要从一次Kafka的宕机开始说起。笔者所在的是一家金融科技公司,但公司内部并没有采用在金融支付领域更为流行的 RabbitMQ ,而是采用了设计之初就为日志处理而生的 Kafka ,所以我一直很好奇Kafka的高可用实现和保障。从 Kafka 部署后,系统内部使用的 Kafka 一直运行稳定,没有出现不可用的情况。但最近系统测试人员常反馈偶有Kafka消费者收不到消息的情况,登陆管理界面发现三