Resource Orchestration Service (ROS) propose une exécution managée de Terraform. Cette rubrique présente les méthodes de développement et les bonnes pratiques pour l'écriture de code Terraform dans ROS. Elle s'adresse aux utilisateurs déjà familiarisés avec les concepts Terraform au sein de ROS.
Méthodes de développement
Choisissez la méthode de développement la mieux adaptée à votre flux de travail :
Utilisez un environnement local.
Utilisez l'outil de débogage en ligne Terraform. Cette option prend uniquement en charge les ressources Alibaba Cloud.
Créez une pile Terraform dans la console ROS, puis créez ou mettez à jour la pile selon vos besoins. Pour plus d'informations, consultez les rubriques Créer une pile Terraform, Poursuivre la création d'une pile et Mettre à jour une pile.
Recommandations de développement
-
Ne déclarez pas le fournisseur alicloud dans le fichier .tf.
ROS fournit un fournisseur alicloud par défaut qui utilise une paire AccessKey temporaire ou des identifiants Security Token Service (STS), ainsi que la région de la pile du compte Alibaba Cloud actuel. L'utilisation du fournisseur par défaut présente les avantages suivants :
Elle simplifie le développement, améliore la sécurité et réduit le risque de fuite de paires AccessKey.
Elle maintient les ressources et les piles dans le même compte et la même région, facilitant ainsi la gestion centralisée et l'intégration.
-
Elle améliore les fonctionnalités nécessitant que les ressources et les piles partagent le même compte et la même région, telles que les demandes de tarification, les tags système, la propagation des tags de pile personnalisés, la propagation des groupes de ressources de pile et la détection des risques.
RemarqueSi les piles et les groupes de piles appartiennent à des comptes et des régions différents, les demandes de tarification, les tags système, la propagation des tags de pile personnalisés et la détection des risques sont pris en charge dans certains scénarios spécifiques.
Si les piles et les groupes de piles appartiennent à des régions différentes, la propagation des groupes de ressources de pile est prise en charge dans certains scénarios spécifiques.
-
Enregistrez le code local dans des fichiers dont le nom se termine par .debug.tf.
Lorsque le code Terraform s'exécute dans ROS, ce dernier ignore les fichiers .debug.tf et les exclut de l'orchestration. Dans un environnement local, Terraform traite ces fichiers normalement. Par exemple, créez un fichier provider.debug.tf pour configurer le fournisseur alicloud. Lorsque vous utilisez ce fichier pour développer du code dans un environnement local, cette configuration prend effet et crée des ressources dans la région Chine (Hong Kong). Lorsque vous créez une pile dans ROS, le fichier est ignoré et les ressources sont créées dans la région de la pile. Voici un exemple de contenu pour provider.debug.tf :
variable "region" { type = string default = "cn-hongkong" } provider "alicloud" { region ="${var.region}" } -
Épinglez la version du fournisseur.
Terraform géré par ROS prend en charge plusieurs versions de fournisseur après la publication d'Aliyun::Terraform-v1.0. Épinglez la version du fournisseur pour éviter les ruptures de compatibilité dues aux mises à jour en amont et maintenir la stabilité. Exemple de code :
terraform { required_providers { alicloud = { source = "aliyun/alicloud" version = "1.140.0" } } }Pour connaître les versions de fournisseur disponibles, consultez la colonne Provider version de la rubrique Prise en charge des versions ROS.
-
Utilisez Aliyun::Terraform-v1.0 ou une version ultérieure.
Aliyun::Terraform-v0.12 et Aliyun::Terraform-v0.15 sont maintenus uniquement à des fins de compatibilité. Les versions de fournisseur et les fonctionnalités associées à ces publications ne font plus l'objet de mises à jour.
-
Utilisez les paramètres ROS plutôt que les fichiers .tfvars pour transmettre les valeurs des variables.
Les paramètres ROS offrent les avantages suivants par rapport aux fichiers .tfvars :
Moins de modifications de modèle sont nécessaires ; dans la plupart des cas, il suffit de mettre à jour les valeurs des paramètres.
Un mappage un-à-un avec les variables est visible dans la console ROS. Avec les fichiers .tfvars, les valeurs des variables peuvent être écrasées silencieusement, entraînant des écarts entre les valeurs réelles et celles affichées par la console.
Pour plus d'informations, consultez la section (Facultatif) Paramètres.
-
Utilisez des pseudo-paramètres pour obtenir des informations sur la pile.
Pour plus d'informations, consultez la section (Facultatif) Paramètres. Par exemple, définissez la variable ALIYUN__Region dans votre fichier .tf et référencez-la avec var.ALIYUN__Region pour obtenir la région de la pile. Exemple de code :
variable "ALIYUN__Region" { type = string default = "cn-hongkong" } -
Définissez précisément les variables.
ROS convertit automatiquement les variables Terraform en paramètres ROS. Des variables bien définies produisent des résultats de conversion précis. Pour plus d'informations, consultez la section (Facultatif) Paramètres.
Spécifiez toujours le paramètre type pour chaque variable. Sans type, ROS peut traiter la variable comme une chaîne de caractères et la transmettre ainsi à Terraform, ce qui peut provoquer une erreur de type lors de l'orchestration.
-
Pour les variables contenant des données sensibles telles que des mots de passe, définissez
sensitive = true.variable "password" { type = string sensitive = true }
-
Utilisez les métadonnées pour contrôler l'affichage des paramètres dans la console.
Grouper les paramètres : pour plus d'informations, consultez les rubriques Métadonnées et Utiliser les métadonnées pour grouper les paramètres.
-
Masquer les paramètres : utilisez Metadata.ALIYUN::ROS::Interface.Hidden pour spécifier les paramètres à masquer de la console.
ROSTemplateFormatVersion: '2015-09-01' Description: Creates a simple oss bucket Parameters: BucketName: Type: String Label: Bucket Name Description: en: Bucket name Default: bucketName1 Metadata: ALIYUN::ROS::Interface: Hidden: - BucketName Workspace: ... Interroger les contraintes de paramètres : utilisez ResourcesForParameterConstraints de ALIYUN::ROS::Interface dans le fichier .metadata pour configurer les contraintes des paramètres. Pour plus d'informations, consultez la rubrique Configurer manuellement l'interrogation des contraintes de paramètres pour un modèle Terraform.
-
Contrôlez le mode de saisie des paramètres dans la console.
Paramètres ROS : utilisez AssociationProperty et AssociationPropertyMetadata pour valider automatiquement les valeurs et spécifier les options valides. Pour plus d'informations, consultez les rubriques AssociationProperty et AssociationPropertyMetadata et Sélectionner dynamiquement les paramètres dans la console Resource Orchestration Service.
-
Variables Terraform : utilisez le paramètre description pour définir AssociationProperty et AssociationPropertyMetadata pour les variables Terraform. Pour plus d'informations, consultez la section (Facultatif) Paramètres. Exemple de code :
variable "vpc_id" { type = string description = <<EOT { "AssociationProperty": "ALIYUN::ECS::VPC::VPCId", "Description": { "en": "Please search the ID starts with (vpc-xxx)from console-Virtual Private Cloud", }, "Label": { "en": "Existing VPC ID", } } EOT }