空でないバケツを削除する


空でない雲オブジェクト記憶(COS)バケツを取り除きます。Temformフォームを使用して、Minioクライアントを使用してクラウドオブジェクトストレージ(COS)バケツのすべてのオブジェクトを再帰的に削除します。


私は多くのファイルを格納するためにCloud Object Storage(cos)バケットを使用するユースケースに取り組んでいます.ユースケースのクラウドサービスプロビジョニングは、terraformスクリプトを使用します.タフフォームはterraform destroyを使ってcosバケットを削除することでした.バケツが空でないならば、破壊は失敗します.
terraformリソースがforce delete = true属性をサポートしていない場合や、属性を使用しない場合のみこの回避策を使用します.
Jeremy McKnightによるUnsplash写真
そこで、私はterraformで使用するオプションを探し始め、オープンソースMinIO clientを思い出しました.

MinIO is a High-Performance Object Storage released under Apache License v2.0. It is API compatible with Amazon S3 cloud storage service. Use MinIO to build high-performance infrastructure for machine learning, analytics and application data workloads.


しかし、ここでの課題は、私はMinioクライアントをterraform破壊だけを使用したいです.ここでは、救出にterraform破壊プロビジョナーが来る
if = destroyを指定すると、リソースが定義されているときにプロビジョナーが実行されます.
resource "cos_instance" "cos" {
  # ...

  provisioner "local-exec" {
    when      = destroy
    command   = "echo 'Destroy-time provisioner'"
  }
}

Destroy provisioners are run before the resource is destroyed. If they fail, Terraform will error and rerun the provisioners again on the next terraform apply. Due to this behaviour, care should be taken to destroy provisioners to be safe to run multiple times.


これは素晴らしいです.私は、私がすべて設定されて、ロックンn - rollに準備ができていると思いました.しかし、私は、ロードブロックをヒット — 環境変数を破壊プロビジョナーで設定することはできず、MINOはHMAC資格情報とバケツ名を予想します.
私がこれをどのようにひび割れたかを見るために、メインをチェックしてください.githubリポジトリのtfファイル
  • は、COSを展開するためにrepositoryをクローンします
  •  git clone https://github.com/VidyasagarMSC/cos-object-cleanup.git
    
  • terraformを作成します.テンプレートからのtfvarsファイルと詳細をファイルを更新します
  • cp terraform.tfvars.template terraform.tfvars
    
  • Torraformコマンドを実行する
  • terraform init 
    
    terraform apply
    

    破壊する


    terraform destroy
    
    現在、シェルスクリプトのために必要な環境変数を設定するために、null_resourceをトリガーとして使用していることがわかります.また、local_fileを使用して、その場でシェルスクリプトを生成することもできます.
    回避策があなたのために働いた場合、ドロップすることを忘れないでください🌟Githubレポと👏 この記事のために.

    If you see an error, feel free to open an issue in the GitHub repository.