jako aktuální uživatel terraform CLI jste zodpovědní za udržování státního souboru jako zdroje pravdy pro vaši cloudovou infrastrukturu. Místní stavový soubor můžete přenést do Terraform Cloud bez přerušení nebo obnovení stávající infrastruktury.
upozornění: při nahrávání státního souboru do Terraform Cloud pomocí kroků v tomto tutoriálu vždy použijte stejnou verzi terraform CLI, kterou jste použili k vytvoření zdrojů. Použití novější verze Terraformu může aktualizovat stavový soubor a způsobit poškození státního souboru.
„předpoklady
tento tutoriál předpokládá, že máte následující:
- Terraform CLI nainstalován lokálně
- terraform Cloud účet
poznámka: protože backend remote
nebyl ve starší verzi Terraform podporován, musíte použít 0.11.13 nebo vyšší, abyste migrovali svůj stav do Terraform Cloud. Úryvky v tomto tutoriálu používají syntaxi 0.12.
pokud nemáte nainstalovaný Terraform místně, můžete tento tutoriál dokončit v interaktivní laboratoři z webového prohlížeče. Spusťte to zde.
„vytvořit stav
začněte klonováním tohoto úložiště GitHub.
$ git clone https://github.com/hashicorp/learn-state-migration
kopírovat
dále přejděte do adresáře.
$ cd learn-state-migration
zkopírujte
zkontrolujte soubor main.tf
v pracovním adresáři a získejte přehled o zdrojích, které se chystáte vytvořit. Tato konfigurace používá prostředek random_pet
ke generování a výstupu náhodného názvu zvířete s daným počtem slov. Délka názvu je určena hodnotou proměnné name_length
, která je výchozí 3.
v konfiguraci v reálném světě můžete mít další proměnné, jako jsou pověření cloudové platformy definované v souboru .tfvars
. Budeme se zabývat tím, jak nastavit tyto hodnoty v terraform Cloud workspace později v tomto tutoriálu, poté, co jste migrovali stavový soubor.
## Terraform configurationterraform { required_providers { random = { source = "hashicorp/random" version = "3.0.1" } } required_version = "~> 0.14"}variable "name_length" { description = "The number of words in the pet name" default = "3"}resource "random_pet" "pet_name" { length = var.name_length separator = "-"}output "pet_name" { value = random_pet.pet_name.id}
kopírovat
inicializovat adresář.
$ terraform init
kopírovat
po inicializaci Terraformu použijte konfiguraci a schválte běh zadáním „ano“ na výzvu.
$ terraform apply
kopírovat
Terraform bude výstup tři slovo náhodně generované pet jméno.
“ nastavte vzdálený backend
Nyní, když máte místní stavový soubor, musíte v konfiguraci vytvořit blok kódu backendu. Backends říct Terraform kam načíst a uložit jeho stavový soubor.
Terraform ve výchozím nastavení používá lokální backend, pokud v konfiguraci explicitně nedefinujete blok kódu backendu. Místní backend uloží váš stav jako soubor terraform.tfstate
do adresáře, kde spustíte terraform apply
. Chcete-li přenést stavové soubory do Terraform Cloud, definujte v konfiguraci backend remote
přidáním nového bloku kódu na začátek souboru main.tf
.
terraform { required_providers { random = { source = "hashicorp/random" version = "3.0.1" } } required_version = "~> 0.14" backend "remote" { hostname = "app.terraform.io" organization = "<YOUR-ORG-NAME>" workspaces { name = "state-migration" } }}
kopírovat
nahraďte hodnoty atributů organizace a pracovních prostorů názvem vaší organizace Terraform Cloud a požadovaným názvem pracovního prostoru. Zatímco organizace definovaná v backendové sloce již musí existovat, pracovní prostor nemusí; Terraform Cloud ji v případě potřeby vytvoří. Pokud se rozhodnete použít pracovní prostor, který již existuje, pracovní prostor nesmí mít žádné existující stavy.
Poznámka: Pokud jste obeznámeni se spuštěním Terraformu pomocí CLI, možná jste použili pracovní prostory Terraform. Terraform Cloud pracovní prostory se chovají jinak než Terraform CLI pracovní prostory. Pracovní prostory Terraform CLI umožňují existenci více stavových souborů v jednom adresáři, což vám umožní použít jednu konfiguraci pro více prostředí. Pracovní prostory Terraform Cloud obsahují vše potřebné pro správu dané sady infrastruktury a fungují jako samostatné pracovní adresáře.
„ověřte pomocí Terraform Cloud
Nyní, když jste definovali svůj backend, musíte se ověřit pomocí Terraform Cloud, abyste mohli pokračovat v inicializaci. Chcete-li se ověřit pomocí Terraform Cloud, spusťte dílčí příkaz terraform login
a přihlaste se podle pokynů.
Poznámka: Pokud používáte verzi Terraformu před 0.12.21, příkaz terraform login
není k dispozici. Místo toho nastavte konfigurační soubor CLI pro ověření.
$ terraform loginTerraform will request an API token for app.terraform.io using your browser.If login is successful, Terraform will store the token in plain text inthe following file for use by subsequent commands: /Users/username/.terraform.d/credentials.tfrc.jsonDo you want to proceed? Only 'yes' will be accepted to confirm. Enter a value:
kopírovat
odpovězte na výzvu k potvrzení yes
.
podrobnější pokyny k přihlášení naleznete v tutoriálu pro přihlášení.
“ migrovat stavový soubor
po ověření backendu remote
jste připraveni migrovat místní stavový soubor do Terraform Cloud. Chcete-li zahájit migraci, znovu inicializovat. To způsobí, že Terraform rozpozná vaši změněnou konfiguraci backendu.
$ terraform initInitializing the backend...Do you want to copy existing state to the new backend? Pre-existing state was found while migrating the previous "local" backend to the newly configured "remote" backend. No existing state was found in the newly configured "remote" backend. Do you want to copy this state to the new "remote" backend? Enter "yes" to copy and "no" to start with an empty state. Enter a value:
kopírovat
během reinicializace Terraform představuje výzvu, která říká, že zkopíruje státní soubor do nového backendu. Zadejte yes
a Terraform migruje stav z místního počítače do Terraform Cloud.
“ nakonfigurujte pracovní prostor Terraform Cloud
po migraci stavu do Terraform Cloud se přihlaste do webového rozhraní Terraform Cloud, najděte název pracovního prostoru podle definice v konfiguraci backendu a klikněte na něj. Přejděte na kartu“ stavy “ pracovního prostoru a podívejte se na první akci v pracovním prostoru.
nezapomeňte, že Vaše konfigurace má proměnnou, kterou musíte přidat do newworkspace. Klikněte na kartu“ Proměnné „v pracovním prostoru a poté na „Přidat proměnnou“.Jako klíč zadejte název proměnné name_length
. Poté zadejte novou hodnotu 5
a uložte proměnnou.
pro konfigurace v reálném světě přidejte do pracovního prostoru také pověření cloudové platformy a další konfigurační proměnné.
“ spusťte běh v novém pracovním prostoru
po ověření, že stav byl migrován do pracovního prostoru Terraform Cloud, odeberte soubor místního stavu.
$ rm terraform.tfstate
kopírovat
použít nový běh.
$ terraform apply
kopie
Terraform bude streamovat protokoly z Terraform Cloud a poskytne odkaz na běh v terraform Cloud UI. Nastavíte novou hodnotu pro proměnnou name_length
, takže zdroj bude nahrazen jednou odpovídající novým parametrům.
„další kroky
Zničte zdroje, které jste vytvořili pro tento tutoriál, nejprve kliknutím na možnost „Nastavení“ v pracovním prostoru Terraform Cloud, výběrem možnosti „zničení anddelece“, zaškrtnutím políčka“ Povolit zničit plány „a potomkliknutím“ plán zničení fronty“.
po zničení zdrojů se vraťte na stránku“ zničení andDeletion „a klikněte na“ Delete from Terraform Cloud “ pro odstranění pracovního prostoru.
v tomto tutoriálu jste migrovali stavový soubor z místního počítače do pracovního prostoru Terraform Cloud. Chcete-li se dozvědět, jak migrovat stavové soubory více místních pracovních prostorů nebo omezit přístup k pracovnímu prostoru konkrétnímu týmu, přečtěte si následující dokumentaci.
- migrace stavu z více lokálních pracovních prostorů
- Správa přístupu k pracovnímu prostoru
pokud máte velký počet Stavových souborů, které chcete migrovat do Terraform Cloud, zvažte použití rozhraní terraform Cloud API. Informace o nahrávání státních verzí pomocí API naleznete v dokumentaci API státní verze.