Bir Serverless App Engine (SAE) ad alanı, uygulamalarınızı test, geliştirme, hazırlık ve üretim gibi ortamlara mantıksal olarak ayırmanızı sağlar. Terraform kullanarak SAE ad alanları oluşturabilir, güncelleyebilir ve silebilirsiniz.
Bu eğitimdeki örnek kodu doğrudan Terraform Explorer içinde çalıştırabilirsiniz.
Önkoşullar
-
Alibaba Cloud hesabınız tüm kaynaklarınız üzerinde tam yetkiye sahiptir. Bu hesabın kimlik bilgilerinin ifşa edilmesi önemli bir güvenlik riski oluşturur. Bunun yerine bir RAM kullanıcısı kullanmanızı ve bu kullanıcı için özel bir AccessKey çifti oluşturmanızı öneririz. Daha fazla bilgi için bkz. RAM kullanıcısı oluşturma ve AccessKey oluşturma.
-
Bu ilke, SAE ad alanları oluşturma, silme, güncelleme, görüntüleme ve listeleme izinleri verir.
Bu eğitimin gerektirdiği izinleri vermek için RAM kullanıcınıza aşağıdaki minimum ilkeyi ekleyin. Daha fazla bilgi için bkz. RAM kullanıcı izinlerini yönetme.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "sae:CreateNamespace", "sae:DeleteNamespace", "sae:UpdateNamespace", "sae:GetNamespace", "sae:ListNamespaces" ], "Resource": "*" } ] } -
Bir Terraform çalışma zamanı ortamı hazırlayın. Aşağıdaki yöntemlerden birini kullanabilirsiniz:
ROS, yönetilen bir Terraform hizmeti sunar. Terraform şablonlarını doğrudan ROS konsolu üzerinden dağıtabilirsiniz. Daha fazla bilgi için bkz. Terraform yığını oluşturma.
Terraform Explorer'da Terraform kullanma: Alibaba Cloud, Terraform için çevrimiçi bir çalışma zamanı ortamı sağlar. Yükleme yapmadan Terraform'u test etmek için oturum açabilirsiniz. Bu yöntem, hızlı ve ücretsiz testler için idealdir.
Kaynakları hızlıca oluşturmak için Terraform kullanma: Alibaba Cloud Shell, önceden yüklenmiş Terraform ve yapılandırılmış kimlik doğrulama bilgileri ile gelir. Terraform komutlarını doğrudan Cloud Shell'de çalıştırabilirsiniz. Bu yöntem, Terraform'u kullanmanın hızlı, pratik ve düşük maliyetli bir yolunu sunar.
Yerel makinenize Terraform yükleme ve yapılandırma: Bu yöntem, ağ bağlantısının zayıf olduğu veya özel bir geliştirme ortamı gerektiği senaryolar için uygundur.
Kaynaklar
alicloud_sae_namespace: Bir SAE ad alanı oluşturur ve yönetir.
Ad alanı oluşturma
Aşağıdaki örnekte, China (Hangzhou) bölgesinde ID'si cn-hangzhou:admin olan admin adında bir ad alanı oluşturulur.
Terraform kaynaklarını depolamak için terraform adlı bir proje klasörü oluşturun.
-
Proje dizinine gitmek için aşağıdaki komutu çalıştırın:
cd terraform -
main.tf adlı bir yapılandırma dosyası oluşturun.
provider "alicloud" { region = var.region_id } # Define a variable for the region. The default value is cn-hangzhou. variable "region_id" { type = string default = "cn-hangzhou" } # Define a variable for the namespace description. The default value is "a namespace sample". variable "namespace_description" { description = "Namespace Description" default = "a namespace sample" } # Define a variable for the namespace name. The default value is "admin". variable "namespace_name" { description = "Namespace Name" type = string default = "admin" } # Define a variable for the namespace ID. The default value is "cn-hangzhou:admin". variable "namespace_id" { description = "Namespace ID" type = string default = "cn-hangzhou:admin" } resource "alicloud_sae_namespace" "default" { namespace_description = var.namespace_description namespace_id = var.namespace_id namespace_name = var.namespace_name } output "namespace_id" { value = alicloud_sae_namespace.default.namespace_id description = "The ID of the created namespace." } -
Terraform çalışma zamanı ortamını başlatın.
terraform init -
Beklenen çıktı:
Initializing the backend... Initializing provider plugins... - Checking for available provider plugins... - Downloading plugin for provider "alicloud" (hashicorp/alicloud) 1.233.0... The following providers do not have any version constraints in configuration, so the latest version was installed. To prevent automatic upgrades to new major versions that may contain breaking changes, it is recommended to add version = "..." constraints to the corresponding provider blocks in configuration, with the constraint strings suggested below. * provider.alicloud: version = "~> 1.233" Warning: registry.terraform.io: For users on Terraform 0.13 or greater, this provider has moved to aliyun/alicloud. Please update your source in required_providers. Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary. -
SAE ad alanını oluşturmak için aşağıdaki komutu çalıştırın.
-
Yapılandırmayı uygulamak için komutu çalıştırın. İstendiğinde
yesgirin ve Enter tuşuna basın.terraform applyBeklenen çıktı:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: namespace_id = cn-hangzhou:admin
Ad alanı oluşturuldu.
-
Ad alanının oluşturulduğunu doğrulayın.
Terraform show komutu
Terraform tarafından yönetilen kaynak durumunu incelemek için aşağıdaki komutu çalıştırın:
terraform show
shell@Alicloud:~/serverlesstest$ terraform show
# alicloud_sae_namespace.default:
resource "alicloud_sae_namespace" "default" {
enable_micro_registration = true
id = "cn-hangzhou:admin"
namespace_description = "a namespace sample"
namespace_id = "cn-hangzhou:admin"
namespace_name = "admin"
namespace_short_id = "admin"
}
Outputs:
namespace_id = "cn-hangzhou:admin"
SAE konsolu
Oluşturulan ad alanını görüntülemek için Serverless App Engine (SAE) konsolu üzerinden oturum açın.
Namespaces sayfasında, ID'si cn-hangzhou:admin olan admin ad alanının listelendiğini doğrulayın.
Ad alanını güncelleme
Aşağıdaki örnekte, China (Hangzhou) bölgesindeki ad alanı adı admin değerinden prod değerine güncellenir.
main.tf dosyasını açın ve
namespace_namedeğişkeninin varsayılan değerini "admin" yerine "prod" olarak değiştirin.
provider "alicloud" {
region = var.region_id
}
# Define a variable for the region. The default value is cn-hangzhou.
variable "region_id" {
type = string
default = "cn-hangzhou"
}
# Define a variable for the namespace description. The default value is "a namespace sample".
variable "namespace_description" {
description = "Namespace Description"
default = "a namespace sample"
}
# Change the default namespace name to "prod".
variable "namespace_name" {
description = "Namespace Name"
type = string
default = "prod"
}
# Define a variable for the namespace ID. The default value is "cn-hangzhou:admin".
variable "namespace_id" {
description = "Namespace ID"
type = string
default = "cn-hangzhou:admin"
}
resource "alicloud_sae_namespace" "default" {
namespace_description = var.namespace_description
namespace_id = var.namespace_id
namespace_name = var.namespace_name
}
output "namespace_id" {
value = alicloud_sae_namespace.default.namespace_id
description = "The ID of the created namespace."
}
-
Terraform çalışma zamanı ortamını başlatın.
terraform initÇıktı, Terraform'un başarıyla başlatıldığını onaylar.
Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın. İstendiğinde
yesgirin ve Enter tuşuna basın.
terraform apply
Beklenen çıktı:
alicloud_sae_namespace.default: Modifying... [id=cn-hangzhou:admin]
alicloud_sae_namespace.default: Modifications complete after 1s [id=cn-hangzhou:admin]
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
Outputs:
namespace_id = "cn-hangzhou:admin"
Ad alanı adı prod olarak güncellendi.
Terraform show komutu
Terraform tarafından yönetilen kaynak durumunu incelemek için aşağıdaki komutu çalıştırın:
terraform show
shell@Alicloud:~/serverlesstest$ terraform show
# alicloud_sae_namespace.default:
resource "alicloud_sae_namespace" "default" {
enable_micro_registration = true
id = "cn-hangzhou:admin"
namespace_description = "a namespace sample"
namespace_id = "cn-hangzhou:admin"
namespace_name = "prod"
namespace_short_id = "admin"
}
Outputs:
namespace_id = "cn-hangzhou:admin"
SAE konsolu
Güncellenen ad alanını görüntülemek için Serverless App Engine (SAE) konsolu üzerinden oturum açın.
Ad alanı listesi artık ID'si cn-hangzhou:admin olan prod ad alanını gösterir; bu da güncellemeyi doğrular.
Ad alanını silme
Aşağıdaki örnekte, China (Hangzhou) bölgesinden ID'si cn-hangzhou:admin olan prod adlı ad alanı silinir.
-
Proje dizininde, ad alanını yok etmek için aşağıdaki komutu çalıştırın.
terraform destroykomutu hakkında daha fazla bilgi için bkz. Ortak komutlar.terraform destroyBeklenen çıktı:
alicloud_sae_namespace.default: Refreshing state... [id=cn-hangzhou:admin] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: - destroy Terraform will perform the following actions: # alicloud_sae_namespace.default will be destroyed - resource "alicloud_sae_namespace" "default" { - enable_micro_registration = true -> null - id = "cn-hangzhou:admin" -> null - namespace_description = "a namespace sample" -> null - namespace_id = "cn-hangzhou:admin" -> null - namespace_name = "prod" -> null - namespace_short_id = "admin" -> null } Plan: 0 to add, 0 to change, 1 to destroy. Changes to Outputs: - namespace_id = "cn-hangzhou:admin" -> null Do you really want to destroy all resources? Terraform will destroy all your managed infrastructure, as shown above. There is no undo. Only 'yes' will be accepted to confirm. Enter a value: yes alicloud_sae_namespace.default: Destroying... [id=cn-hangzhou:admin] alicloud_sae_namespace.default: Destruction complete after 1s Destroy complete! Resources: 1 destroyed.Ad alanı silindi.
Tam örnek
Referanslar
Terraform hakkında daha fazla bilgi için bkz. Alibaba Cloud Terraform nedir?.
ROS, yönetilen bir Terraform hizmeti sunar. Terraform şablonlarını doğrudan ROS konsolu üzerinden dağıtabilirsiniz. Daha fazla bilgi için bkz. Terraform yığını oluşturma.