Extraction des métadonnées d'instance à partir de l'instance

Sur Compute Cloud@Customer, le service de métadonnées d'instance (IMDS) fournit des informations sur une instance en cours d'exécution aux utilisateurs qui sont connectés à cette instance. Le service de métadonnées d'instance fournit également des informations à cloud-init que vous pouvez utiliser pour diverses tâches d'initialisation du système.

Note

Pour accéder aux métadonnées IMDS, utilisez une image d'instance fournie par Oracle.

Les métadonnées IMDS comprennent des informations d'instance telles que les suivantes :

  • Clé publique SSH qui permet aux utilisateurs de se connecter à l'instance

  • Cartes VNIC attachées à l'instance, ID cartes VNIC

  • Blocs CIDR d'instance

En général, les métadonnées de l'instance IMDS comprennent les informations suivantes :

  • Les mêmes informations que celles que vous voyez dans la page de détails d'une instance dans la console Compute Cloud@Customer et dans la sortie de l'interface de ligne de commande get de l'instance.

  • Informations personnalisées que vous ajoutez à une instance à l'aide des options --metadata, --extended-metadata, --ssh-authorized-keys-file et --user-data-file de la commande launch de l'instance. Ces métadonnées ne peuvent pas être mises à jour après le lancement de l'instance. Pour un utilisateur connecté à l'instance, les métadonnées de l'instance sont en lecture seule.

Mise à niveau vers les points d'extrémité IMDS version 2

Le service de métadonnées d'instance est disponible en deux versions : la version 1 et la version 2.

Important

Pour accroître la sécurité des demandes de métadonnées, mettez à niveau toutes les applications pour utiliser les points d'extrémité IMDS version 2, si l'image le prend en charge. Désactivez ensuite l'utilisation des points d'extrémité IMDS version 1.

Les points d'extrémité IMDS version 2 (IMDSv2) sont pris en charge sur les images Oracle Linux répertoriées dans la matrice du système d'exploitation invité. Les autres images de plate-forme et la plupart des autres images ne prennent pas en charge IMDSv2.

Pour chaque instance, effectuez les étapes suivantes pour effectuer la mise à niveau vers IMDSv2 :

  1. Identifiez les applications qui effectuent des demandes IMDSv1.

    Par exemple, cloud-init effectue des demandes aux points d'extrémité d'instance /v#.

  2. Migrez les applications identifiées pour prendre en charge les points d'extrémité IMDSv2.

    Lorsque vous utilisez des points d'extrémité /v2, vous devez inclure l'en-tête "Autorisation : Porteur Oracle". Voir les exemples sous Extraction des métadonnées d'instance IMDS.

  3. Désactivez les points d'extrémité IMDSv1.

    Effectuez l'une des étapes suivantes, comme décrit sous Création d'une instance.

    • Dans la page de détails d'une instance, sous Détails de l'instance, vérifiez la valeur des points d'extrémité du service de métadonnées d'instance existante. Si la valeur des points d'extrémité du service de métadonnées d'instance existante est activée, sélectionnez Modifier dans le menu Contrôles et cochez la case Points d'extrémité du service de métadonnées d'instance existante désactivés.

    • Dans la sortie de instance list ou instance get, sous instance-options, vérifiez la valeur de are-legacy-imds-endpoints-disabled. Si la valeur de are-legacy-imds-endpoints-disabled est null ou false, utilisez la commande instance update pour spécifier l'option suivante :

      --instance-options '{"areLegacyImdsEndpointsDisabled": true}'

    Les demandes futures aux points d'extrémité existants (v1) seront rejetées avec une erreur 404 introuvable.

Extraction des métadonnées d'instance IMDS

Pour extraire les métadonnées d'instance IMDS, procédez comme suit :

  1. Connectez-vous à l'instance.

  2. Utilisez une commande cURL pour extraire les informations de métadonnées du point d'extrémité HTTP.

    Les informations sont fournies au moyen d'un point d'extrémité HTTP qui écoute sur 169.254.169.254. Si une instance comporte plusieurs cartes VNIC, vous devez envoyer la demande à l'aide de la carte VNIC principale.

    Utilisez la commande instance pour extraire les métadonnées de l'instance. Utilisez la commande vnics pour extraire les données de la carte VNIC.

    Si vous utilisez des points d'extrémité /v2, comme illustré dans les exemples suivants, vous devez inclure l'en-tête "Autorisation : Oracle porteur".

    Exemple : métadonnées d'instance

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/
    {
        "availabilityDomain": "AD-1",
        "faultDomain": "FAULT-DOMAIN-1",
        "compartmentId": "ocid1.compartment.unique_ID",
        "displayName": "dev1",
        "hostname": "hostname",
        "id": "ocid1.instance.unique_ID",
        "image": "ocid1.image.unique_ID",
        "metadata": {
            "ssh_authorized_keys": "public_SSH_key"
        },
        "region": "PCA",
        "canonicalRegionName": "PCA",
        "ociAdName": "PCA",
        "regionInfo": null,
        "shape": "VM.PCAStandard.E5.Flex",
        "state": "RUNNING",
        "timeCreated": 1634943279000,
        "agentConfig": null
    }

    Pour extraire une seule valeur, spécifiez le nom de la clé comme indiqué dans l'exemple suivant.

    Exemple : Métadonnées de la carte d'approvisionnement

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/vnics/
    [
        {
            "vnicId": "ocid1.vnic.unique_ID",
            "privateIp": "privateIp",
            "vlanTag": 0,
            "macAddr": "00:13:97:9f:16:32",
            "virtualRouterIp": "virtualRouterIp",
            "subnetCidrBlock": "subnetCidrBlock"
        }
    ]

    Vous pouvez voir toutes les données d'une de plusieurs cartes VNIC en spécifiant l'index de tableau pour ces données de carte VNIC, ou vous pouvez extraire une valeur unique pour cette carte VNIC spécifiée :

    $ curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/vnics/0/privateIp
    privateIp