Créer un déploiement à l'aide de gcloud ou de l'API

Cette page vous explique comment créer un déploiement. Il s'agit d'une instanciation d'un ensemble de ressources définies dans une configuration. Vous devez fournir une configuration valide dans la requête pour créer le déploiement. Celui-ci peut contenir un certain nombre de ressources de divers services Google Cloud Platform. Lorsque vous créez un déploiement, Deployment Manager génère toutes les ressources décrites dans les API Google Cloud Platform correspondantes.

Avant de commencer

Créer un déploiement

Lorsque vous créez un déploiement, vous générez une ressource de déploiement qui contient un ensemble de ressources. Chaque ressource est explicitement définie dans une configuration que vous fournissez dans votre requête.

gcloud

Avec l'outil de ligne de commande gcloud, utilisez la commande deployments create :

gcloud deployment-manager deployments create my-first-deployment \
    --config vm.yaml

L'indicateur --config correspond à un chemin relatif vers votre fichier de configuration YAML.

Par défaut, si des ressources de votre configuration existent déjà dans votre projet, elles sont acquises par le déploiement et peuvent être gérées à l'aide de celui-ci. Si vous ne souhaitez pas acquérir de ressource, vous devez utiliser l'option --create-policy, comme dans la commande gcloud beta suivante :

gcloud beta deployment-manager deployments create my-first-deployment \
    --config vm.yaml --create-policy CREATE

Pour en savoir plus sur les règles que vous pouvez utiliser lors de la création de déploiements, consultez la section Définir la règle pour créer des ressources.

Si le déploiement a bien été créé, vous pouvez en obtenir la description :

gcloud deployment-manager deployments describe my-first-deployment

API

Dans l'API, exécutez une requête insert() en intégrant la configuration fournie dans le corps :

POST https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments

{
 "name": "example-config-with-templates",
 "target": {
  "config": {
   "content": "resources:\n- name: vm-created-by-cloud-config\n  type: compute.v1.instance\n  properties:\n    zone: us-central1-a\n    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n    disks:\n    - deviceName: boot\n      type: PERSISTENT\n      boot: true\n      autoDelete: true\n      initializeParams:\n        diskName: disk-created-by-cloud-config\n        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20151104\n    networkInterfaces:\n    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default\n"
  }
 }
}

Si vous importez des modèles, vous devez également les fournir dans le corps de la requête. Par exemple, la requête API suivante comporte un target qui importe un modèle, nommé vm_template.jinja :

POST https://www-www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments

{
 "name": "my-example-config-with-templates-2",
 "target": {
  "config": {
    "content": "imports:\n- path: vm_template.jinja\n\nresources:\n- name: my-vm\n  type: vm_template.jinja"
  },
  "imports": [
   {
    "content": "resources:\n- name: vm-created-by-cloud-config\n  type: compute.v1.instance\n  properties:\n    zone: us-central1-a\n    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n    disks:\n    - deviceName: boot\n      type: PERSISTENT\n      boot: true\n      autoDelete: true\n      initializeParams:\n        diskName: disk-created-by-cloud-config\n        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20151104\n    networkInterfaces:\n    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default",
    "name": "vm_template.jinja"
   }
  ]
 }
}

Définir la règle pour créer des ressources

Si une ressource que vous souhaitez créer lors du déploiement existe déjà dans votre projet, elle est acquise par le déploiement. Dans ce cas, Deployment Manager ne crée pas de ressource. Si vous ne souhaitez pas acquérir une ressource existante, vous devez utiliser la règle CREATE dans votre déploiement.

Vous pouvez utiliser les règles suivantes pour créer vos ressources :

  • CREATE_OR_ACQUIRE [Par défaut] : Deployment Manager acquiert des ressources qui existent dans le projet ou en crée si ce n'est pas le cas. Pour acquérir une ressource, Deployment Manager vérifie les propriétés de la ressource que vous essayez de créer dans votre configuration. Si une ressource existante possède les mêmes propriétés, Deployment Manager acquiert cette ressource dans le cadre de votre déploiement.

    Les propriétés vérifiées par Deployment Manager varient en fonction du type de ressource que vous créez et peuvent inclure les informations suivantes :

    • Le name de la ressource
    • Le type de la ressource
    • La zone ou la region de la ressource, le cas échéant

    Les propriétés font partie de l'URL de la requête API GET pour la ressource. Pour afficher les propriétés que Deployment Manager utilise pour acquérir une ressource, consultez la documentation de l'API sur la méthode GET de la ressource. Par exemple, pour les instances Compute Engine, l'URL de la requête pour la méthode instances.get inclut resourceId (name dans votre configuration), zone et project.

  • CREATE : Deployment Manager crée des ressources qui n'existent pas. Si l'une des ressources de votre configuration existe déjà dans le projet, le déploiement échoue.

  • ACQUIRE : Deployment Manager acquiert les ressources existantes à l'aide des mêmes critères que CREATE_OR_ACQUIRE.

    Utilisez la règle ACQUIRE si vous possédez déjà un certain nombre de ressources dans votre projet et que vous souhaitez les gérer ensemble en tant que déploiement unique.

    Dans votre modèle ou votre configuration, vous devez indiquer les propriétés requises pour ces ressources comme si vous les créiez. Si l'une des ressources de votre configuration n'existe pas dans le projet, le déploiement échoue.

Répertorier vos déploiements

Affichez la liste de vos déploiements dans Cloud Console, l'API ou l'outil de ligne de commande gcloud.

Console

Accédez à la page Déploiements de Cloud Console.

gcloud

Avec l'outil de ligne de commande gcloud, utilisez la sous-commande deployments list :

gcloud deployment-manager deployments list

API

Dans l'API, envoyez une requête GET vide à l'ensemble des déploiements :

GET https://www.googleapis.com/deploymentmanager/v2beta1/projects/myproject/global/deployments

Étape suivante