Categorygithub.com/takaishi/tfclean
modulepackage
0.0.7
Repository: https://github.com/takaishi/tfclean.git
Documentation: pkg.go.dev

# README

tfclean

Install

go install github.com/takaishi/tfclean/cmd/tfclean

Usage

Remove all moved/import/removed blocks.

% tfclean /path/to/tffiles

Remove moved/import/removed blocks that is applied.

% AWS_PROFILE=xxxxxxx tfclean --tfstate s3://path/to/tfstate /path/to/tffiles

Features

  • Blocks
    • Remove moved blocks that is applied.
    • Remove import blocks that is applied.
    • Remove removed blocks that is applied.
    • Forcefully remove all moved/import/removed blocks.
  • Confirm block is already applied or not to read tfstate (provided by https://github.com/fujiwara/tfstate-lookup)

GitHub Actions

This is example of GitHub Actions for creating automatically pull request with tfclean. I recommend to use GitHub App to generate token.

name: tfclean

on:
  push:
    branches:
      - main

permissions:
  pull-requests: write # This is required for creating pull request for auto-remove blocks by tfclean

jobs:
  tfclean:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - uses: actions/create-github-app-token@v1
        id: app-token
        with:
          app-id: ${{ secrets.GITHUB_APP_ID }}
          private-key: ${{ secrets.GITHUB_APP_PRIVATE_KEY }}
      - uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: "aws_role_arn_for_oidc"
          aws-region: "ap-northeast-1"
      - name: install tfclean
        run: |
          cd /tmp/
          curl -sL https://github.com/takaishi/tfclean/releases/download/v0.0.3/tfclean_Linux_x86_64.tar.gz --output tfclean_Linux_x86_64.tar.gz
          tar xvzf ./tfclean_Linux_x86_64.tar.gz
          sudo mv tfclean /usr/local/bin/
      - name: run tfclean
        run: /usr/local/bin/tfclean --tfstate s3://path/to/tfstate .
      - name: Check changes
        id: diff-check
        run: git diff --exit-code || echo "changes_detected=true" >> $GITHUB_OUTPUT
      - name: Commit changes
        if: steps.diff-check.outputs.changes_detected == 'true'
        run: |
          echo steps.diff-check.outputs.changes_detected: ${{ steps.diff-check.outputs.changes_detected }}
          branch_name=tfclean_$(date +"%Y%m%d%H%M")
          git switch -c ${branch_name}
          git config --global user.email "EMAIL"
          git config --global user.name "NAME"
          git add .
          git diff --cached --exit-code || (git commit -m "chore: auto-remove blocks by tfclean" && git push origin ${branch_name})
          gh pr create --base staging --head ${branch_name} --title "auto-remove blocks by tfclean" --body ""
        env:
          GH_TOKEN: ${{ steps.app-token.outputs.token }}

# Packages

No description provided by the author

# Functions

No description provided by the author
No description provided by the author

# Variables

No description provided by the author
No description provided by the author

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Type aliases

No description provided by the author