From devops-skills
Analyzes Terraform provider and module upgrades for breaking changes, deprecations, and migration requirements. Guides through changelog review, code scanning, and impact assessment.
How this skill is triggered — by the user, by Claude, or both
Slash command
/devops-skills:provider-upgrade-analysisThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze the impact of upgrading Terraform providers or modules before making changes. Identify breaking changes, deprecations, and required code modifications.
Analyze the impact of upgrading Terraform providers or modules before making changes. Identify breaking changes, deprecations, and required code modifications.
Announce at start: "I'm using the provider-upgrade-analysis skill to assess this upgrade."
# Current Terraform version
terraform version
# Current provider versions
terraform providers
# Lock file details
cat .terraform.lock.hcl
Determine what version to upgrade to:
For each provider/module upgrade:
# Check CHANGELOG
# https://github.com/hashicorp/terraform-provider-aws/blob/main/CHANGELOG.md
# Check UPGRADE guide for major versions
# https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/version-5-upgrade
| Provider | Changelog Location | Upgrade Guide |
|---|---|---|
| AWS | GitHub CHANGELOG.md | /docs/guides/version-X-upgrade |
| Azure | GitHub CHANGELOG.md | /docs/guides/X.0-upgrade-guide |
| GitHub CHANGELOG.md | /docs/guides/version_X_upgrade |
| Category | Impact | Example |
|---|---|---|
| Removed Resources | HIGH | Resource type no longer exists |
| Removed Arguments | HIGH | Required attribute removed |
| Changed Defaults | MEDIUM | Default value changed |
| Renamed Resources | MEDIUM | Resource renamed, state migration needed |
| New Required Args | MEDIUM | New required argument added |
| Deprecations | LOW | Will be removed in future |
Search for affected resources/attributes:
# Find usage of deprecated resource
grep -r "aws_deprecated_resource" --include="*.tf"
# Find usage of removed argument
grep -r "removed_argument" --include="*.tf"
Query memory/global/provider-issues.json for:
## Provider Upgrade Analysis
### Summary
| Provider | Current | Target | Risk Level |
|----------|---------|--------|------------|
| aws | 4.67.0 | 5.0.0 | HIGH |
### Breaking Changes
#### 1. [Change Name]
- **Type:** Removed Argument
- **Affected Resource:** `aws_instance`
- **Attribute:** `ebs_optimized` default changed
- **Impact:** Instances may change on next apply
- **Required Action:** Explicitly set `ebs_optimized = true`
- **Files Affected:**
- `modules/compute/main.tf:45`
- `environments/prod/instances.tf:23`
#### 2. [Change Name]
...
### Deprecations (Future Concern)
| Resource/Attribute | Deprecated In | Removed In | Replacement |
|-------------------|---------------|------------|-------------|
| `aws_old_thing` | 4.50.0 | 5.0.0 | `aws_new_thing` |
### State Migration Required
- [ ] Resource `aws_old` → `aws_new` requires state mv
- [ ] [Other migrations]
### Recommended Upgrade Path
1. **Backup state**
```bash
terraform state pull > backup-$(date +%Y%m%d).tfstate
Update version constraint
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
Run init
terraform init -upgrade
Apply code changes [List of required changes]
Run plan
terraform plan
Review and apply [After careful review]
| Factor | Assessment |
|---|---|
| Breaking changes | X items |
| State migrations | Y required |
| Code changes | Z files |
| Estimated effort | [Low/Medium/High] |
| Recommended timing | [Now/After testing/Wait] |
[From memory or research]
### Step 7: Update Memory
Store findings in `memory/global/provider-issues.json`:
```json
{
"aws": {
"5.0.0": {
"known_issues": [...],
"upgrade_notes": [...],
"last_updated": "2024-01-15"
}
}
}
Before recommending upgrade:
npx claudepluginhub joshuarweaver/cascade-code-devops-misc-1 --plugin lgbarn-devops-skillsGuides Terraform version upgrades: identifies deprecated syntax, updates providers, migrates breaking changes. Includes checklists, bash commands, and troubleshooting for safe upgrades.
Provides current Terraform/OpenTofu compatibility guidance covering HCL, state, modules, providers, testing, stacks, and CLI changes across versions 1.7–1.15 and 1.7–1.12 respectively.
Diagnoses Terraform/OpenTofu failures (identity churn, secrets, blast radius, CI drift, state corruption) with version-aware guards and a structured response contract.