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 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 incluent des informations d'instance telles que :

  • 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 affichées dans la page de détails d'une instance dans la console et dans la sortie de l'interface de ligne de commande de l'instance get.

  • 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 afin d'utiliser les points d'extrémité IMDS version 2, s'il est pris en charge par l'image. 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 passer à IMDSv2 :

  1. Identifier les applications qui effectuent des demandes IMDSv1.

    Par exemple, cloud-init envoie 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 "Authorization : Bearer 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 d'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 "Authorization : Bearer Oracle".

    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 carte VNIC

    $ 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 afficher toutes les données d'une des plusieurs cartes VNIC en spécifiant l'index de tableau pour ces données, ou vous pouvez extraire une seule valeur pour cette carte VNIC spécifiée :

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