Como Instalar Oracle Cloud Infrastructure CLI en Linux y Windows

Advertencia
Este artículo se actualizó por última vez el 2020-08-29, el contenido puede estar desactualizado.

¡Hola a todos!

El día de hoy les voy a mostrar como instalar la herramienta CLI de Oracle Cloud Infrastructure para Linux y Windows.

A diferencia de las herramientas CLI de AWS o Azure, la CLI de OCI no cuenta con un instalador oficial que facilitaría mucho la vida, por lo que vamos a meternos de lleno en la instalación “manual” siguiendo la documentación de la CLI de Oracle.


Para poder instalar la CLI de OCI, debemos cumplir con los siguientes requisitos:

  • Tener una cuenta de Oracle Cloud Infrastructure.
  • Un usuario creado en esa cuenta, en un grupo con una política que otorgue los permisos deseados. Este usuario de cuenta puede ser usted, otra persona o un sistema que llama a la API.
  • 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.

Necesitaremos tener los siguientes paquetes instalados:

  • Python 3.5+
  • gcc
  • libffi-devel
  • python-devel
  • openssl-devel
1
$ yum install python3 gcc libffi-devel python3-devel openssl-devel
  • Python 3.5+
  • Git Bash Para poder generar el certificado API
  • PowerShell

Creamos el directorio .oci, la cual estará en la carpeta home del usuario:

En Linux:

1
$ mkdir ~/.oci

En Windows abrimos una terminal de PowerShell y vamos al directorio del usuario:

1
2
$ cd C:\Users\usuario
$ mkdir .oci

Generamos una llave privada de firma API, colocando la ubicación donde queremos guardar el archivo y el formato .pem, especificando el directorio .oci, la cual usaremos para autenticanos al servicio de OCI:

1
2
3
4
$ openssl genrsa -out ~/.oci/oci_api_key.pem 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
....++++
..........................................++++

Nos aseguramos que la clave privada la pueda ver solo el usuario:

1
$ chmod 400 ~/.oci/oci_api_key.pem

Y ahora generamos la llave pública:

1
2
$ openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem
writing RSA key

Subimos nuestra llave pública, para eso debemos iniciar sesión en nuestra cuenta de OCI, damos click en la esquina superior derecha (el icono de nuestro perfil)

/images/oci-okit-linux-windows/oci-3.png
Pantalla Usuarios

Vamos a la pantalla Usuarios, opción API Keys, y agregamos una nueva.

/images/oci-okit-linux-windows/oci-6.png
Usuarios

Arrastramos solo la LLAVE PÚBLICA, y click en Add.

/images/oci-okit-linux-windows/oci-7.png
API Keys

Allí se va a cargar el fingerprint, vamos a copiar ese valor y lo pegamos en un Notepad o en algún editor de textos, que lo vamos a necesitar más adelante.

/images/oci-okit-linux-windows/oci-8.png
API Keys


Bajamos e instalamos de una vez la versión más actual del script de instalación:

1
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

El script nos va a hacer una serie de preguntas:

  • ¿En cúal directorio le gustaría instalar? Podemos colocar una ruta alterna, en este caso usaré /home/usuario/oci-cli
1
2
3
===> In what directory would you like to place the install? (leave blank to use '/home/usuario/lib/oracle-cli'): /opt/oci-cli
-- Creating directory '/home/usuario/oci-cli'.
-- We will install at '/home/usuario/oci-cli'.
  • ¿En cuál directorio le gustaría instalar el ejecutable oci?
1
===> In what directory would you like to place the 'oci' executable? (leave blank to use '/home/usuario/bin'): /home/usuario/oci-cli/
  • ¿En cuál directorio le gustaría instalar los scripts de OCI?
1
===> In what directory would you like to place the OCI scripts? (leave blank to use '/home/usuario/bin/scripts'): /home/usuario/oci-cli/bin/scripts/

Nos va a preguntar si queremos instalar paquetes opcionales, presionamos ENTER de momento:

