Aunque, al tratarse de uno de los úlltimos en llegar, no están entre los proveedores de servicios cloud más populares; lo cierto es que durante el último año, al menos según mi impresión particular, ha mejorado bastante y ya da la imagen de una plataforma madura a tener en cuenta.
El motivo de este post es porque una de las opciones disponibles, es la administración de los componentes principales, utilizando ansible. Para ello, se requiere instalar previamente el cliente oci y el SDK de python.
El procedimiento, está perfectamente explicado en la propia documentación de OCI pero, como está principalmente orientado a servidores linux de la familia redhat y, me encontré alguna dificultad inicial al realizarla sobre una distribución de la familia Debian (Ubuntu 18.04 en mi caso concreto), he creido conveniente compartir los pasos que he seguido para obtener un resultado satisfactorio.
Lo primero que haremos, para evitar interferencias con nuestra instalación actual, es crear un entorno virtual de python, dentro del cual haremos toda la instalación de todos los elementos.
mkdir ansibleOCI cd ansibleOCI/ mkdir configuracion source venv/bin/activate pip3 install oci pip3 install oci-cli
A continuación, deberemos configurar el entorno para que disponga de todos los datos requeridos para la conexión con nuestro tenant de oci.
Antes de empezar, necesitamos recuperar cierta información que vamos a necesitar durante el proceso de configuración.
Naturalmente, debemos disponer de una cuenta oci con un usuario que disponga de los permisos necesarios para realizar las acciones que nos interesa. Con éste, nos logaremos a nuestro tenant y recuperaremos el tenant OCID (menú Administration > Tenancy Details). También necesitaremos el OCID del usuario (menú Identity > Users > User Details) y conocer al región del mismo (eu-frankfurt-1 en mi caso).
Una vez recopilados estos datos, podemos proceder a configurar el entorno ejecutando el siguiente comando e informando los datos solicitados.
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/miusuario/.oci/config]: /home/miusuario/ansibleOCI/configuracion/config Enter a user OCID: ocid1.user.oc1..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Enter a tenancy OCID: ocid1.tenancy.oc1..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Enter a region (e.g. 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-saopaulo-1, uk-gov-cardiff-1, uk-gov-london-1, uk-london-1, us-ashburn-1, us-gov-ashburn-1, us-gov-chicago-1, us-gov-phoenix-1, us-langley-1, us-luke-1, us-phoenix-1, us-sanjose-1): eu-frankfurt-1 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/miusuario/.oci]: /home/miusuario/ansibleOCI/configuracion Enter a name for your key [oci_api_key]: Public key written to: /home/miusuario/ansibleOCI/configuracion/oci_api_key_public.pem Enter a passphrase for your private key (empty for no passphrase): Private key written to: /home/miusuario/ansibleOCI/configuracion/oci_api_key.pem Fingerprint: 94:4a:85:a6:57:a9:a5:80:76:9a:04:7a:0a:6a:48:59 Config written to /home/miusuario/ansibleOCI/configuracion/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
Los pasos anterirores, generarán un par de claves (pública y privada) y, un fichero de configuración de la conexión, en el directorio que hayamos especificado. Si hemos dejado las ubicaciones por defecto, ambos se situarán dentro de $HOME/.oci/, que es donde lo esperan encontrar, tanto el Python SDK como los módulos ansible. Pero, para completar el ejemplo, he modificado la ubicación por defecto. De esta forma podremos ver las implicaciones que tienene.
Antes de poder probar la conexión, tenemos que subir la clave pública que hemos generado anteriormrnte al perfil del usuario (menú Identity > Users > User Details > API Keys).
Si hemos mantenido el destino por defecto, podríamos probar la configuración de la conexión con el siguiente comando.
oci os ns get
Pero, como hemos decidido complicarnos un poco la vida personalizando el destino, deberemos asumir las consecuencias de nuestra decición y ejecutar el comando de la siguiente forma.
oci os ns get --config-file /home/miusuario/ansibleOCI/configuracion/config
Una forma de solventar en parte esta incomodidad, es definir una variable de entorno OCI_CONFIG_FILE
export OCI_CONFIG_FILE="/home/miusuario/ansibleOCI/configuracion/config"
En caso de no definir la variable de entorno, posteriormente, nos veremos obligados a informar el parámetro config_file_location siempre que utilicemos los módulos ansible para oci.
Sea como fuere, si todo ha ido bien, obtendremos una respuesta parecida a la siguiente:
{ "data": "frdjxxxxxjgwk" }
Una vez confirmado que podemos conectar a nuestra infraestructura cloud, procederemos a instalar ansible, y los módulos oci, dentro de nuestro entorno virtual.
pip3 install ansible git clone https://github.com/oracle/oci-ansible-modules.git cd oci-ansible-modules/ python3 ./install.py
A partir de este momento, ya deberíamos poder utilizar ansible para gestionar nuestra infraestructura oci.
Top comments (0)