Articles

Migrate State to Terraform Cloud

Posted by admin

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.

pohled na záložku "stavy" v terraform Cloud workspace

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.

karta proměnné terraform Cloud workspace s přidanou 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.

 obrázek potvrzení čekání běhu, protokol uvádí, že zdroj bude nahrazen

„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.

Related Post