Trabalhando com a Imagem do Contêiner da CLI do OCI

Esta seção aborda como instalar e usar a Imagem do Contêiner da CLI do OCI.

A Imagem do Contêiner da CLI (Interface de Linha de Comando) do OCI (Oracle Cloud Infrastructure) é uma imagem do Docker que tem as ferramentas de CLI do OCI pré-instaladas. Esta seção aborda como instalar e usar a Imagem do Contêiner da CLI do OCI.

Requisitos

Para usar a imagem de contêiner da CLI do OCI, você deve ter:

  • Um mecanismo de runtime de contêiner compatível com padrões, como Docker ou Podman
  • Uma tenancy do Oracle Cloud Infrastructure
  • Uma conta de usuário nessa tenancy que pertença a um grupo ao qual políticas apropriadas foram designadas para conceder as permissões necessárias.
  • Um par de chaves usado para assinar solicitações de API, com a chave pública carregada por upload para o sistema Oracle. Somente o usuário que chama a API deve possuir a chave privada. Para obter mais informações, consulte Configurando a CLI.

Para ver exemplos de como configurar um novo usuário, grupo, compartimento e política, consulte Adicionando Usuários. Para obter uma lista de outras políticas típicas do OCI, consulte a lista de políticas comuns.

Usando a imagem de contêiner da CLI do OCI

Para usar a imagem do contêiner, extraia a versão mais recente do Registro de Contêiner do 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
Considere marcar a imagem com uma tag como oci para torná-la uma substituta direta perfeita:
$ 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 maior comodidade, você pode criar um alias de shell que execute o contêiner para você:
$ alias oci='docker run --rm -it -v "$HOME/.oci:/oracle/.oci" oci'
$ oci os ns get
{
    "data": "demo-tenancy"
}

Autenticação de Chave de Assinatura da API

Este é o método de autenticação padrão usado por todos os SDKs do OCI e pela CLI do OCI. Para usar esse método, monte um local no sistema host para o diretório /oracle/.oci dentro do contêiner.

Se você tiver configurado anteriormente a CLI do OCI na máquina host, a maneira mais fácil de fornecer acesso à sua chave de assinatura de API será mapear seu diretório $HOME/.oci para /oracle/.oci/ dentro do contêiner.

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

Você também pode informar a variável de ambiente OCI_CLI_CONFIG_FILE para usar outro local para o arquivo config da CLI do OCI.

Observação

Certifique-se de que o campo key_file em $HOME/.oci/config use o caractere ~ para que o caminho seja resolvido dentro e fora do contêiner; por exemplo: key_file=~/.oci/oci_api_key.pem.
Se você não tiver configurado a CLI do OCI, crie o diretório $HOME/.oci:
mkdir $HOME/.oci
Em seguida, inicie o processo de configuração interativa da CLI do OCI:
docker run --rm -it -v "$HOME/.oci:/oracle/.oci" ghcr.io/oracle/oci-cli setup config

Para obter mais informações, consulte Preparando o Arquivo de Configuração.

Autenticação de token de sessão

Para usar a autenticação baseada em token, mapeie a porta 8181 para o contêiner:
docker run --rm -it \
   -v "$HOME/.oci:/oracle/.oci" \
   -p 8181:8181 \
   ghcr.io/oracle/oci-cli session authenticate

Para obter mais informações, consulte Autenticação Baseada em Token para a CLI.

Autenticação do controlador de instâncias

Para ativar a autenticação do controlador de instâncias, você pode usar o parâmetro de linha de comando --auth instance_principal:
docker run --rm -it ghcr.io/oracle/oci-cli --auth instance_principal os ns get
Você também pode informar a variável de ambiente OCI_CLI_AUTH:
docker run --rm -it -e OCI_CLI_AUTH=instance_principal ghcr.io/oracle/oci-cli os ns get

Se você criou um alias de shell, adicione-o à definição de alias.

Para obter mais informações, consulte Métodos de Autenticação do OCI SDK.

Acesso a arquivos locais

A maneira mais simples de permitir que a CLI do OCI em execução dentro do contêiner acesse arquivos no host é vincular a montagem de um diretório do host ao contêiner.

No exemplo a seguir, o diretório $HOME/scratch é vinculado montado como /oracle/scratch no contêiner para que os arquivos desse diretório possam ser submetidos a upload em massa para o OCI Object Storage usando a CLI do 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/