์๋
ํ์ธ์
์ค๋์ ํ
๋ผํผ์ ํ์ฉํ์ฌ ํ
๋ผํผ์ด ์๋ ๋ฐฉ์์ผ๋ก ์์ฑ๋ ๋ฆฌ์์ค๋ tfstate ํ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ terraform import ๊ธฐ๋ฅ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
์ฃผ์ ์ฃผ์
์ด ๊ธฐ๋ฅ์ ์ฐพ๊ธฐ๊น์ง ํ๋ํ ์ฌ์ ์ ํผ์น ๋ด์ฉ์ ์ฃผ์ ๊ฑฐ๋ ค๋ณด๊ฒ ์ต๋๋ค.
์ธํ๋ผ ๋ฆฌ์์ค๋ฅผ ์ด์ ๋ฐ ๊ด๋ฆฌํ๋ค ๋ณด๋ฉด ๊ณผ๊ฑฐ์ ์์ฑ๋ ๋ ๊ฑฐ์ ๋ฆฌ์์ค์ ํ์ฌ ์์ฑ๋ ๋ฆฌ์์ค๊ฐ ๋ชจ๋ ๊ณต์กดํ๊ฒ ๋๋๋๋๋ค.
๋ ๊ฑฐ์๋๊ฒ์... ๋ก์ปฌ์์ cli๋ก ์์ฑํ ๋ฆฌ์์ค๋ ํธ๋ผ์ด์ฆ ์ฝ์์์ ์์ฑํ ๋ฆฌ์์ค ๊ฐ์... ๋ญ ์ด๊ฒ์ ๊ฒ ๋ฑ๋ฑ์ด์
์ด ๊ฒฝ์ฐ ํํฉ ๊ด๋ฆฌ๊ฐ ์ฐธ ์ด๋ ต๋๋ผ๊ตฌ์ ...
๊ทธ๋์ ํ
๋ผํผ ์ด์ ์ ์ฐ์ด๋ธ ๋ฆฌ์์ค๋ฅผ ์ด๋ป๊ฒ ํ
๋ผํผ์ด ๊ด๋ฆฌํ๊ฒ ๋ง๋ค ์ ์์ง๋ฅผ ์ฐพ์๋ณด๋ค๊ฐ GCP์์ ๋ง๋ terraformer๋ผ๋ ๋ฐฉ์๋ ํ
์คํธํด๋ณด์์ต๋๋ค.
https://github.com/GoogleCloudPlatform/terraformer
ํ
๋ผํฌ๋จธ์ ๊ฒฝ์ฐ ์คํ์คํ ์ปดํจํธ, ๋ธ๋ก์คํ ๋ฆฌ์ง, ๋คํธ์ํน 3๊ฐ์ง ๋ฆฌ์์ค๋ฅผ ๋ณํํ๋ ๊ฒ์ ์ง์ํ๋ค๊ณ ๋์์์ง๋ง ์ปดํจํธ์ ๊ฒฝ์ฐ ๋ณํ์ด ์๋ฉ๋๋ค! (panic error๋ฅผ ๋ง์ฃผ์นจ)
aws๋ก ์ฐ์๋ ๋ถ๋ค์ ์ ๋ ๊ฒ ๊ฐ๋ค์ ์๋ง.. ๋ฐํํ
๊ณ ๋ฏผ์ ๊ณ์ํ๋ค terraform์์ import๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๋ ๋ฌธ์๋ฅผ ์ฝ์์ต๋๋ค.
https://developer.hashicorp.com/terraform/cli/import
ํ์ง๋ง ๊ณง ๋๊ด์ ๋์ฐฉํฉ๋๋ค.
์ ์คํ์คํ์ terraform import๋ฅผ ์๋ฌด๋ ์์ผ์๊น์...
๋ค ์๋ฌดํผ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ฐพ์๋ด์ด ์ ์ ๊ฐ์ ๊ณ ๋ฏผ์ ํ์๋ ๋ถ๋ค๊ป ๋์์ด ๋๋ฉด ์ข์ ๊ฒ ๊ฐ์ ์๋ฆฌ์กฐ๋ฆฌ ์ ๋ฆฌํด๋ณด์์ต๋๋ค.
Terraform import๊ฐ ๋ฌด์์ ํ๋๋
terraform import๋ ๊ธฐ์กด์ ์ธํ๋ผ ๋ฆฌ์์ค๋ฅผ Terraform ์ํ ํ์ผ๋ก ๊ฐ์ ธ์ค๋ ๋ช
๋ น์ด์
๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ ํ๋ก๋น์ ๋๋ ์ธํ๋ผ๋ฅผ Terraform์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋๋๋ฐ์ ๊ธฐ์กด ์ธํ๋ผ ๋ฆฌ์์ค๋ฅผ ์๋ก ๋ง๋ค์ง ์๊ณ , ํ์ฌ ์ํ๋ฅผ Terraform์ ์ํ ํ์ผ(terraform.tfstate)์ ๊ธฐ๋กํ์ฌ Terraform์ด ๊ทธ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค.
Terraform Import์ ์ฃผ์ ๊ธฐ๋ฅ
- ๊ธฐ์กด ๋ฆฌ์์ค๋ฅผ Terraform ์ํ์ ์ถ๊ฐ: ์ด๋ฏธ ํ๋ก๋น์ ๋๋ ์ธํ๋ผ๋ฅผ ๊ฑด๋ค์ง ์์ต๋๋ค. Terraform ์ํ ํ์ผ์ ํด๋น ๋ฆฌ์์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ์กด ๋ฆฌ์์ค๊ฐ Terraform ์ฝ๋๋ก ๊ด๋ฆฌ๋ ์ ์๋๋ก ํฉ๋๋ค.
- ๋ฆฌ์์ค๋ฅผ ํ๊ดดํ์ง ์๊ณ ๊ด๋ฆฌ ๊ฐ๋ฅ: terraform import๋ ๋ฆฌ์์ค๋ฅผ ํ๊ดดํ๊ฑฐ๋ ๋ค์ ํ๋ก๋น์ ๋ํ์ง ์์ต๋๋ค.(ํด) ์ด๋ฏธ ์กด์ฌํ๋ ๋ฆฌ์์ค๋ฅผ Terraform์ ๊ด๋ฆฌ ํ์ ๋๊ธฐ๋ง ํฉ๋๋ค. ์ดํ terraform plan๊ณผ terraform apply๋ฅผ ํตํด Terraform์ด ๋ฆฌ์์ค ์ํ์ ์ฝ๋ ๊ฐ์ ์ฐจ์ด๋ฅผ ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
- ์ฌ๋ฌ ๋ฆฌ์์ค ์ง์: ์ ๋ ์คํ์คํ์ ์ฌ์ฉํ์์ง๋ง AWS, Azure, GCP, ncloud ๋ฑ ์ฌ๋ฌ ํด๋ผ์ฐ๋์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๊ณ ํฉ๋๋ค.
์ค์น
Terraform 1.9.7
terraform import ๊ธฐ๋ฅ์ ํ
๋ผํผ 1.5.0 ์ด์๋ถํฐ ์ง์ํฉ๋๋ค. ์ ๋ ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ผ๋ก ๊ฒํ์ต๋๋ค.
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform
openstack terraform provider v3.0.0
ํ๋ก๋ฐ์ด๋๋ ์ผ์ฃผ์ผ ์ ์ ์ต์ ๋ฒ์ ์ด ๋์์ ๋จ๋๋จ๋ํด์ ๊ฒํ์ต๋๋ค.
wget https://github.com/terraform-provider-openstack/terraform-provider-openstack/releases/download/v3.0.0/terraform-provider-openstack_3.0.0_linux_amd64.zip
unzip terraform-provider-openstack_3.0.0_linux_amd64.zip
terraform import ํ์ผ ๊ตฌ์กฐ
ํ์ผ ๊ตฌ์กฐ์ ๊ฒฝ์ฐ ์ ๋ ์ค์ ํ์ผ, ๋ฆฌ์์ค ํ์ผ๋ก ๊ตฌ๋ถํ์ต๋๋ค. ๋ฆฌ์์ค์ ๊ฒฝ์ฐ ์ถํ ์ํฉ์ ๋ง๊ฒ ํ๊ฒฝ๋ณ๋ก ๋
ผ๋ฆฌ์ ์ผ๋ก ๋๋์ด ์ฐ์๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๐ ํ
๋ผํผ ํด๋
ใด provider.tf # ํด๋ผ์ฐ๋ ์ค์ ์ ๊ณต ํ์ผ
ใด resource.tf # ์ธ์คํด์ค ๋ฆฌ์์ค ์ ์ ํ์ผ
# provider.tf
terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = ">=3.0.0"
}
}
}
provider "openstack" {
auth_url = "http://[openstack controller ip]:5000/v3"
region = "RegionOne"
domain_name = "Default"
user_name = "[user account]"
password = "[user password]"
tenant_name = "[project name]"
}
# resource.tf
resource "openstack_compute_instance_v2" "test" {}
resource "openstack_compute_instance_v2" "test2" {}
ํ์ผ์ด ๋ค ๊ตฌ์ฑ๋์๋ค๋ฉด ์ดํ ์๋ ๋จ๊ณ๋ฅผ ์งํํฉ๋๋ค.
terraform init
terraform import openstack_compute_instance_v2.test <instance id>
terraform import openstack_compute_instance_v2.test2 <instance id>
์ดํ tfstate ํ์ผ๋ก ์์๊ฒ ์ ๋ง๋ค์ด์ง ํ์ผ์ ํ์ธํ ์ ์์ต๋๋ค.
'Infra > OpenStack' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[IaC] OpenTofu with GitLab #2 ์คํ์คํ ์ธ์คํด์ค ํ์ดํ๋ผ์ธ ์ค๊ณ (1) | 2024.11.21 |
---|---|
[OpenStack] NUMA๋ ๋ฌด์์ธ๊ฐ (2) | 2024.10.25 |
[IaC] OpenTofu with GitLab #1 (1) | 2024.10.07 |
ํ์ดํผ๋ฐ์ด์ ๊ฐ์ํ ๊ธฐ์ (1) | 2024.03.08 |