Utilisation de l'image de conteneur d'interface de ligne de commande OCI

Cette section explique comment installer et utiliser l'image de conteneur de l'interface de ligne de commande OCI.

L'image de conteneur de l'interface de ligne de commande (CLI) Oracle Cloud Infrastructure (OCI) est une image Docker dont les outils de l'interface de ligne de commande OCI sont préinstallés. Cette section explique comment installer et utiliser l'image de conteneur de l'interface de ligne de commande OCI.

Exigences

Pour utiliser l'image de conteneur de l'interface de ligne de commande OCI, vous devez disposer des éléments suivants :

  • Un moteur d'exécution de conteneur conforme aux normes, tel que Docker ou Podman.
  • Une location Oracle Cloud Infrastructure.
  • Un compte utilisateur dans cette location appartenant à un groupe auquel des stratégies appropriées ont été affectées pour accorder les droits d'accès requis.
  • Une paire de clés utilisée lors de la signature des demandes d'API, avec la clé publique téléchargée vers Oracle. Seul l'utilisateur appelant l'API doit disposer de la clé privée. Pour plus d'informations, reportez-vous à Configuration de l'interface de ligne de commande.

Pour obtenir des exemples de configuration d'un nouvel utilisateur, d'un nouveau groupe, d'un nouveau compartiment et d'une nouvelle stratégie, reportez-vous à Ajout d'utilisateurs. Pour obtenir la liste des autres stratégies OCI standard, consultez la liste des stratégies courantes.

Utilisation de l'image de conteneur de l'interface de ligne de commande OCI

Pour utiliser l'image de conteneur, extrayez la dernière version à partir du registre de conteneur GitHub :
$ docker pull ghcr.io/oracle/oci-cli:latest
$ docker images
REPOSITORY                              TAG               IMAGE ID       CREATED        SIZE
ghcr.io/oracle/oci-cli                  latest            387639e80a9a   3 days ago     711MB
Envisagez de baliser l'image avec oci afin d'en faire un remplacement plus fluide :
$ docker tag ghcr.io/oracle/oci-cli:latest oci
$ docker images oci
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
oci          latest    387639e80a9a   3 days ago   711MB
                   
$ docker run -v "$HOME/.oci:/oracle/.oci" oci os ns get
{
    "data": "demo-tenancy"
}
Pour plus de commodité, vous pouvez créer un alias de shell qui exécute le conteneur pour vous :
$ alias oci='docker run --rm -it -v "$HOME/.oci:/oracle/.oci" oci'
$ oci os ns get
{
    "data": "demo-tenancy"
}

Authentification par clé de signature d'API

Il s'agit de la méthode d'authentification par défaut utilisée par tous les kits SDK OCI et par l'interface de ligne de commande OCI. Pour utiliser cette méthode, montez un emplacement sur le système hôte vers le répertoire /oracle/.oci dans le conteneur.

Si vous avez précédemment configuré l'interface de ligne de commande OCI sur la machine hôte, le moyen le plus simple de fournir l'accès à votre clé de signature d'API consiste à mettre en correspondance votre répertoire $HOME/.oci avec /oracle/.oci/ dans le conteneur.

Par exemple :
$ docker run --rm -it -v "$HOME/.oci:/oracle/.oci" ghcr.io/oracle/oci-cli os ns get
{
    "data": "example"
}

Vous pouvez également transmettre la variable d'environnement OCI_CLI_CONFIG_FILE afin d'utiliser un autre emplacement pour le fichier config de l'interface de ligne de commande OCI.

Remarque

Assurez-vous que le champ key_file dans $HOME/.oci/config utilise le caractère ~ afin que le chemin soit résolu à l'intérieur et à l'extérieur du conteneur, par exemple : key_file=~/.oci/oci_api_key.pem.
Si vous n'avez pas configuré l'interface de ligne de commande OCI, créez le répertoire $HOME/.oci :
mkdir $HOME/.oci
Démarrez ensuite le processus de configuration interactive de l'interface de ligne de commande OCI :
docker run --rm -it -v "$HOME/.oci:/oracle/.oci" ghcr.io/oracle/oci-cli setup config

Pour plus d'informations, reportez-vous à Configuration du fichier de configuration.

Authentification par jeton de session

Pour utiliser l'authentification par jeton, mettez en correspondance le port 8181 avec le conteneur :
docker run --rm -it \
   -v "$HOME/.oci:/oracle/.oci" \
   -p 8181:8181 \
   ghcr.io/oracle/oci-cli session authenticate

Pour plus d'informations, reportez-vous à Authentification basée sur un jeton pour l'interface de ligne de commande.

Authentification par principal d'instance

Pour activer l'authentification par principal d'instance, vous pouvez utiliser le paramètre de ligne de commande --auth instance_principal :
docker run --rm -it ghcr.io/oracle/oci-cli --auth instance_principal os ns get
Vous pouvez également transmettre la variable d'environnement OCI_CLI_AUTH :
docker run --rm -it -e OCI_CLI_AUTH=instance_principal ghcr.io/oracle/oci-cli os ns get

Si vous avez créé un alias de shell, ajoutez-le à la définition de l'alias.

Pour plus d'informations, reportez-vous à Méthodes d'authentification du kit SDK OCI.

Accès aux fichiers locaux

Le moyen le plus simple de permettre à l'interface de ligne de commande OCI exécutée dans le conteneur d'accéder aux fichiers sur l'hôte consiste à effectuer un montage de liaison sur un répertoire de l'hôte vers le conteneur.

Dans l'exemple suivant, le répertoire $HOME/scratch fait l'objet d'un montage de liaison tant que /oracle/scratch dans le conteneur de sorte que les fichiers de ce répertoire puissent être téléchargés en masse vers OCI Object Storage à l'aide de l'interface de ligne de commande OCI :
docker run --rm -it \
    -v "$HOME/.oci:/oracle/.oci" \
    -v "$HOME/scratch:/oracle/scratch" \
    ghcr.io/oracle/oci-cli os object bulk-upload -ns <namespace> -bn <bucket name> --src-dir /oracle/scratch/