Hola a todos, el siguiente post es simplemente la explicación de los pasos necesarios para crear una VM en Oracle OCI que nos permita tener instalado ocicli para manipular nuestros recursos en la nube por medio de apis o scripts.
Los ejemplos que voy a mostrar van a ser super simples, pero por supuesto que se le puede dedicar más tiempo y armar scripts con lógica más interesante.
Que vamos a necesitar?
- Una VM IaaS.
- Un usuario de OCI con los permisos adecuados.
- Instalar y configurar el software
- Probar comandos.
1. VM:
Lo primero que necesitamos es una pequeña VM para instalar ocicli y desde la cual estariamos ejecutando los comandos. Esta VM se puede crear con mínimos recursos, así que no sería una VM que nos genere un gran costo de mantenimiento. También se podria usar cualquier VM dentro de nuestra infraestrcutura.
Consideremos que esta VM tiene que estar dentro de la misma subnet de los recurso que necesitemos manipular o tener las reglas adecuadas.
Para crear una instancias, pueden seguir el siguiente post: creando-una-vm-de-linux
2. Usuario de OCI.
Para esto vamos a crear un usuario de servicio del tipo IAM sin contraseña o email. Ya que la autentificación se va a realizar por medio de pares de Keys.
Como una buena práctica generé un grupo y se lo asigne a este mismo usuario.
Una vez creado el usuario en este paso copien en un notepad el OCID del usuarioejemplo: ocid1.user.oc1..aaabbbbbza6smearcrmasdg1g4c11|5a3dwxnnbno6hjx4l5cdwb4t7ev1svsq
En este punto es necesario crear una policy para darle permisos al grupo, se podria dar sobre todo el tenant o un compartment. Esto va a ser el alcance que tenga este usuario y los permisos sobre los recursos que pueda manipular.
En mi caso solo le voy a dar permiso para manicupar un EXACS
Dentro de Identity, vamos a Policies
3. Instalación y Configuración del Software
Lo primero que tenemos que hacer es instalar las librerias y tools a nivel de Sistema Operativo, en mi caso un Linux 8. La referencia la podemos ver en : https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm#InstallingCLI__oraclelinux8
sudo dnf -y install oraclelinux-developer-release-el8 sudo dnf install python36-oci-cli The CLI will be installed to the Python site packages: /usr/lib/python3.6/site-packages/oci_cli /usr/lib/python3.6/site-packages/services Documentation and examples
will be installed in the /usr/share/doc/python36-oci-cli-<version>/
directory. |
Para los siguientes pasos tenemos que tener 3 datos fundamentales
User OCID, Tenant OCID y conocer nuestra región en OCI.
# sudo su - ocicliusr $ oci -version 3.9.0 $ oci setup config This command provides a walkthrough of creating a valid CLI config file. The following links explain where to find the information required by this script: User API Signing Key, OCID and Tenancy OCID: https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#Other Region: https://docs.cloud.oracle.com/Content/General/Concepts/regions.htm General config documentation: https://docs.cloud.oracle.com/Content/API/Concepts/sdkconfig.htm Enter a location for your config [/home/ocicliusr/.oci/config]: Enter a user OCID: ocid1.user.oc1..aaaffffffza6smfqrcrm6asdg4ckk5a3dwxasdgfo6hjasdcdwbasdebywvsq Enter a tenancy OCID: ocid1.tenancy.oc1..aadddddaaj3qj3qb26sasdf27q7mwasdg43zw52obasdg3cnjk12vn433lba Enter a region by index or name(e.g. 1: af-johannesburg-1, 2: ap-chiyoda-1, 3: ap-chuncheon-1, 4: ap-dcc-canberra-1, 5: ap-hyderabad-1,6: ap-ibaraki-1, 7: ap-melbourne-1, 8: ap-mumbai-1, 9: ap-osaka-1, 10: ap-seoul-1,11: ap-singapore-1, 12: ap-sydney-1, 13: ap-tokyo-1, 14: ca-montreal-1, 15: ca-toronto-1,16: eu-amsterdam-1, 17: eu-frankfurt-1, 18: eu-marseille-1, 19: eu-milan-1, 20: eu-stockholm-1,21: eu-zurich-1, 22: il-jerusalem-1, 23: me-abudhabi-1, 24: me-dcc-muscat-1, 25: me-dubai-1,26: me-jeddah-1, 27: sa-santiago-1, 28: sa-saopaulo-1, 29: sa-vinhedo-1, 30: uk-cardiff-1,31: uk-gov-cardiff-1, 32: uk-gov-london-1, 33: uk-london-1, 34: us-ashburn-1, 35: us-gov-ashburn-1,36: us-gov-chicago-1, 37: us-gov-phoenix-1, 38: us-langley-1, 39: us-luke-1, 40: us-phoenix-1,41: us-sanjose-1): 28 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]: y Enter a directory for your keys to be created [/home/ocicliusr/.oci]:[ENTER] Enter a name for your key [oci_api_key]:[ENTER] Public key written to: /home/ocicliusr/.oci/oci_api_key_public.pem Enter a passphrase for your private key (empty for no passphrase):[ENTER] Private key written to: /home/ocicliusr/.oci/oci_api_key.pem Fingerprint: 91:8f:31:7e:15:48:4f:a3:da:a6:b7:d3:b2:74:15:12 Config written to /home/ocicliusr/.oci/config If you haven't already uploaded your API Signing public key through the console, follow the instructions on the page linked below in the section 'How to upload the public key': https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How2 ##Guardar la public key $ cat /home/ocicliusr/.oci/oci_api_key_public.pem |
Una vez instalado OCI, tenemos que agregar la key publica al usuario.
Dentro del menu de OCI en el perfil del usuario que creamos en el paso 1, vamos a los recursos (abajo a la izquierda) y hacemos click en API Keys, luego en Add Key.
Una vez que pegamos la publick key, nos genera el config file del oci, el cual tenemos que copiar para crear dentro del home del usuario de linux. En /home/user/.oci/config (como muestra la imagen)
4. Probar comandos.
Ahora solo nos queda jugar con los comandos de oci-cli, hay que destacar que estas apis tienen constantes actualizaciones, asi que recomiendo validar cada tanto que no exista una versión nueva.
Dejo el link de referencia a todos los comandos de oci-cli: click
Ejemplo para realizar un stop de una instancia iaas:
oci compute instance action --action stop --instance-id <OCID de la Instancia>
Ejemplo para realizar un start de una instancia iaas:
oci compute instance action --action start --instance-id <OCID de la Instancia>
Realmente hay muchisimos comandos que se pueden investigar. Los output de esos son en formato json que los podrian manipular par mostrar en cualquier aplicación compatible con la lectura de json files.
Para obtener ayuda desde la misma linea de comando, pueden ejecutar.
oci --help
si te gusto te invito a seguirme: SEGUIR