zoukankan      html  css  js  c++  java
  • 使用terraform-provider-s3 操作minio

    尽管默认官方提供了s3 的操作,但是对于开源minio 无法支持,更多的是aws 的s3,社区提供了一个通用
    s3 操作的provider(基于minio 的sdk)

    环境准备

    • docker-compose 文件
    version: "3"
    services:
      s3:
        image: minio/minio
        command: server /export
        ports:
        - "9000:9000"
        volumes:
          - ./data:/export
          - ./config:/root/.minio
        environment:
        - "MINIO_ACCESS_KEY=dalongdemo"
        - "MINIO_SECRET_KEY=dalongdemo"
    • s3 terraform 操作
      添加了依赖处理以及一个简单静态web 页面部署
    provider "s3" {
        s3_server = "localhost:9000"
        s3_access_key = "dalongdemo"
        s3_secret_key = "dalongdemo"
        s3_api_signature = "v4"
        s3_ssl = false
        s3_debug = true
    }
    
    resource "s3_bucket" "bucket_create" {
      bucket = "s3page"
    }
    
    resource "s3_file" "upload_index_page" {
        bucket = "s3page"
        name = "index.html"
        file_path = "./files/index.html"
        content_type = "text.html"
        debug = true
        depends_on = ["s3_bucket.bucket_create"]
    }
    
    resource "s3_file" "upload_user_js" {
        bucket = "s3page"
        name = "user.js"
        file_path = "./files/user.js"
        content_type = "application/javascript"
        debug = true
        depends_on = ["s3_bucket.bucket_create"]
    
    }

    部署

    • 插件准备
    我测试环境是mac,使用go get 安装provider,然后copy plugin 到tf 定义文件目录,注意需要创建目录
    mkdir -p ./.terraform/plugins/darwin_amd64/
    ./.terraform/plugins/darwin_amd64/
    • init
    terraform init
    • 查看plan
    terraform plan

    效果

    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      + s3_bucket.bucket_create
          id: <computed>
          bucket: "s3page"
          debug: "false"
    
      + s3_file.upload_index_page
          id: <computed>
          bucket: "s3page"
          content_type: "text.html"
          debug: "true"
          file_path: "./files/index.html"
          name: "index.html"
    
      + s3_file.upload_user_js
          id: <computed>
          bucket: "s3page"
          content_type: "application/javascript"
          debug: "true"
          file_path: "./files/user.js"
          name: "user.js"
    
    
    Plan: 3 to add, 0 to change, 0 to destroy.
    
    ------------------------------------------------------------------------
    
    Note: You didn't specify an "-out" parameter to save this plan, so Terraform
    can't guarantee that exactly these actions will be performed if
    "terraform apply" is subsequently run.
    • apply
    terraform apply

    效果

    An execution plan has been generated and is shown below.
    Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      + s3_bucket.bucket_create
          id: <computed>
          bucket: "s3page"
          debug: "false"
    
      + s3_file.upload_index_page
          id: <computed>
          bucket: "s3page"
          content_type: "text.html"
          debug: "true"
          file_path: "./files/index.html"
          name: "index.html"
    
      + s3_file.upload_user_js
          id: <computed>
          bucket: "s3page"
          content_type: "application/javascript"
          debug: "true"
          file_path: "./files/user.js"
          name: "user.js"
    
    
    Plan: 3 to add, 0 to change, 0 to destroy.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    s3_bucket.bucket_create: Creating...
      bucket: "" => "s3page"
      debug: "" => "false"
    s3_bucket.bucket_create: Creation complete after 0s
    s3_file.upload_index_page: Creating...
      bucket: "" => "s3page"
      content_type: "" => "text.html"
      debug: "" => "true"
      file_path: "" => "./files/index.html"
      name: "" => "index.html"
    s3_file.upload_user_js: Creating...
      bucket: "" => "s3page"
      content_type: "" => "application/javascript"
      debug: "" => "true"
      file_path: "" => "./files/user.js"
      name: "" => "user.js"
    s3_file.upload_index_page: Creation complete after 0s
    s3_file.upload_user_js: Creation complete after 0s
    
    Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
    • minio 界面
    • 设置浏览器访问
    • 直接访问

    说明

    terraform-provider-s3 功能还算不错,使用起来也比较简单,但是功能还不是很多,比如设置策略,配置通知。。。。,文件夹数据复制,
    桶数据复制,但是实现起来还是相对简单的,可以参考provider 开发

    参考资料

    https://github.com/negronjl/terraform-provider-s3
    https://github.com/rongfengliang/terraform-minio-s3-provider-demo

  • 相关阅读:
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    迷宫问题 POJ 3984
    UVA 820 Internet Bandwidth (因特网带宽)(最大流)
    UVA 1001 Say Cheese(奶酪里的老鼠)(flod)
    UVA 11105 Semiprime Hnumbers(H半素数)
    UVA 557 Burger(汉堡)(dp+概率)
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/10593722.html
Copyright © 2011-2022 走看看