使用Terraform操作OOS
Terraform是一种开源工具,用于安全高效地预览,配置和管理云基础架构和资源、构建、变更、和安全有效的版本化管理基础设施的工具,可以管理已存在和流行的服务提供商以及定制的内部解决方案。并且支持操作阿里云部分的OpenApi。
运维编排服务是一个以模板的方式来操作阿里云的OpenApi的一种服务,方便您管理已经购买阿里云的资源,或者自动扩充资源等操作。相信读此文章的大家已经大致了解OOS的基本操作。基于以上所述以下是我们为您提供一个简单的教程来展示通过Terraform来操作OOS服务。
安装并配置Terraform
前往Terraform官网,下载适用于您的操作系统的程序包。本文以Linux系统为例。如果您还没有Linux环境,可购买阿里云ECS实例,详情请参见Linux系统实例快速入门。
将程序包解压到/usr/local/bin目录。如果您需要将可执行文件解压到其他目录,请按照以下方法为其定义全局路径:
Linux:参见在Linux系统定义全局路径
Windows:参见在Windows系统定义全局路径
Mac:参见在Mac系统定义全局路径
3. 执行terraform
命令验证路径配置。
terraform
Usage: terraform [-version] [-help] <command> [args]
4. 安装Golang,在安装以下模块前需要先安装Golang语言。
yum install golang
5. 安装terraform-provider-alicloud,执行以下命令,或者参考详细操作请参考安装简介文档。
yum install git
go get golang.org/x/tools/cmd/goimports
mkdir -p $GOPATH/src/github.com/aliyun
cd $GOPATH/src/github.com/aliyun
git clone https://github.com/aliyun/terraform-provider-alicloud
cd $GOPATH/src/github.com/aliyun/terraform-provider-alicloud
make build
在环境中配置以下变量
export ALICLOUD_ACCESS_KEY=xxx
export ALICLOUD_SECRET_KEY=xxx
export ALICLOUD_REGION=xxx
Terraform支持OOS的资源模块
资源类型 | 模块 | 使用场景 |
date | alicloud_oos_templates | 查询模板 |
alicloud_oos_executions | 查询执行 | |
resource | alicloud_oos_template | 创建模板、更新模版 |
alicloud_oos_execution | 创建执行 |
Terraform操作OOS模板的创建、更新、查询、删除
1、创建模板
1.1 首先创建一个测试testTerraform文件夹,进入此文件夹,初始化Terraform后,在此文件夹内创建一个createTemplate.tf文件,并进入此文件的编辑模式,如下命令。
mkdir testTerraform
cd testTerraform
terraform init
vi createTemplate.tf
1.2 在编辑模式下,将以下内容复制进createTemplate.tf文件中。
resource "alicloud_oos_template" "example" {
tags={
"Created" = "TF",
"For" = "template Test"
}
content= <<EOF
{
"FormatVersion": "OOS-2019-06-01",
"Description": "Update Describe instances of given status",
"Parameters":{
"Status":{
"Type": "String",
"Description": "(Required) The status of the Ecs instance."
}
},
"Tasks": [
{
"Properties" :{
"Parameters":{
"Status": "{{ Status }}"
},
"API": "DescribeInstances",
"Service": "Ecs"
},
"Name": "foo",
"Action": "ACS::ExecuteApi"
}]
}
EOF
template_name="terraform-test"
}
1.3 保存并退出。
1.4 执行以下命令,使用Terraform创建OOS模板。
terraform plan
terraform apply
1.5 在OOS控制台查看模板是否创建成功,如下所示根据上面提供的例子发现根据自定义的参数,模板创建成功。

2、更新模板
2.1 在执行创建模板操作后,找上面的已经创建完成的createTemplate.tf文件,并编辑此文件。
vi createTemplate.tf
2.2 进入编辑模式,将需要修改的文件内容复制到文件内。如下例子:
resource "alicloud_oos_template" "example" {
tags={
"Created" = "TF",
"For" = "template Test"
}
content= <<EOF
{
"FormatVersion": "OOS-2019-06-01",
"Description": "Update Describe instances of given status",
"Parameters":{},
"Tasks": [
{
"Properties" :{
"Parameters":{
"Status": "Running"
},
"API": "DescribeInstances",
"Service": "Ecs"
},
"Name": "foo",
"Action": "ACS::ExecuteApi"
}]
}
EOF
template_name="terraform-test"
}
2.3 将更改的文件输入完毕,保存并退出。
2.4 执行以下命令进行更新资源。
terraform plan
terraform apply
3、查看模板
3.1 参考alicloud_oos_templates来查看搜索操作其它具体的参数。
3.2 创建一个dataTest.tf的文件,进入编辑模式。
vi dataTest.tf
3.3 将以下查看资源的内容复制进入dataTest.tf文件内,保存并退出。
data "alicloud_oos_templates" "example" {
ids=["terraform-test"]
}
output "first_template" {
value = "${data.alicloud_oos_templates.example.templates.0}"
}
3.4 完成上述操作后,输入以下命令来查看资源的具体信息。
terraform plan
terraform apply
3.5 如下图所示,将上述命令输入完成后,显示的结果为当前资源的具体信息。

4、删除模板
4.1 使用上面的操作命令创建完成模板后,如果想要删除创建的模板,请参考以下命令来删除模板。
terraform show
terraform destroy
Terraform操作OOS模板的执行
1、创建执行
1.1 在上面提供的创建模板的例子基础上,首先创建一个测试testExecution.tf的文件,并进入编辑模式
vi createTemplate.tf
1.2 在编辑模式下,将以下内容复制进testExecution.tf文件中。
resource "alicloud_oos_execution" "exampleExecution"{
template_name = "terraform-test"
description = "From TF Test"
parameters = <<EOF
{"Status":"Running"}
EOF
}
1.3 编辑完成后保存并退出。
1.4 执行以下命令,使用Terraform执行OOS已经创建完成的模板。
terraform plan
terraform apply
1.5 在OOS控制台查看执行是否启动,如下图所示发现执行创建成功。
2、查看执行
2.1 参考alicloud_oos_executions来查看搜索操作其它具体的参数。
2.2 创建一个dataExecutionTest.tf的文件,进入编辑模式。
vi dataTest.tf
2.3 将以下查看资源的内容复制进入dataExecutionTest.tf文件内,保存并退出。
data "alicloud_oos_executions" "example" {
ids = ["execution_id"]
template_name = "name"
}
output "first_execution_id" {
value = "${data.alicloud_oos_executions.example.executions.0.id}"
}
2.4 完成上述操作后,输入以下命令来查看资源的具体信息。
terraform plan
terraform apply
2.5 如下图所示,将上述命令输入完成后,在您执行命令的控制台显示的结果为当前资源的具体信息。

3、删除执行
3.1 在使用Terraform创建完执行后,如果想要删除OOS上的执行资源,使用以下命令即可。
terraform show
terraform destroy