Cómo trabajar con la imagen de contenedor de la CLI de OCI

En esta sección se describe cómo instalar y utilizar la imagen de contenedor de la CLI de OCI.

La imagen de contenedor de la interfaz de línea de comandos (CLI) de Oracle Cloud Infrastructure (OCI) es una imagen de Docker que tiene las herramientas de la CLI de OCI preinstaladas. En esta sección se describe cómo instalar y utilizar la imagen de contenedor de la CLI de OCI.

Requisitos

Para utilizar la imagen de contenedor de la CLI de OCI, debe tener lo siguiente:

  • Un motor de tiempo de ejecución de contenedor compatible con los estándares, como Docker o Podman
  • Un arrendamiento de Oracle Cloud Infrastructure.
  • Cuenta de usuario de esa tenencia que pertenezca a un grupo al que se hayan asignado políticas adecuadas para otorgar los permisos necesarios.
  • Un par de claves que se usan para firmar solicitudes de API, con la clave pública cargada en Oracle. Solo el usuario que llama a la API debe poseer la clave privada. Para obtener más información, consulte Configuración de la CLI.

Para ver ejemplos de cómo configurar un usuario, grupo, compartimento y política nuevos, consulte Adición de usuarios. Para obtener una lista de otras políticas de OCI típicas, consulte la lista de políticas comunes.

Uso de la imagen de contenedor de la CLI de OCI

Para utilizar la imagen de contenedor, recupere la versión más reciente de GitHub Container Registry:
$ 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
Considere etiquetar la imagen como oci para que pueda usarse sin problemas como sustituto inmediato:
$ 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"
}
Para mayor comodidad, puede crear un alias de shell que ejecute el contenedor:
$ alias oci='docker run --rm -it -v "$HOME/.oci:/oracle/.oci" oci'
$ oci os ns get
{
    "data": "demo-tenancy"
}

Autenticación de claves de firma de API

Este es el método de autenticación por defecto que utilizan todos los SDK de OCI y la CLI de OCI. Para utilizar este método, monte una ubicación en el sistema host, en el directorio /oracle/.oci dentro del contenedor.

Si previamente había configurado la CLI de OCI en el equipo host, la forma más sencilla de proporcionar acceso a su clave de firma de API es mediante la asignación del directorio $HOME/.oci a /oracle/.oci/ dentro del contenedor.

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

También puede transferir la variable de entorno OCI_CLI_CONFIG_FILE para utilizar una ubicación diferente para el archivo config de la CLI de OCI.

Nota

Asegúrese de que el campo key_file de $HOME/.oci/config utilice el carácter ~ para que la ruta se resuelva tanto dentro como fuera del contenedor; por ejemplo: key_file=~/.oci/oci_api_key.pem.
Si no ha configurado la CLI de OCI, cree el directorio $HOME/.oci:
mkdir $HOME/.oci
A continuación, inicie el proceso de configuración interactiva de la CLI de OCI:
docker run --rm -it -v "$HOME/.oci:/oracle/.oci" ghcr.io/oracle/oci-cli setup config

Para obtener más información, consulte Configuración del archivo de configuración.

Autenticación de tokens de sesión

Para utilizar la autenticación basada en token, asigne el puerto 8181 al contenedor:
docker run --rm -it \
   -v "$HOME/.oci:/oracle/.oci" \
   -p 8181:8181 \
   ghcr.io/oracle/oci-cli session authenticate

Para obtener más información, consulte Autenticación basada en token para CLI.

Autenticación de principal de la instancia

Para habilitar la autenticación de principal de instancia, puede utilizar el parámetro de línea de comandos --auth instance_principal:
docker run --rm -it ghcr.io/oracle/oci-cli --auth instance_principal os ns get
También puede transferir la variable de entorno OCI_CLI_AUTH:
docker run --rm -it -e OCI_CLI_AUTH=instance_principal ghcr.io/oracle/oci-cli os ns get

Si ha creado un alias de shell, añádalo a la definición de alias.

Para obtener más información, consulte Métodos de autenticación de SDK de OCI.

Acceso a los archivos locales

La forma más sencilla de permitir que la CLI de OCI que se ejecuta dentro del contenedor acceda a los archivos del host es enlazando un directorio desde el host al contenedor.

En el siguiente ejemplo, el directorio $HOME/scratch se monta por enlace como /oracle/scratch en el contenedor para que los archivos de ese directorio se puedan cargar de forma masiva en OCI Object Storage mediante la CLI de 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/