1
2
===> Currently supported optional packages are: ['db (will install cx_Oracle)']
What optional CLI packages would you like to be installed (comma separated names; press enter if you don't need any optional packages)?: PRESIONAMOS ENTER

Para finalizar la configuración nos preguntará si deseamos modificar el PATH en nuestro shell automáticamente, colocamos Y luego ENTER:

1
===> Modify profile to update your $PATH and enable shell/tab completion now? (Y/n): Y

Indicamos la ruta de nuestro archivo .bashrc (si usamos bash), o .zshrc (en caso de usar zsh):

1
2
3
4
5
6
7
8
9
===> Enter a path to an rc file to update (file will be created if it does not exist) (leave blank to use '/home/usuario/.bashrc'): /home/usuario/.bashrc
-- Backed up '/home/vagrant/.bashrc' to '/home/usuario/.bashrc.backup'
-- Tab completion set up complete.
-- If tab completion is not activated, verify that '/home/usuario/.bashrc' is sourced by your shell.
--
-- ** Run `exec -l $SHELL` to restart your shell. **
--
-- Installation successful.
-- Run the CLI with /home/usuario/oci-cli/oci --help

Inyectamos los cambios a nuestro shell:

bash

1
$ source ~/.bashrc

zsh

1
$ source ~/.zshrc

Comprobamos si está correctamente instalado, consultado la ayuda del programa:

1
2
3
4
5
6
7
8
$ oci --help
Usage: oci [OPTIONS] COMMAND [ARGS]...

  Oracle Cloud Infrastructure command line interface, with support for
  Audit, Block Volume, Compute, Database, IAM, Load Balancing, Networking,
  DNS, File Storage, Email Delivery and Object Storage Services.

  --- SALIDA OMITIDA ---
  • Abrimos una consola de PowerShell como ADMINISTRADOR
  • El instalador permite la terminación automática al instalar y ejecutar un script. Para permitir la ejecución de este script, debe activar la política de ejecución RemoteSigned.

Para configurar la política de ejecución remota para PowerShell, ejecute el siguiente comando:

1
Set-ExecutionPolicy RemoteSigned
  • Para ejecutar el script del instalador, ejecute el siguiente comando:
1
powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1'))"

El script nos va a hacer una serie de preguntas:

  • ¿En cuál directorio le gustaría instalar? Podemos colocar una ruta alterna, en este caso usaré /home/usuario/oci-cli
1
2
3
===> In what directory would you like to place the install? (leave blank to use 'C:\Users\usuario\lib\oracle-cli'): C:\Users\usuario\oracle-cli
-- Creating directory 'C:\Users\usuario\oracle-cli'.
-- We will install at 'C:\Users\usuario\oracle-cli'.
  • ¿En cuál directorio le gustaría instalar el ejecutable oci?
1
===> In what directory would you like to place the 'oci.exe' executable? (leave blank to use 'C:\Users\usuario\bin'): C:\Users\usuario\oci-cli\
  • ¿En cuál directorio le gustaría instalar los scripts de OCI?
1
===> In what directory would you like to place the OCI scripts? (leave blank to use 'C:\Users\usuario\oci-cli\bin\scripts'): C:\Users\usuario\oracle-cli\bin\scripts

Nos va a preguntar si queremos instalar paquetes opcionales, presionamos ENTER de momento:

1
2
===> Currently supported optional packages are: ['db (will install cx_Oracle)']
What optional CLI packages would you like to be installed (comma separated names; press enter if you don't need any optional packages)?: PRESIONAMOS ENTER

Para finalizar la configuración nos preguntará si deseamos modificar el PATH en nuestro PowerShell automáticamente, colocamos Y luego ENTER:

1
2
3
4
5
6
7
8
===> Modify PATH to include the CLI and enable tab completion in PowerShell now? (Y/n): Y
--
-- ** Close and re-open PowerShell to reload changes to your PATH **
-- In order to run the autocomplete script, you may also need to set your PowerShell execution policy to allow for running local scripts (as an Administrator run Set-ExecutionPolicy RemoteSigned in a PowerShell prompt)
--
-- Installation successful.
-- Run the CLI with C:\Users\usuario\oci-cli\oci.exe --help
VERBOSE: Successfully installed OCI CLI!

Cerramos PowerShell y lo volvemos a abrir.

Comprobamos si está correctamente instalado, consultado la ayuda del programa:

1
2
3
4
5
6
7
8
$ oci --help
Usage: oci [OPTIONS] COMMAND [ARGS]...

  Oracle Cloud Infrastructure command line interface, with support for
  Audit, Block Volume, Compute, Database, IAM, Load Balancing, Networking,
  DNS, File Storage, Email Delivery and Object Storage Services.

  --- SALIDA OMITIDA ---

Ejecutamos el comando:

1
$ oci setup config

Nos realizará unas preguntas, primero por la ubicación del archivo config, dejamos la que nos muestra por defecto:

1
Enter a location for your config [/home/usuario/.oci/config]:

Lo siguiente que nos va a pedir es el usuario OCID:

1
Enter a user OCID:

Por lo que debemos iniciar sesión en nuestra cuenta OCI, vamos al icono de Perfil y hacemos click en nuestro usuario registrado.

/images/oci-okit-linux-windows/oci-2.png
Pantalla Principal

Copiamos nuestra OCID de usuario y la colocamos en el parámetro user.

/images/oci-okit-linux-windows/oci-3.png
Pantalla Usuarios

Seguido colocamos el OCID de la cuenta (tenancy):

1
Enter a tenancy OCID:

Vamos a la opción Tenancy:

/images/oci-okit-linux-windows/oci-4.png
Pantalla Usuarios

Copiamos nuestra OCID de la cuenta y la colocamos en el parámetro tenancy:

/images/oci-okit-linux-windows/oci-5.png
Pantalla Tenancy

Luego nos pide escoger la región principal, en mi caso será us-ashburn-1:

1
2
3
4
5
6
Enter a region (e.g. ap-chiyoda-1, ap-chuncheon-1, ap-hyderabad-1, ap-melbourne-
1, ap-mumbai-1, ap-osaka-1, ap-seoul-1, ap-sydney-1, ap-tokyo-1, ca-montreal-1,
ca-toronto-1, eu-amsterdam-1, eu-frankfurt-1, eu-zurich-1, me-jeddah-1, sa-saopa
ulo-1, uk-gov-cardiff-1, uk-gov-london-1, uk-london-1, us-ashburn-1, us-gov-ashb
urn-1, us-gov-chicago-1, us-gov-phoenix-1, us-langley-1, us-luke-1, us-phoenix-1
, us-sanjose-1): us-ashburn-1

Nos preguntará si deseamos generar una nueva llave o si queremos adjuntar una existente, como ya la creamos al principio del artículo, colocamos “n”:

1
2
Do you want to generate a new API Signing RSA key pair? (If you decline you will
 be asked to supply the path to an existing key.) [Y/n]: n

E indicamos la ruta donde se encuentra la clave privada:

1
2
3
Enter the location of your API Signing private key file: /home/vagrant/.oci/oci_api_key.pem
Fingerprint: 77:3d:77:73:::::::::::::::::
Config written to /home/usuario/.oci/config

La manera manual, es crear el archivo de configuración en /home/usuario/.oci/config, con su editor de textos de confianza:

Fedora 32:

1
$ vim /home/usuario/.oci/config

En Windows 10 Pro, abrimos un Notepad y vamos a escribir los siguientes parámetros:

1
2
3
4
5
6
[DEFAULT]
user=ocid1.user.oc1..aaaaaaaak6z......
fingerprint=3b:7e:37:ec:a0:86:1....
key_file=/home/usuario/oci-designer-toolkit/containers/oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaawpqblfem........
region=us-phoenix-1

Donde:

  • user es el identificador OCID de usuario en OCI
  • fingerprint es la huella digital de la llave ssh
  • key_file es la ubicación donde está almacenada la llave privada ssh (la guardamos en /home/usuario/.oci/oci_api_key.pem) En Windows substituimos a la ruta del usuario (normalmente C:\Users\usuario.oci\oci_api_key.pem)
  • tenancy es el identificador OCID de tu cuenta
  • region es la región por defecto donde despliegues la infraestructura

Y ya tendremos instalado y configurado el CLI de OCI en nuestro sistema.

Espero les haya gustado este tutorial, ¡hasta la próxima!

Si te pareció útil este artículo y el proyecto en general, considera brindarme un café :)

Buy me a coffeeBuy me a coffee