使用Terraform操作OOS

Terraform是一种开源工具,用于安全高效地预览,配置和管理云基础架构和资源、构建、变更、和安全有效的版本化管理基础设施的工具,可以管理已存在和流行的服务提供商以及定制的内部解决方案。并且支持操作阿里云部分的OpenApi。

系统运维管理 OOS(CloudOps Orchestration Service)是一个以模板的方式来操作阿里云的OpenApi的一种服务,方便您管理已经购买的阿里云资源,或者自动扩充资源等操作。相信读此文章的大家已经大致了解OOS的基本操作。基于以上所述以下是我们为您提供的一个简单教程来展示如何通过Terraform来操作OOS服务。

安装并配置Terraform

  1. 前往Terraform官网,下载适用于您的操作系统的程序包。本文以Linux系统为例。如果您还没有Linux环境,可购买阿里云ECS实例,详情请参见Linux系统实例快速入门

  2. 将程序包解压到/usr/local/bin目录。如果您需要将可执行文件解压到其他目录,请按照以下方法为其定义全局路径:

  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. 首先创建一个测试testTerraform文件夹,进入此文件夹,初始化Terraform后,在此文件夹内创建一个createTemplate.tf文件,并进入此文件的编辑模式,如下命令。

    mkdir testTerraform
    cd testTerraform
    terraform init
    vi createTemplate.tf
  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"
    }
  3. 保存并退出,执行以下命令,使用Terraform创建OOS模板。

    terraform plan
    terraform apply
  4. OOS控制台查看模板是否创建成功,如下所示根据上面提供的例子发现根据自定义的参数,模板创建成功。

    terraform-tem

更新模板

  1. 在执行创建模板操作后,找上面的已经创建完成的createTemplate.tf文件,并编辑此文件。

    vi createTemplate.tf
  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"
    }
  3. 将更改的文件输入完毕,保存并退出。

  4. 执行以下命令进行更新资源。

    terraform plan
    terraform apply

查看模板

  1. 参考alicloud_oos_templates来查看搜索操作其他具体的参数。

  2. 创建一个dataTest.tf的文件,进入编辑模式。

    vi dataTest.tf
  3. 将以下查看资源的内容复制进入dataTest.tf文件内,保存并退出。

    data "alicloud_oos_templates" "example" {
      ids=["terraform-test"]
    }
    
    output "first_template" {
      value = "${data.alicloud_oos_templates.example.templates.0}"
    }
  4. 完成上述操作后,输入以下命令来查看资源的具体信息。

    terraform plan
    terraform apply
  5. 如下图所示,将上述命令输入完成后,显示的结果为当前资源的具体信息。

    terraform-tem02

删除模板

使用上面的操作命令创建完成模板后,如果想要删除创建的模板,请参考以下命令来删除模板。

terraform show
terraform destroy

Terraform操作OOS模板的执行

创建执行

  1. 在上面提供的创建模板的例子基础上,首先创建一个测试testExecution.tf的文件,并进入编辑模式

    vi testExecution.tf
  2. 在编辑模式下,将以下内容复制进testExecution.tf文件中。

    resource "alicloud_oos_execution" "exampleExecution"{
            template_name = "terraform-test"
            description = "From TF Test"
            parameters = <<EOF
              {"Status":"Running"}
            EOF
    }
  3. 编辑完成后保存并退出。

  4. 执行以下命令,使用Terraform执行OOS已经创建完成的模板。

    terraform plan
    terraform apply
  5. OOS控制台查看执行是否启动,如下图所示发现执行创建成功。

    terraform-03

查看执行

  1. 参考alicloud_oos_executions来查看搜索操作的其他具体参数。

  2. 创建一个dataExecutionTest.tf的文件,进入编辑模式。

    vi dataExecutionTest.tf
  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}"
    }
  4. 完成上述操作后,输入以下命令来查看资源的具体信息。

    terraform plan
    terraform apply
  5. 如下图所示,将上述命令输入完成后,在您执行命令的控制台显示的结果为当前资源的具体信息。

    terraform-04

删除执行

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

terraform show
terraform destroy