前提条件
安装 Terraform
腾讯云 Cloud Shell 是一款帮助您运维的免费产品,预装了 Terraform 相关组件,并配置好腾讯云临时凭证(credentials)。
如果您不使用 Cloud Shell,关于安装 Terraform 的具体操作,请参见在 本地安装和配置 Terraform。
说明:
Terraform 安装版本不得低于 v1.6.3,您可通过 terraform --version 命令查看安装的 Terraform 版本。
如果您是通过云端管理,支持通过 云端安装,云端安装获取访问密钥与本地相同。
配置腾讯云账号信息
1. 登录 访问管理控制台,在左侧导航栏,进入访问密钥 > API 密钥管理。
2. 在 API 密钥管理页面,单击新建密钥,即可以创建一对 SecretId / SecretKey。
配置腾讯云账号信息,有以下两种方式:
静态凭证鉴权
在用户目录下创建
provider.tf
文件,输入如下内容。其中my-secret-id
和my-secret-key
需替换为密钥 SecretId 和 SecretKey。provider "tencentcloud" {secret_id = "my-secret-id"secret_key = "my-secret-key"}
环境变量鉴权
配置电脑环境变量或云端环境变量,请执行以下命令。其中
YOUR_SECRET_ID
和 YOUR_SECRET_KEY
需替换为密钥 SecretId 和 SecretKey。export TENCENTCLOUD_SECRET_ID=YOUR_SECRET_IDexport TENCENTCLOUD_SECRET_KEY=YOUR_SECRET_KEY
创建 prometheus 实例
1. 创建 Terraform 的配置文件。在项目目录中创建一个名为 main.tf 的文件,并使用合适的编辑器打开,在 main.tf 文件或者 provider.tf 文件中添加腾讯云提供者配置:
provider "tencentcloud" {region = "your_region"secret_id = "your_secret_id"secret_key = "your_secret_key"}
2. 定义腾讯云资源:在 main.tf 文件中使用 Terraform 腾讯云提供的资源来定义您想要创建和管理的资源。
# 指定 provider 配置信息terraform { required_providers { tencentcloud = { source = "tencentcloudstack/tencentcloud" } } }# 创建孟买地区prometheus实例resource "tencentcloud_monitor_tmp_instance" "foo" {instance_name = "tf-tmp-instance-sjtest"vpc_id = "vpc-0n42dxzs"subnet_id = "subnet-es8rv1kx"data_retention_time = 30zone = "ap-mumbai-1"tags = {"createdBy" = "terraform"}}# 创建孟买地区grafana实例(选填)resource "tencentcloud_monitor_grafana_instance" "foo" {instance_name = "tf-grfana-cstest"vpc_id = "vpc-0n42dxzs"subnet_ids = ["subnet-es8rv1kx"]grafana_init_password = "1234567890"enable_internet = falseis_destroy = truetags = {"createdBy" = "test"}}# grafana与Prometheus实例做绑定(选填)resource "tencentcloud_monitor_tmp_manage_grafana_attachment" "foo" {grafana_id = tencentcloud_monitor_grafana_instance.foo.idinstance_id = tencentcloud_monitor_tmp_instance.foo.id}
3. 初始化 Terraform 运行环境,执行命令如下:
terraform init
预期输出信息:
Initializing the backend...Initializing provider plugins...- Reusing previous version of tencentcloudstack/tencentcloud from the dependency lock file- Using previously-installed tencentcloudstack/tencentcloud v1.81.32Terraform has been successfully initialized!You may now begin working with Terraform. Try running "terraform plan" to seeany changes that are required for your infrastructure. All Terraform commandsshould now work.If you ever set or change modules or backend configuration for Terraform,rerun this command to reinitialize your working directory. If you forget, othercommands will detect it and remind you to do so if necessary.
4. 生成资源规划,执行命令如下:
terraform plan
预期输出信息:
tencentcloud_vpc.vpc: Refreshing state... [id=vpc-3csjp7k8]tencentcloud_monitor_tmp_instance.foo: Refreshing state... [id=prom-4wcvt7p1]Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with thefollowing symbols:+ createTerraform will perform the following actions:# tencentcloud_monitor_tmp_instance.foo will be created+ resource "tencentcloud_monitor_tmp_instance" "foo" {+ api_root_path = (known after apply)+ data_retention_time = 30+ id = (known after apply)+ instance_name = "tf-tmp-instance-sjtest"+ ipv4_address = (known after apply)+ proxy_address = (known after apply)+ remote_write = (known after apply)+ subnet_id = "subnet-es8rv1kx"+ tags = {+ "createdBy" = "terraform"}+ vpc_id = "vpc-0n42dxzs"+ zone = "ap-mumbai-1"}Plan: 1 to add, 0 to change, 0 to destroy.
5. 创建实例,执行命令如下:
terraform apply
预期输出信息:
tencentcloud_vpc.vpc: Refreshing state... [id=vpc-3csjp7k8]tencentcloud_monitor_tmp_instance.foo: Refreshing state... [id=prom-4wcvt7p1]Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with thefollowing symbols:+ createTerraform will perform the following actions:# tencentcloud_monitor_tmp_instance.foo will be created+ resource "tencentcloud_monitor_tmp_instance" "foo" {+ api_root_path = (known after apply)+ data_retention_time = 30+ id = (known after apply)+ instance_name = "tf-tmp-instance-sjtest"+ ipv4_address = (known after apply)+ proxy_address = (known after apply)+ remote_write = (known after apply)+ subnet_id = "subnet-es8rv1kx"+ tags = {+ "createdBy" = "terraform"}+ vpc_id = "vpc-0n42dxzs"+ zone = "ap-mumbai-1"}Plan: 1 to add, 0 to change, 0 to destroy.
以下信息填入 “ yes ” 继续操作:
Do you want to perform these actions?Terraform will perform the actions described above.Only 'yes' will be accepted to approve.Enter a value:
若出现以下信息,表示您已创建成功:
tencentcloud_monitor_tmp_instance.foo: Creating...tencentcloud_monitor_tmp_instance.foo: Still creating... [10s elapsed]tencentcloud_monitor_tmp_instance.foo: Creation complete after 12s [id=prom-8dyb6iny]Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
查看 Prometheus 实例状态
删除 Prometheus 实例
删除 Prometheus 实例,执行命令如下:
terraform destroy
出现以下信息填入提示您填入 “yes” 确认:
tencentcloud_monitor_tmp_instance.foo: Refreshing state... [id=prom-8dyb6iny]Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with thefollowing symbols:- destroyTerraform will perform the following actions:# tencentcloud_monitor_tmp_instance.foo will be destroyed- resource "tencentcloud_monitor_tmp_instance" "foo" {- api_root_path = "http://10.0.0.34:9090/api/v1" -> null- data_retention_time = 30 -> null- id = "prom-8dyb6iny" -> null- instance_name = "tf-tmp-instance-sjtest" -> null- ipv4_address = "10.0.0.34" -> null- proxy_address = "10.0.0.34:9090" -> null- remote_write = "http://10.0.0.34:9090/api/v1/prom/write" -> null- subnet_id = "subnet-es8rv1kx" -> null- tags = {- "createdBy" = "terraform"} -> null- vpc_id = "vpc-0n42dxzs" -> null- zone = "ap-mumbai-1" -> null}Plan: 0 to add, 0 to change, 1 to destroy.Do you really want to destroy all resources?Terraform will destroy all your managed infrastructure, as shown above.There is no undo. Only 'yes' will be accepted to confirm.Enter a value: yestencentcloud_monitor_tmp_instance.foo: Destroying... [id=prom-8dyb6iny]tencentcloud_monitor_tmp_instance.foo: Destruction complete after 6sDestroy complete! Resources: 1 destroyed.
说明:
当出现
Destroy complete! Resources: 1 destroyed.
表示您已删除该实例。