Terraform là một công cụ phối hợp sử dụng mã khai báo để xây dựng, thay đổi và tạo phiên bản cơ sở hạ tầng bao gồm các phiên bản máy chủ và dịch vụ. Bạn có thể sử dụng nhà cung cấp Terraform chính thức của Linode để tương tác với các dịch vụ Linode. Cơ sở hạ tầng Linode hiện có có thể được nhập và đưa vào quản lý Terraform. Hướng dẫn này mô tả cách nhập cơ sở hạ tầng Linode hiện có vào Terraform bằng plugin nhà cung cấp Linode chính thức.
Ghi chú: Nhà cung cấp Linode của Terraform đã được cập nhật và hiện yêu cầu Terraform phiên bản 0.12 trở lên. Để tìm hiểu cách nâng cấp an toàn lên Terraform phiên bản 0.12 trở lên, hãy xem tài liệu chính thức của Terraform . Xem nhật ký thay đổi của Terraform v0.12 để biết danh sách đầy đủ các tính năng mới và ghi chú về sự không tương thích của phiên bản.
Trước khi bạn bắt đầu
- Terraform và nhà cung cấp Linode Terraform phải được cài đặt trong môi trường phát triển của bạn. Bạn cũng phải có hiểu biết cơ bản về tài nguyên Terraform . Để cài đặt và tìm hiểu về Terraform, hãy đọc hướng dẫn Sử dụng Terraform để cung cấp môi trường Linode của chúng tôi .
- Để sử dụng Terraform, bạn phải có mã thông báo truy cập API hợp lệ. Để biết thêm thông tin về cách tạo mã thông báo truy cập API Linode, hãy truy cập hướng dẫn Bắt đầu với API Linode của chúng tôi .
- Hướng dẫn này sử dụng Linode CLI để lấy thông tin về cơ sở hạ tầng Linode mà bạn nhập vào Terraform. Để biết thêm thông tin về thiết lập, cài đặt và sử dụng Linode CLI, hãy xem hướng dẫn Sử dụng Linode CLI .
Lệnh nhập của Terraform
Trong suốt hướng dẫn này, terraform import
lệnh được sử dụng để nhập tài nguyên Linode. Tại thời điểm viết hướng dẫn này, lệnh import không tạo cấu hình tài nguyên Terraform . Thay vào đó, nó nhập tài nguyên hiện có của bạn vào trạng thái của Terraform .
State là bản đồ JSON được lưu trữ của Terraform về tài nguyên Linode hiện tại của bạn với cấu hình của chúng. Bạn có thể truy cập và sử dụng thông tin do state cung cấp để tạo thủ công tệp cấu hình tài nguyên tương ứng và quản lý cơ sở hạ tầng Linode hiện tại của bạn bằng Terraform.
Ngoài ra, hiện tại không có cách nào để nhập nhiều hơn một tài nguyên cùng một lúc. Tất cả các tài nguyên phải được nhập riêng lẻ .
Quan trọng: Khi nhập cơ sở hạ tầng của bạn vào Terraform, việc không cung cấp chính xác thông tin ID của dịch vụ Linode có thể dẫn đến việc thay đổi hoặc phá hủy dịch vụ không mong muốn. Vui lòng làm theo hướng dẫn được cung cấp trong hướng dẫn này một cách cẩn thận. Có thể có lợi khi sử dụng nhiều Terraform Workspace để quản lý các cơ sở hạ tầng thử nghiệm và sản xuất riêng biệt.
Nhập Linode vào Terraform
Lấy lại ID Linode của bạn
Sử dụng Linode CLI, truy xuất danh sách tất cả các phiên bản Linode của bạn và tìm ID của Linode mà bạn muốn quản lý trong Terraform:
linode-cli linodes list --json --pretty
[
{
"id": 11426126,
"image": "linode/debian9",
"ipv4": [
"192.0.2.2"
],
"label": "terraform-import",
"region": "us-east",
"status": "running",
"type": "g6-standard-1"
}
]
- Lệnh này sẽ trả về danh sách các Linode hiện có của bạn ở định dạng JSON. Từ danh sách, hãy tìm Linode bạn muốn nhập và sao chép xuống . tương ứng của nó
id
. Trong ví dụ này, ID của Linode là11426126
. Bạn sẽ sử dụng ID của Linode để nhập Linode vào Terraform.
Tạo cấu hình tài nguyên trống
1.Đảm bảo bạn đang ở trong thư mục dự án Terraform của mình . Tạo tệp cấu hình Terraform để quản lý phiên bản Linode mà bạn nhập trong phần tiếp theo. Tệp của bạn có thể được đặt tên bất kỳ, nhưng phải kết thúc bằng .tf
. Thêm khối nhà cung cấp Linode với mã thông báo truy cập API của bạn và linode_instance
khối cấu hình tài nguyên trống trong tệp:
Ghi chú: Khối tài nguyên mẫu được định nghĩa example_label
là nhãn. Có thể thay đổi thành bất kỳ giá trị nào bạn thích. Nhãn này được sử dụng để tham chiếu cấu hình tài nguyên Linode của bạn trong Terraform. Nó không nhất thiết phải là nhãn ban đầu được gán cho Linode khi nó được tạo bên ngoài Terraform.
provider "linode" {
token = "your_API_access_token"
}
resource "linode_instance" "example_label" {}
Nhập Linode của bạn vào Terraform
1.Chạy import
lệnh, cung cấp linode_instance
nhãn tài nguyên và ID Linode được lấy trong phần Lấy ID Linode của bạn :
terraform import linode_instance.example_label linodeID
Bạn sẽ thấy kết quả tương tự:
linode_instance.example_label: Importing from ID "11426126"...
linode_instance.example_label: Import complete!
Imported linode_instance (ID: 11426126)
linode_instance.example_label: Refreshing state... (ID: 11426126)
Import successful!
The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.
Lệnh này sẽ tạo một terraform.tfstate
tệp có thông tin về Linode của bạn. Bạn sẽ sử dụng thông tin này để điền vào cấu hình tài nguyên của mình.
2.Để xem thông tin được tạo bởi terraform import
, hãy chạy show
lệnh. Lệnh này hiển thị danh sách các cặp khóa-giá trị biểu diễn thông tin về phiên bản Linode đã nhập.
terraform show
Bạn sẽ thấy kết quả tương tự như sau:
resource "linode_instance" "example_label" {
backups = [
{
enabled = null
schedule = null
},
]
boot_config_label = "My Debian 9 Disk Profile"
id = "15375361"
ip_address = "97.107.128.70"
ipv4 = [
"97.107.128.70",
]
ipv6 = "2600:3c03::f03c:91ff:fee3:8deb/64"
label = "terraform-import"
private_ip = false
region = "us-east"
specs = [
{
disk = 51200
memory = 2048
transfer = 2000
vcpus = 1
},
]
status = "running"
swap_size = 512
tags = []
type = "g6-standard-1"
watchdog_enabled = true
alerts {
cpu = 90
io = 10000
network_in = 10
network_out = 10
transfer_quota = 80
}
config {
kernel = "linode/grub2"
label = "My Debian 9 Disk Profile"
memory_limit = 0
root_device = "/dev/sda"
run_level = "default"
virt_mode = "paravirt"
devices {
sda {
disk_id = 31813343
disk_label = "Debian 9 Disk"
volume_id = 0
}
sdb {
disk_id = 31813344
disk_label = "512 MB Swap Image"
volume_id = 0
}
}
helpers {
devtmpfs_automount = true
distro = true
modules_dep = true
network = true
updatedb_disabled = true
}
}
disk {
authorized_keys = []
authorized_users = []
filesystem = "ext4"
id = 31813343
label = "Debian 9 Disk"
read_only = false
size = 50688
stackscript_data = (sensitive value)
stackscript_id = 0
}
disk {
authorized_keys = []
authorized_users = []
filesystem = "swap"
id = 31813344
label = "512 MB Swap Image"
read_only = false
size = 512
stackscript_data = (sensitive value)
stackscript_id = 0
}
timeouts {}
}
- Bạn sử dụng thông tin này ở phần tiếp theo.
Điền dữ liệu cấu hình Linode của bạn
Như đã đề cập trong phần Lệnh nhập của Terraform , bạn phải tự tạo cấu hình tài nguyên khi nhập cơ sở hạ tầng hiện có.
1.Điền các giá trị cấu hình cho linode_instance
khối tài nguyên. Trong ví dụ bên dưới, các giá trị cần thiết được thu thập từ đầu ra của terraform show
lệnh được áp dụng trong Bước 2 của phần Nhập Linode của bạn vào Terraform . Các bình luận của tệp chỉ ra các khóa tương ứng được sử dụng để xác định các giá trị cho khối linode_instance
cấu hình.
provider "linode" {
token = "a12b3c4e..."
}
resource "linode_instance" "example_label" {
label = "terraform-import" #label
region = "us-east" #region
type = "g6-standard-1" #type
config {
label = "My Debian 9 Disk Profile" #config.label
kernel = "linode/grub2" #config.kernel
root_device = "/dev/sda" #config.root_device
devices {
sda {
disk_label = "Debian 9 Disk" #config.devices.sda.disk_label
}
sdb {
disk_label = "512 MB Swap Image" #config.devices.sdb.disk_label
}
}
}
disk {
label = "Debian 9 Disk" #disk.label (filesystem = "ext4")
size = "50688" #disk.size
}
disk {
label = "512 MB Swap Image" #disk.1.label (filesystem = "swap")
size = "512" #disk.1.size
}
}
Ghi chú: Nếu Linode của bạn sử dụng nhiều hơn hai đĩa (ví dụ, nếu bạn đã đính kèm một Block Storage Volume ), bạn cần thêm các đĩa đó vào khối cấu hình tài nguyên Linode của mình. Để thêm một đĩa, bạn phải thêm đĩa vào devices
khổ và tạo một disk
khổ bổ sung.
Ghi chú
Nếu bạn có nhiều hơn một cấu hình , bạn phải chọn cấu hình nào để khởi động bằng boot_config_label
khóa. Ví dụ:
resource "linode_instance" "example_label" {
boot_config_label = "My Debian 9 Disk Profile"
...
2.Để kiểm tra lỗi trong cấu hình của bạn, hãy chạy plan
lệnh:
terraform plan
terraform plan
cho bạn thấy những thay đổi sẽ diễn ra nếu bạn áp dụng cấu hình với terraform apply
. Chạy terraform plan
là một cách tốt để xác định xem cấu hình bạn cung cấp có đủ chính xác để Terraform tiếp quản việc quản lý Linode của bạn hay không.
Quan trọng: Running terraform plan
sẽ hiển thị bất kỳ thay đổi nào được áp dụng cho cơ sở hạ tầng hiện tại của bạn dựa trên tệp cấu hình của bạn. Tuy nhiên, bạn sẽ không được thông báo về việc thêm và xóa đĩa bằng terraform plan
. Vì lý do này, điều quan trọng là các giá trị bạn đưa vào linode_instance
khối cấu hình tài nguyên của mình phải khớp với các giá trị được tạo ra từ việc chạy terraform show
lệnh.
3.Sau khi bạn đã xác minh các cấu hình bạn cung cấp trong linode_instance
khối tài nguyên, bạn đã sẵn sàng để bắt đầu quản lý phiên bản Linode của mình bằng Terraform. Bất kỳ thay đổi hoặc cập nhật nào cũng có thể được thực hiện bằng cách:
linode_instance_import.tf
đang cập nhật tập tin của bạn- xác minh các thay đổi bằng
terrform plan
lệnh - áp dụng các thay đổi bằng
terraform apply
lệnh
Nhập tên miền vào Terraform
Lấy lại ID tên miền của bạn
1.Sử dụng Linode CLI, truy xuất danh sách tất cả các miền của bạn để tìm ID của miền bạn muốn quản lý trong Terraform:
linode-cli domains list --json --pretty
Bạn sẽ thấy kết quả như sau:
[
{
"domain": "import-example.com",
"id": 1157521,
"soa_email": "webmaster@import-example.com",
"status": "active",
"type": "master"
}
]
Tìm tên miền bạn muốn nhập và sao chép ID. Bạn cần ID này để nhập tên miền của mình vào Terraform.
Tạo cấu hình tài nguyên trống
1.Đảm bảo bạn đang ở trong thư mục dự án Terraform của mình . Tạo tệp cấu hình Terraform để quản lý tên miền bạn nhập trong phần tiếp theo. Tệp của bạn có thể được đặt tên bất kỳ theo ý thích, nhưng phải kết thúc bằng .tf
. Thêm khối nhà cung cấp Linode với mã thông báo truy cập API của bạn và linode_domain
khối cấu hình tài nguyên trống vào tệp:
provider "linode" {
token = "Your API Token"
}
resource "linode_domain" "example_label" {}
Nhập tên miền của bạn vào Terraform
1.Chạy import
lệnh, cung cấp linode_domain
nhãn tài nguyên và ID miền đã được lấy trong phần Lấy ID miền của bạn :
terraform import linode_domain.example_label domainID
Bạn sẽ thấy kết quả tương tự như sau:
linode_domain.example_label: Importing from ID "1157521"...
linode_domain.example_label: Import complete!
Imported linode_domain (ID: 1157521)
linode_domain.example_label: Refreshing state... (ID: 1157521)
Import successful!
The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.
Lệnh này sẽ tạo một terraform.tfstate
tệp có thông tin về tên miền của bạn. Bạn sẽ sử dụng thông tin này để điền vào cấu hình tài nguyên của mình.
2.Để xem thông tin được tạo bởi terraform import
, hãy chạy lệnh show. Lệnh này hiển thị danh sách các cặp khóa-giá trị biểu diễn thông tin về miền đã nhập:
terraform show
Bạn sẽ thấy kết quả như sau:
resource "linode_domain" "example_label" {
domain = "import-example.com"
expire_sec = 0
id = "1157521"
master_ips = []
refresh_sec = 0
retry_sec = 0
soa_email = "webmaster@import-example.com"
status = "active"
tags = []
ttl_sec = 0
type = "master"
}
Điền dữ liệu cấu hình tên miền của bạn
Như đã đề cập trong phần Lệnh nhập của Terraform , bạn phải tự tạo cấu hình tài nguyên khi nhập cơ sở hạ tầng hiện có.
1.Điền các giá trị cấu hình cho linode_domain
khối tài nguyên. Các giá trị cần thiết cho tệp cấu hình tài nguyên mẫu được thu thập từ đầu ra của terraform show
lệnh được áp dụng trong Bước 2 của phần Nhập tên miền của bạn vào Terraform .
provider "linode" {
token = "1a2b3c..."
}
resource "linode_domain" "example_label" {
domain = "import-example.com"
soa_email = "webmaster@import-example.com"
type = "master"
}
Ghi chú: Nếu tên miền của bạn type
là slave
vậy thì bạn cần phải bao gồm một master_ips
khóa có giá trị được đặt thành địa chỉ IP đại diện cho DNS chính cho tên miền của bạn.
2.Kiểm tra lỗi trong cấu hình của bạn bằng cách chạy plan
lệnh:
terraform plan
terraform plan
hiển thị cho bạn những thay đổi sẽ diễn ra nếu bạn áp dụng cấu hình bằng terraform apply
lệnh. Chạy terraform plan
sẽ dẫn đến Terraform hiển thị rằng không có thay đổi nào được thực hiện.
3.Sau khi bạn đã xác minh các cấu hình bạn cung cấp trong linode_domain
khối, bạn đã sẵn sàng để bắt đầu quản lý tên miền của mình bằng Terraform. Bất kỳ thay đổi hoặc cập nhật nào cũng có thể được thực hiện bằng cách cập nhật linode_domain_example.tf
tệp của bạn, sau đó xác minh các thay đổi bằng terrform plan
lệnh và cuối cùng áp dụng các thay đổi bằng terraform apply
lệnh.Để biết thêm các tùy chọn cấu hình khả dụng, hãy truy cập tài liệu Linode Domain Terraform.
Nhập bản ghi tên miền vào Terraform
Lấy lại ID tên miền của bạn và ID bản ghi tên miền của bạn
Do cách API Linode truy cập vào bản ghi tên miền, bạn cần cung cấp cả ID tên miền và ID bản ghi tên miền để nhập bản ghi tên miền.
1.Sử dụng Linode CLI, truy xuất danh sách tất cả các miền của bạn để tìm ID của miền bao gồm bản ghi bạn muốn quản lý trong Terraform:
linode-cli domains list --json --pretty
Bạn sẽ thấy kết quả như sau:
[
{
"domain": "import-example.com",
"id": 1157521,
"soa_email": "webmaster@import-example.com",
"status": "active",
"type": "master"
}
]
Tìm ID của bản ghi bạn muốn nhập và sao chép ID đó. Bạn sẽ cần ID này để nhập bản ghi tên miền của mình vào Terraform.
Tạo cấu hình tài nguyên trống
1.Đảm bảo bạn đang ở trong thư mục dự án Terraform của mình . Tạo tệp cấu hình Terraform để quản lý bản ghi miền mà bạn nhập trong phần tiếp theo. Tệp của bạn có thể được đặt tên bất kỳ theo ý muốn, nhưng phải kết thúc bằng .tf
. Thêm khối nhà cung cấp Linode với mã thông báo truy cập API của bạn và linode_domain_record
khối cấu hình tài nguyên trống vào tệp:
provider "linode" {
token = "Your API Token"
}
resource "linode_domain_record" "example_label" {}
Nhập bản ghi tên miền của bạn vào Terraform
1.Chạy import
lệnh, cung cấp linode_domain_record
nhãn tài nguyên, ID miền và ID bản ghi miền đã được truy xuất trong phần Truy xuất ID miền và ID bản ghi của bạn :
terraform import linode_domain_record.example_label domainID,recordID
Bạn sẽ thấy kết quả tương tự như sau:
linode_domain_record.example_label: Importing from ID "1157521,12331520"...
linode_domain_record.example_label: Import complete!
Imported linode_domain_record (ID: 12331520)
linode_domain_record.example_label: Refreshing state... (ID: 12331520)
Import successful!
The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.
Lệnh này sẽ tạo một terraform.tfstate
tệp có thông tin về bản ghi miền của bạn. Bạn sẽ sử dụng thông tin này để điền vào cấu hình tài nguyên của mình.
2.Để xem thông tin được tạo bởi terraform import
, hãy chạy lệnh show. Lệnh này hiển thị danh sách các cặp khóa-giá trị biểu diễn thông tin về miền đã nhập:
terraform show
Bạn sẽ thấy kết quả như sau:
resource "linode_domain_record" "example_label" {
domain_id = 1068029
id = "12331520"
name = "www"
port = 80
priority = 10
record_type = "A"
target = "192.0.2.0"
ttl_sec = 300
weight = 5
}
Điền dữ liệu cấu hình bản ghi tên miền của bạn
Như đã đề cập trong phần Lệnh nhập của Terraform , bạn phải tự tạo cấu hình tài nguyên khi nhập cơ sở hạ tầng hiện có.
1.Điền các giá trị cấu hình cho linode_domain_record
khối tài nguyên. Các giá trị cần thiết cho tệp cấu hình tài nguyên mẫu được thu thập từ đầu ra của terraform show
lệnh được áp dụng trong Bước 2 của phần Nhập bản ghi tên miền của bạn vào Terraform .
provider "linode" {
token = "1a2b3c..."
}
resource "linode_domain_record" "example_label" {
domain_id = "1157521"
name = "www"
record_type = "A"
target = "192.0.2.0"
ttl_sec = "300"
port = 80
priority = 10
weight = 5
}
2.Kiểm tra lỗi trong cấu hình của bạn bằng cách chạy plan
lệnh:
terraform plan
terraform plan
hiển thị cho bạn những thay đổi sẽ diễn ra nếu bạn áp dụng cấu hình bằng terraform apply
lệnh. Chạy terraform plan
sẽ dẫn đến Terraform hiển thị rằng không có thay đổi nào được thực hiện.
3.Sau khi bạn đã xác minh các cấu hình bạn cung cấp trong linode_domain_record
khối, bạn đã sẵn sàng để bắt đầu quản lý bản ghi tên miền của mình bằng Terraform. Bất kỳ thay đổi hoặc cập nhật nào cũng có thể được thực hiện bằng cách cập nhật domain_record_import.tf
tệp của bạn, sau đó xác minh các thay đổi bằng terrform plan
lệnh và cuối cùng áp dụng các thay đổi bằng terraform apply
lệnh.Để biết thêm các tùy chọn cấu hình khả dụng, hãy truy cập tài liệu Linode Domain Record Terraform.
Nhập một khối lưu trữ khối vào Terraform
Lấy ID của Khối lưu trữ khối của bạn
1.Sử dụng Linode CLI, truy xuất danh sách tất cả các ổ đĩa của bạn để tìm ID của Block Storage Volume mà bạn muốn quản lý trong Terraform:
linode-cli volumes list --json --pretty
Bạn sẽ thấy kết quả tương tự như sau:
[
{
"id": 17045,
"label": "import-example",
"linode_id": 11426126,
"region": "us-east",
"size": 20,
"status": "active"
}
]
- Tìm Block Storage Volume mà bạn muốn nhập và sao chép ID. Bạn sẽ sử dụng ID này để nhập volume của mình vào Terraform.
Tạo cấu hình tài nguyên trống
1.Đảm bảo bạn đang ở trong thư mục dự án Terraform của mình. Tạo tệp cấu hình Terraform để quản lý Khối lưu trữ khối mà bạn nhập trong phần tiếp theo. Tệp của bạn có thể được đặt tên bất kỳ theo ý muốn, nhưng phải kết thúc bằng .tf
. Thêm khối nhà cung cấp Linode với mã thông báo truy cập API của bạn và khối cấu hình tài nguyên trống linode_volume
vào tệp:
provider "linode" {
token = "Your API Token"
}
resource "linode_volume" "example_label" {}
Nhập khối lượng của bạn vào Terraform
1.Chạy import
lệnh, cung cấp linode_volume
nhãn tài nguyên và ID ổ đĩa đã được lấy trong phần Lấy ID ổ đĩa lưu trữ khối của bạn :
terraform import linode_volume.example_label volumeID
Bạn sẽ thấy kết quả tương tự như sau:
linode_volume.example_label: Importing from ID "17045"...
linode_volume.example_label: Import complete!
Imported linode_volume (ID: 17045)
linode_volume.example_label: Refreshing state... (ID: 17045)
Import successful!
The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.
Lệnh này sẽ tạo một terraform.tfstate
tệp có thông tin về Volume của bạn. Bạn sẽ sử dụng thông tin này để điền vào cấu hình tài nguyên của mình.
2.Để xem thông tin được tạo bởi terraform import
, hãy chạy show
lệnh. Lệnh này hiển thị danh sách các cặp khóa-giá trị biểu diễn thông tin về Volume đã nhập:
terraform show
Bạn sẽ thấy kết quả như sau:
resource "linode_volume" "example_label" {
filesystem_path = "/dev/disk/by-id/scsi-0Linode_Volume_test-volume"
id = "17045"
label = "import-example"
linode_id = 11426126
region = "us-east"
size = 20
status = "active"
tags = []
timeouts {}
}
Điền dữ liệu cấu hình của Volume của bạn
Như đã đề cập trong phần Lệnh nhập của Terraform , bạn phải tự tạo cấu hình tài nguyên khi nhập cơ sở hạ tầng hiện có.
1.Điền các giá trị cấu hình cho linode_volume
khối tài nguyên. Các giá trị cần thiết cho tệp cấu hình tài nguyên mẫu được thu thập từ đầu ra của terraform show
lệnh được áp dụng trong Bước 2 của phần Nhập khối lượng của bạn vào Terraform :
provider "linode" {
token = "1a2b3c..."
}
resource "linode_volume" "example_label" {
label = "import-example"
region = "us-east"
size = "20"
}
Ghi chú: Mặc dù không bắt buộc, nhưng bạn nên đưa vào cấu hình cho kích thước của ổ đĩa. Điều này cho phép quản lý dễ dàng hơn nếu bạn quyết định mở rộng ổ đĩa. Không thể giảm kích thước của ổ đĩa.
2.Kiểm tra lỗi trong cấu hình của bạn bằng cách chạy plan
lệnh:
terraform plan
terraform plan
hiển thị cho bạn những thay đổi sẽ diễn ra nếu bạn áp dụng cấu hình bằng terraform apply
lệnh. Chạy terraform plan
sẽ dẫn đến Terraform hiển thị rằng không có thay đổi nào được thực hiện.
3.Sau khi bạn đã xác minh các cấu hình bạn cung cấp trong linode_volume
khối, bạn đã sẵn sàng để bắt đầu quản lý Khối lưu trữ của mình bằng Terraform. Bất kỳ thay đổi hoặc cập nhật nào cũng có thể được thực hiện bằng cách cập nhật linode_volume_example.tf
tệp của bạn, sau đó xác minh các thay đổi bằng terrform plan
lệnh và cuối cùng áp dụng các thay đổi bằng terraform apply
lệnh.Để biết thêm các tùy chọn cấu hình, hãy truy cập tài liệu Linode Volume Terraform.
Nhập NodeBalancer vào Terraform
Cấu hình Linode NodeBalancer với Terraform yêu cầu ba khối cấu hình tài nguyên riêng biệt: một khối để tạo NodeBalancer, khối thứ hai cho Cấu hình NodeBalancer và khối thứ ba cho các Node NodeBalancer.
Truy xuất NodeBalancer, Cấu hình NodeBalancer, ID NodeBalancer của bạn
1.Sử dụng Linode CLI, lấy danh sách tất cả các NodeBalancer của bạn để tìm ID của NodeBalancer mà bạn muốn quản lý trong Terraform:
linode-cli nodebalancers list --json --pretty
Bạn sẽ thấy kết quả tương tự như sau:
[
{
"client_conn_throttle": 0,
"hostname": "nb-192-0-2-3.newark.nodebalancer.linode.com",
"id": 40721,
"ipv4": "192.0.2.3",
"ipv6": "2600:3c03:1::68ed:945f",
"label": "terraform-example",
"region": "us-east"
}
]
Tìm NodeBalancer bạn muốn nhập và sao chép ID. Bạn sẽ sử dụng ID này để nhập NodeBalancer của mình vào Terraform.
2.Truy xuất cấu hình NodeBalancer của bạn bằng cách cung cấp ID của NodeBalancer mà bạn đã truy xuất ở bước trước:
linode-cli nodebalancers configs-list 40721 --json --pretty
Bạn sẽ thấy kết quả tương tự như sau:
[
{
"algorithm": "roundrobin",
"check_passive": true,
"cipher_suite": "recommended",
"id": 35876,
"port": 80,
"protocol": "http",
"ssl_commonname": "",
"ssl_fingerprint": "",
"stickiness": "table"
}
]
Sao chép ID cấu hình NodeBalancer của bạn, bạn sẽ sử dụng nó để nhập cấu hình NodeBalancer vào Terraform.
3.Truy xuất danh sách các Node tương ứng với NodeBalancer của bạn để tìm nhãn và địa chỉ của NodeBalancer của bạn. Cung cấp ID của NodeBalancer của bạn làm đối số đầu tiên và ID của cấu hình NodeBalancer của bạn làm đối số thứ hai:
linode-cli nodebalancers nodes-list 40721 35876 --json --pretty
Bạn sẽ thấy kết quả như sau:
[
{
"address": "192.168.214.37:80",
"id": 327539,
"label": "terraform-import",
"mode": "accept",
"status": "UP",
"weight": 100
}
]
- Nếu bạn đang nhập NodeBalancer, khả năng đầu ra của bạn sẽ liệt kê nhiều hơn một Node. Sao chép ID của từng Node. Bạn sẽ sử dụng chúng để nhập Node của mình vào Terraform.
Tạo cấu hình tài nguyên trống
1.Đảm bảo bạn đang ở trong thư mục dự án Terraform của mình. Tạo tệp cấu hình Terraform để quản lý NodeBalancer mà bạn nhập trong phần tiếp theo. Tệp của bạn có thể được đặt tên bất kỳ tùy ý, nhưng phải kết thúc bằng .tf
.Thêm khối nhà cung cấp Linode với mã thông báo truy cập API của bạn và các khối cấu hình linode_nodebalancer
, linode_nodebalancer_config
, và linode_nodebalancer_node
tài nguyên trống vào tệp. Đảm bảo cung cấp cho các tài nguyên nhãn thích hợp. Các nhãn này được sử dụng để tham chiếu các tài nguyên cục bộ trong Terraform:
provider "linode" {
token = "Your API Token"
}
resource "linode_nodebalancer" "example_nodebalancer_label" {}
resource "linode_nodebalancer_config" "example_nodebalancer_config_label" {}
resource "linode_nodebalancer_node" "example_nodebalancer_node_label" {}
- Nếu bạn có nhiều hơn một Cấu hình NodeBalancer, bạn sẽ cần cung cấp nhiều
linode_nodebalancer_config
khối tài nguyên với các nhãn khác nhau. Điều tương tự cũng đúng với mỗi NodeBalancer Node yêu cầu mộtlinode_nodebalancer_node
khối bổ sung.
Nhập NodeBalancer, Cấu hình NodeBalancer và NodeBalancer của bạn vào Terraform
- Chạy
import
lệnh cho NodeBalancer của bạn, cung cấp nhãn cục bộ và ID của NodeBalancer làm tham số cuối cùng.
terraform import linode_nodebalancer.example_nodebalancer_label nodebalancerID
Bạn sẽ thấy kết quả tương tự như sau:
linode_nodebalancer.example_nodebalancer_label: Importing from ID "40721"...
linode_nodebalancer.example_nodebalancer_label: Import complete!
Imported linode_nodebalancer (ID: 40721)
linode_nodebalancer.example_nodebalancer_label: Refreshing state... (ID: 40721)
Import successful!
The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.
2.Chạy import
lệnh cho cấu hình NodeBalancer của bạn, cung cấp nhãn cục bộ và ID của NodeBalancer cùng ID của cấu hình NodeBalancer được phân tách bằng dấu phẩy làm đối số cuối cùng.
terraform import linode_nodebalancer_config.example_nodebalancer_config_label nodebalancerID,nodebalancerconfigID
Bạn sẽ thấy kết quả tương tự như sau:
linode_nodebalancer_config.example_nodebalancer_config_label: Importing from ID "40721,35876"...
linode_nodebalancer_config.example_nodebalancer_config_label: Import complete!
Imported linode_nodebalancer_config (ID: 35876)
linode_nodebalancer_config.example_nodebalancer_config_label: Refreshing state... (ID: 35876)
Import successful!
The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.
3.Chạy import
lệnh cho các NodeBalancer Node của bạn, cung cấp nhãn cục bộ và ID của NodeBalancer, ID của Cấu hình NodeBalancer và NodeBalancer Node của bạn, được phân tách bằng dấu phẩy, làm đối số cuối cùng.
terraform import linode_nodebalancer_node.example_nodebalancer_node_label nodebalancerID,nodebalancerconfigID,nodebalancernodeID
Bạn sẽ thấy kết quả như sau:
linode_nodebalancer_node.example_nodebalancer_node_label: Importing from ID "40721,35876,327539"...
linode_nodebalancer_node.example_nodebalancer_node_label: Import complete!
Imported linode_nodebalancer_node (ID: 327539)
linode_nodebalancer_node.example_nodebalancer_node_label: Refreshing state... (ID: 327539)
Import successful!
The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.
4.Chạy terraform import
sẽ tạo một terraform.tfstate
tệp có thông tin về NodeBalancer của bạn. Bạn sử dụng thông tin này để điền cấu hình tài nguyên của mình. Để xem thông tin được tạo bởi terraform import
, hãy chạy show
lệnh:
terraform show
Bạn sẽ thấy kết quả như sau:
# linode_nodebalancer.example_nodebalancer_label:
resource "linode_nodebalancer" "example_nodebalancer_label" {
client_conn_throttle = 0
created = "2019-08-07T15:22:46Z"
hostname = "nb-23-92-23-94.newark.nodebalancer.linode.com"
id = "40721"
ipv4 = "23.92.23.94"
ipv6 = "2600:3c03:1::175c:175e"
label = "terraform-import"
region = "us-east"
tags = []
transfer = {
"in" = "0.011997222900390625"
"out" = "0.000457763671875"
"total" = "0.012454986572265625"
}
updated = "2019-08-07T15:22:46Z"
}
# linode_nodebalancer_config.example_nodebalancer_config_label:
resource "linode_nodebalancer_config" "example_nodebalancer_config_label" {
algorithm = "roundrobin"
check = "none"
check_attempts = 2
check_interval = 5
check_passive = true
check_timeout = 3
cipher_suite = "recommended"
id = "44520"
node_status = {
"down" = "0"
"up" = "1"
}
nodebalancer_id = 50629
port = 80
protocol = "http"
stickiness = "table"
}
# linode_nodebalancer_node.example_nodebalancer_node_label:
resource "linode_nodebalancer_node" "example_nodebalancer_node_label" {
address = "192.168.214.37:80"
config_id = 35876
id = "419783"
label = "terraform-import"
mode = "accept"
nodebalancer_id = 50629
status = "UP"
weight = 100
}
Điền dữ liệu cấu hình NodeBalancer của bạn
Như đã đề cập trong phần Lệnh nhập của Terraform , bạn phải tự tạo cấu hình tài nguyên khi nhập cơ sở hạ tầng hiện có.
1.Điền các giá trị cấu hình cho cả ba khối cấu hình tài nguyên NodeBalancer. Các giá trị cần thiết cho tệp cấu hình tài nguyên mẫu được thu thập từ đầu ra của terraform show
lệnh được áp dụng trong Bước 4 của phần Nhập NodeBalancer, Cấu hình NodeBalancer và NodeBalancer vào Terraform :
provider "linode" {
token = "1a2b3c..."
}
resource "linode_nodebalancer" "nodebalancer_import" {
label = "terraform-example"
region = "us-east"
}
resource "linode_nodebalancer_config" "nodebalancer_config_import" {
nodebalancer_id = "40721"
}
resource "linode_nodebalancer_node" "nodebalancer_node_import" {
label = "terraform-import"
address = "192.168.214.37:80"
nodebalancer_id = "40721"
config_id = "35876"
}
2.Kiểm tra lỗi trong cấu hình của bạn bằng cách chạy plan
lệnh:
terraform plan
terraform plan
hiển thị cho bạn những thay đổi sẽ diễn ra nếu bạn áp dụng cấu hình bằng terraform apply
lệnh. Chạy terraform plan
sẽ dẫn đến Terraform hiển thị rằng không có thay đổi nào được thực hiện.
3.Sau khi bạn đã xác minh các cấu hình bạn cung cấp trong cả ba khối cấu hình NodeBalancer, bạn đã sẵn sàng để bắt đầu quản lý NodeBalancers của mình bằng Terraform. Bất kỳ thay đổi hoặc cập nhật nào cũng có thể được thực hiện bằng cách cập nhật linode_nodebalancer_example.tf
tệp của bạn, sau đó xác minh các thay đổi bằng terrform plan
lệnh và cuối cùng, áp dụng các thay đổi bằng terraform apply
lệnh.Để biết thêm các tùy chọn cấu hình khả dụng, hãy truy cập tài liệu Linode NodeBalancer , Linode NodeBalancer Config và Linode NodeBalancer Node Terraform.
Các bước tiếp theo
Bạn có thể làm theo quy trình tương tự như những gì đã nêu trong hướng dẫn này để bắt đầu nhập các phần khác của cơ sở hạ tầng Linode của bạn như hình ảnh, khóa SSH, mã thông báo truy cập và StackScripts. Kiểm tra các liên kết trong phần Thông tin thêm bên dưới để biết thông tin hữu ích.
Thông tin thêm
Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.
Nguồn: https://www.linode.com/docs/guides/import-existing-infrastructure-to-terraform/