Skip to content

Commit 68434ff

Browse files
committed
Update software versions and add CLAUDE.md
- Replace deprecated hashicorp/terraform-github-actions with setup-terraform@v3 - Upgrade actions/checkout@master to @v6 - Upgrade Terraform CLI 1.13.4 to 1.14.5 - Upgrade AWS provider 5.82.2 to 6.32.1 - Add CLAUDE.md for Claude Code guidance
1 parent 090acb1 commit 68434ff

3 files changed

Lines changed: 68 additions & 67 deletions

File tree

.github/workflows/terraform.yml

Lines changed: 16 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -8,66 +8,31 @@ jobs:
88
terraform-actions:
99
name: workflow
1010
runs-on: ubuntu-latest
11+
env:
12+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
13+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
14+
TF_VAR_ssh_authorized_key: ${{ secrets.TF_VAR_SSH_AUTHORIZED_KEY }}
15+
TF_VAR_acme_email: ${{ secrets.TF_VAR_ACME_EMAIL }}
1116
steps:
1217
- name: Checkout Repo
13-
uses: actions/checkout@master
18+
uses: actions/checkout@v6
1419

15-
- name: format
16-
uses: hashicorp/terraform-github-actions@master
20+
- name: Setup Terraform
21+
uses: hashicorp/setup-terraform@v3
1722
with:
18-
tf_actions_version: 1.13.4
19-
tf_actions_subcommand: 'fmt'
20-
tf_actions_working_dir: '.'
21-
tf_actions_comment: true
22-
env:
23-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
23+
terraform_version: 1.14.5
24+
25+
- name: format
26+
run: terraform fmt -check
2427

2528
- name: init
26-
uses: hashicorp/terraform-github-actions@master
27-
with:
28-
tf_actions_version: 1.13.4
29-
tf_actions_subcommand: 'init'
30-
tf_actions_working_dir: '.'
31-
tf_actions_comment: true
32-
env:
33-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
34-
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
35-
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
29+
run: terraform init
3630

3731
- name: validate
38-
uses: hashicorp/terraform-github-actions@master
39-
with:
40-
tf_actions_version: 1.13.4
41-
tf_actions_subcommand: 'validate'
42-
tf_actions_working_dir: '.'
43-
tf_actions_comment: true
44-
env:
45-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32+
run: terraform validate
4633

4734
- name: plan
48-
uses: hashicorp/terraform-github-actions@master
49-
with:
50-
tf_actions_version: 1.13.4
51-
tf_actions_subcommand: 'plan'
52-
tf_actions_working_dir: '.'
53-
tf_actions_comment: true
54-
env:
55-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
56-
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
57-
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
58-
TF_VAR_ssh_authorized_key: ${{ secrets.TF_VAR_SSH_AUTHORIZED_KEY }}
59-
TF_VAR_acme_email: ${{ secrets.TF_VAR_ACME_EMAIL }}
35+
run: terraform plan
6036

6137
- name: apply
62-
uses: hashicorp/terraform-github-actions@master
63-
with:
64-
tf_actions_version: 1.13.4
65-
tf_actions_subcommand: 'apply'
66-
tf_actions_working_dir: '.'
67-
tf_actions_comment: true
68-
env:
69-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
70-
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
71-
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
72-
TF_VAR_ssh_authorized_key: ${{ secrets.TF_VAR_SSH_AUTHORIZED_KEY }}
73-
TF_VAR_acme_email: ${{ secrets.TF_VAR_ACME_EMAIL }}
38+
run: terraform apply -auto-approve

.terraform.lock.hcl

Lines changed: 16 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CLAUDE.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
## Overview
6+
7+
Personal AWS infrastructure managed with Terraform. Single-environment deployment in eu-west-2 managing Route53 DNS and IAM for the `kombor.ski` domain.
8+
9+
## Commands
10+
11+
```bash
12+
terraform init # Initialize (S3 backend)
13+
terraform fmt # Format code
14+
terraform validate # Validate syntax
15+
terraform plan # Preview changes
16+
terraform apply # Deploy to AWS
17+
```
18+
19+
CI (GitHub Actions on push to main) runs: fmt → init → validate → plan → apply.
20+
21+
## Architecture
22+
23+
Flat Terraform layout, no modules or workspaces — all resources in root:
24+
25+
- **dns.tf** — Route53 hosted zone and DNS records for kombor.ski (internal services point to 172.31.255.3, external services via CNAMEs)
26+
- **users.tf** — IAM robot user for Traefik with scoped Route53 permissions (LetsEncrypt ACME DNS challenges)
27+
- **backend.tf** — S3 remote state (`infrastructure-tf-state` bucket)
28+
- **providers.tf** — AWS provider config
29+
- **variables.tf** — Input variables (`aws_region`)
30+
31+
## Key Details
32+
33+
- Terraform version: 1.13.4+ (pinned in CI)
34+
- AWS provider version pinned via `.terraform.lock.hcl` (committed)
35+
- Secrets (AWS creds, `TF_VAR_SSH_AUTHORIZED_KEY`, `TF_VAR_ACME_EMAIL`) are in GitHub Actions secrets, never in code
36+
- Dependabot updates Terraform providers and GitHub Actions daily

0 commit comments

Comments
 (0)