Skip to content

Commit 7ecf9e2

Browse files
committed
docs: remove one-off import runbook from README
1 parent 21ef3b1 commit 7ecf9e2

1 file changed

Lines changed: 0 additions & 120 deletions

File tree

terraform/README.md

Lines changed: 0 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -147,126 +147,6 @@ terraform plan
147147
terraform apply
148148
```
149149

150-
## Importing existing AWS resources
151-
152-
Use this flow when your remote state is empty but AWS infrastructure already exists.
153-
154-
- Do **not** run `terraform apply` until imports are complete and `terraform plan` is clean.
155-
- Ensure Terraform variables match the values used when the infrastructure was originally created.
156-
157-
<details>
158-
<summary>Discover resource IDs with AWS CLI</summary>
159-
160-
```bash
161-
REGION=eu-central-1
162-
CLUSTER=sandbox-eks
163-
164-
# VPC
165-
aws ec2 describe-vpcs --region "$REGION" \
166-
--filters "Name=tag:Name,Values=${CLUSTER}-vpc" \
167-
--query 'Vpcs[0].VpcId' --output text
168-
169-
# Internet Gateway
170-
aws ec2 describe-internet-gateways --region "$REGION" \
171-
--filters "Name=tag:Name,Values=${CLUSTER}-igw" \
172-
--query 'InternetGateways[0].InternetGatewayId' --output text
173-
174-
# Subnets (public + private)
175-
aws ec2 describe-subnets --region "$REGION" \
176-
--filters "Name=tag:Name,Values=${CLUSTER}-public-*" \
177-
--query 'Subnets[].{id:SubnetId,az:AvailabilityZone,name:Tags[?Key==`Name`]|[0].Value}' --output table
178-
179-
aws ec2 describe-subnets --region "$REGION" \
180-
--filters "Name=tag:Name,Values=${CLUSTER}-private-*" \
181-
--query 'Subnets[].{id:SubnetId,az:AvailabilityZone,name:Tags[?Key==`Name`]|[0].Value}' --output table
182-
183-
# EIP, NAT Gateway, Route Tables
184-
aws ec2 describe-addresses --region "$REGION" \
185-
--filters "Name=tag:Name,Values=${CLUSTER}-nat-eip" \
186-
--query 'Addresses[0].AllocationId' --output text
187-
188-
aws ec2 describe-nat-gateways --region "$REGION" \
189-
--filter "Name=tag:Name,Values=${CLUSTER}-nat" \
190-
--query 'NatGateways[0].NatGatewayId' --output text
191-
192-
aws ec2 describe-route-tables --region "$REGION" \
193-
--filters "Name=tag:Name,Values=${CLUSTER}-public-rt" \
194-
--query 'RouteTables[0].RouteTableId' --output text
195-
196-
aws ec2 describe-route-tables --region "$REGION" \
197-
--filters "Name=tag:Name,Values=${CLUSTER}-private-rt" \
198-
--query 'RouteTables[0].RouteTableId' --output text
199-
200-
# EKS cluster, node groups, addons
201-
aws eks describe-cluster --region "$REGION" --name "$CLUSTER" \
202-
--query 'cluster.name' --output text
203-
204-
aws eks list-nodegroups --region "$REGION" --cluster-name "$CLUSTER"
205-
aws eks list-addons --region "$REGION" --cluster-name "$CLUSTER"
206-
207-
# IAM roles
208-
aws iam get-role --role-name "${CLUSTER}-cluster-role" --query 'Role.RoleName' --output text
209-
aws iam get-role --role-name "${CLUSTER}-node-role" --query 'Role.RoleName' --output text
210-
```
211-
212-
</details>
213-
214-
<details>
215-
<summary>Import commands by Terraform file</summary>
216-
217-
### Networking (`vpc.tf`)
218-
219-
```bash
220-
terraform import aws_vpc.this <vpc-id>
221-
terraform import aws_internet_gateway.this <igw-id>
222-
terraform import 'aws_subnet.public[0]' <subnet-id>
223-
terraform import 'aws_subnet.public[1]' <subnet-id>
224-
terraform import 'aws_subnet.private[0]' <subnet-id>
225-
terraform import 'aws_subnet.private[1]' <subnet-id>
226-
terraform import aws_eip.nat <eipalloc-id>
227-
terraform import aws_nat_gateway.this <nat-id>
228-
terraform import aws_route_table.public <rtb-id>
229-
terraform import aws_route_table.private <rtb-id>
230-
terraform import 'aws_route_table_association.public[0]' <subnet-id>/<rtb-id>
231-
terraform import 'aws_route_table_association.public[1]' <subnet-id>/<rtb-id>
232-
terraform import 'aws_route_table_association.private[0]' <subnet-id>/<rtb-id>
233-
terraform import 'aws_route_table_association.private[1]' <subnet-id>/<rtb-id>
234-
```
235-
236-
### IAM (`iam.tf`)
237-
238-
```bash
239-
terraform import aws_iam_role.eks_cluster sandbox-eks-cluster-role
240-
terraform import aws_iam_role.node_group sandbox-eks-node-role
241-
terraform import aws_iam_role_policy_attachment.eks_cluster_policy \
242-
'sandbox-eks-cluster-role/arn:aws:iam::aws:policy/AmazonEKSClusterPolicy'
243-
terraform import aws_iam_role_policy_attachment.node_group_worker_policy \
244-
'sandbox-eks-node-role/arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy'
245-
terraform import aws_iam_role_policy_attachment.node_group_cni_policy \
246-
'sandbox-eks-node-role/arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy'
247-
terraform import aws_iam_role_policy_attachment.node_group_ecr_readonly \
248-
'sandbox-eks-node-role/arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly'
249-
```
250-
251-
### EKS (`eks.tf`)
252-
253-
```bash
254-
terraform import aws_eks_cluster.this sandbox-eks
255-
terraform import aws_eks_node_group.this sandbox-eks:sandbox-eks-nodes
256-
terraform import aws_eks_addon.coredns sandbox-eks:coredns
257-
terraform import aws_eks_addon.kube_proxy sandbox-eks:kube-proxy
258-
terraform import aws_eks_addon.vpc_cni sandbox-eks:vpc-cni
259-
```
260-
261-
</details>
262-
263-
After importing, run `terraform plan` and confirm the result is ideally a no-op.
264-
265-
Common post-import issues:
266-
267-
- Subnet index/AZ mismatch can cause Terraform to propose subnet recreation; fix by swapping imported subnet indices (`public[0]`/`public[1]`, `private[0]`/`private[1]`) to match Terraform's AZ ordering.
268-
- EKS add-on configuration drift may still appear depending on AWS-managed defaults; review and reconcile intentionally.
269-
270150
## Configure kubectl
271151

272152
After `terraform apply`, run the command from the Terraform output:

0 commit comments

Comments
 (0)