对象存储

  • 使用Terraform管理对象存储

    最近更新时间:2019-09-26 17:54:26

    Terraform 是一个开源的自动化的资源编排工具,可以用代码来管理维护 IT 资源。Terraform 的命令行接口(CLI) 提供一种简单机制,用于将配置文件部署到七牛云或其他任意支持的云上,并对其进行版本控制。它编写了描述云资源拓扑的配置文件中的基础结构,例如虚拟机、存储帐户和网络接口等。Terraform 通过 Provider 来支持新的基础架构,是一个高度可扩展的工具。

    七牛云Provider 依据标准定义了对象存储的 Resource 和 Data Source,您可以使用 Terraform 来管理七牛云对象存储的资源。

    安装七牛云Provider

    1. Clone repository

    $ git clone git@github.com:qiniu/terraform-provider-qiniu.git --recurse-submodules
    

    2. Build the provider

    $ cd terraform-provider-qiniu
    $ make
    

    3. Install the provider

    mkdir -p ~/.terraform.d/plugins
    mv bin/terraform-provider-qiniu ~/.terraform.d/plugins
    

    4. 创建配置文件
    配置provider信息,创建provider.tf文件,按以下格式配置身份认证信息

    provider "qiniu" {
      access_key = "<Qiniu Access Key>"
      secret_key = "<Qiniu Secret Key>"
    }
    

    5. 初始化目录

    $ terraform init
    

    使用Terraform管理七牛云对象存储

    Provider安装以后,就可以通过Terraform的操作命令来管理七牛云对象存储了。

    创建Bucket

    resource "qiniu_bucket" "basic_bucket" {
      name      = "basic-test-terraform-1" 
      region_id = "z0"                    
      private   = false                    
    }
    

    参数说明:

    参数 必填 说明
    name 空间名
    region_id 空间所属区域
    private 空间是否为private

    创建Object

    resource "qiniu_bucket_object" "basic_object" {
      bucket    = "basic-test-terraform-1"  
      key       = "qiniu-key"             
      source    = "/path/to/file"           
    }
    

    参数说明:

    参数 必填 说明
    bucket 空间名
    key Object name
    source Object 存放路径

    导入已有资源

    可以通过 import 命令导入已有的 Bucket 和 Object。以 Bucket 举例如下:
    首先,配置 Bucket 信息

    resource "qiniu_bucket" "importbucket" {
      name      = "video" 
      region_id = "z0"                                      
    }
    

    然后使用 import 命令导入 video 这个 Bucket

    terraform import qiniu_bucket.importbucket video
    

    七牛云对象存储 Data Source

    qiniu_regions

    data "qiniu_regions" "China" {
        id_regex = "^z"                             
        description_regex = "China"               
    }
    

    参数说明:

    参数 必填 说明
    id_regex 区域id的正则匹配规则
    description_regex 区域描述的正则匹配规则

    qiniu_buckets

    data "qiniu_buckets" "z1" {
      name_regex = "^bucket-"
      region_id = "z1"
    }
    

    参数说明:

    参数 必填 说明
    name_regex 空间名的正则匹配规则
    region_id 空间所属区域

    qiniu_buckets_objects

    data "qiniu_buckets_objects" "all" {
      bucket = "basic-test-terraform-1"
    }
    

    参数说明:

    参数 必填 说明
    bucket 空间名的正则匹配规则
    以上内容是否对您有帮助?
  • Icon free helper
    Close