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. IMDS fournit également à cloud-init des informations que vous pouvez utiliser pour diverses tâches d'initialisation système.

Remarque

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 les suivantes :

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

  • Cartes d'interface réseau virtuelles attachées à une instance, ID carte d'interface réseau virtuelle

  • Blocs CIDR d'instance

En général, les métadonnées d'instance IMDS incluent les informations suivantes :

  • Les mêmes informations que sur la page de détails d'une instance dans la console 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 adresses IMDS version 2

Le service Instance Metadata Service est disponible en deux versions : 1 et 2.

Important

Pour augmenter la sécurité des demandes de métadonnées, mettez à niveau toutes les applications pour utiliser les adresses IMDS version 2, si elles sont prises en charge par l'image. Désactivez ensuite l'utilisation des adresses IMDS version 1.

Les adresses IMDS version 2 (IMDSv2) sont prises en charge sur les images Oracle Linux répertoriées dans 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, procédez comme suit pour effectuer la mise à niveau vers IMDSv2 :

  1. Identifiez les applications qui effectuent des demandes IMDSv1.

    Par exemple, cloud-init envoie des demandes aux adresses d'instance /v#.

  2. Migrez les applications identifiées pour prendre en charge les adresses IMDSv2.

    Lorsque vous utilisez des adresses /v2, vous devez inclure l'en-tête "Autorisation : Bearer Oracle". Reportez-vous aux exemples de la section Extraction des métadonnées d'instance IMDS.

  3. Désactivez les adresses IMDSv1.

    Effectuez l'une des opérations suivantes, comme décrit dans Création d'une instance.

    • Sur la page de détails d'une instance, sous Détails d'instance, vérifiez la valeur des adresses de service de métadonnées d'instance héritées. Si la valeur des adresses de service de métadonnées d'instance héritée est Activé, sélectionnez Modifier dans le menu Contrôles et cochez la case Adresses de service de métadonnées d'instance héritée désactivées.

    • 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 adresses héritées (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 de l'adresse HTTP.

    Les informations sont fournies via une adresse HTTP qui écoute sur 169.254.169.254. Si une instance comporte plusieurs cartes d'interface réseau virtuelles, vous devez envoyer la demande à l'aide de la carte principale.

    Utilisez la commande instance pour extraire les métadonnées d'instance. Utilisez la commande vnics pour extraire les données de carte d'interface réseau virtuelle.

    Si vous utilisez des adresses /v2, comme indiqué 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 valeur unique, indiquez le nom de la clé comme indiqué dans l'exemple suivant.

    Exemple : métadonnées 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 visualiser toutes les données de l'une des cartes d'interface réseau virtuelles indiquées en indiquant l'index de tableau pour ces données, ou vous pouvez extraire une valeur unique pour cette carte d'interface réseau virtuelle indiquée :

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