Hemos visto cómo Steampipe puede unificar el acceso a las API, impulsar la metabúsqueda, aplicar KPI como código y detectar desviaciones de configuración. Los complementos habilitadores estaban, hasta hace poco, estrechamente vinculados al binario de Steampipe y a la instancia de Postgres que Steampipe inicia y controla. Eso llevó a los miembros de la comunidad de código abierto de Steampipe a preguntar: «¿Podemos usar los complementos en nuestras propias bases de datos de Postgres?» Ahora la respuesta es sí y más. Pero centrémonos primero en Postgres. Uso de un complemento Steampipe como contenedor de datos externos de Postgres Visite las descargas de Steampipe para encontrar el instalador para su sistema operativo y ejecútelo para adquirir la distribución del contenedor de datos externos (FDW) de Postgres de un complemento; en este caso, el Complemento de GitHub.$ sudo /bin/sh -c «$(curl -fsSL https://steampipe.io/install/postgres.sh)» Ingrese el nombre del complemento: github Ingrese la versión (más reciente): Descubierto: – Versión de PostgreSQL : 14 – Ubicación de PostgreSQL: /usr/lib/postgresql/14 – Sistema operativo: Linux – Arquitectura del sistema: x86_64 Según lo anterior, steampipe_postgres_github.pg14.linux_amd64.tar.gz se descargará, extraerá e instalará en: /usr/ lib/postgresql/14 Continúe con la instalación de Steampipe PostgreSQL FDW para la versión 14 en /usr/lib/postgresql/14? – Presione ‘y’ para continuar con la versión actual. – Presione ‘n’ para personalizar su directorio de instalación de PostgreSQL y seleccione una versión diferente. (S/n): Descargando steampipe_postgres_github.pg14.linux_amd64.tar.gz… ################################ ################################################## ########## 100.0% steampipe_postgres_github.pg14.linux_amd64/ steampipe_postgres_github.pg14.linux_amd64/steampipe_postgres_github.so steampipe_postgres_github.pg14.linux_amd64/steampipe_postgres_github.control steampipe_postgres_github.pg14.lin ux_amd64/steampipe_postgres_github–1.0.sql steampipe_postgres_github. pg14.linux_amd64/install.sh steampipe_postgres_github.pg14.linux_amd64/README.md Descarga y extracción completadas. Instalando steampipe_postgres_github en /usr/lib/postgresql/14… ¡La extensión steampipe_postgres_github se instaló correctamente! Los archivos se han copiado a: – Directorio de la biblioteca: /usr/lib/postgresql/14/lib – Directorio de extensiones: /usr/share/postgresql/14/extension/ Ahora conéctese a su servidor como de costumbre, usando psql u otro cliente, la mayoría normalmente como usuario de postgres. Luego ejecute estos comandos que son típicos de cualquier contenedor de datos externos de Postgres. Como con todas las extensiones de Postgres, comienza así: CREAR EXTENSIÓN steampipe_postgres_fdw_github; Para usar un contenedor de datos externo, primero crea un servidor: CREAR SERVIDOR steampipe_github ENVOLTOR DE DATOS EXTRANJEROS steampipe_postgres_github OPCIONES (config ‘token=»ghp_…»‘); Use OPCIONES para configurar la extensión para usar su token de acceso de GitHub. (Como alternativa, las variables de entorno estándar utilizadas para configurar un complemento Steampipe (en este caso es solo GITHUB_TOKEN) funcionarán si las configura antes de iniciar su instancia de Postgres). Las tablas proporcionadas por la extensión vivirán en un esquema, así que defina uno. : CREAR ESQUEMA github; Ahora importe el esquema definido por el servidor externo al esquema local que acaba de crear: IMPORTAR ESQUEMA EXTRANJERO github DEL SERVIDOR steampipe_github A github; ¡Ahora ejecute una consulta! Las tablas externas proporcionadas por la extensión se encuentran en el esquema de github, por lo que, de forma predeterminada, harás referencia a tablas como github.github_my_repository. Sin embargo, si configura search_path=»github», el esquema se vuelve opcional y puede escribir consultas utilizando nombres de tablas no calificados. seleccione recuento [flags]

de github_my_repository; count ——- 468 Si tiene muchos repositorios, la primera ejecución de esa consulta tardará unos segundos. Sin embargo, la segunda ejecución arrojará resultados instantáneamente porque la extensión incluye un caché potente y sofisticado. ¡Y eso es todo! Cada complemento de Steampipe ahora también es un contenedor de datos externo que funciona exactamente como este. Puede cargar varias extensiones para unirse entre API. Por supuesto, puede unir cualquiera de estas tablas externas basadas en API con sus propias tablas de Postgres. Y para guardar los resultados de cualquier consulta, puede anteponer crear NOMBRE de tabla como o crear NOMBRE de vista materializada como una consulta para conservar los resultados como una tabla o vista. Usando un complemento Steampipe como una extensión de SQLite que proporciona tablas virtuales Visite Descargas de Steampipe para buscar el instalador para su sistema operativo y ejecútelo para adquirir la distribución SQLite del mismo complemento. $ sudo /bin/sh -c «$(curl -fsSL https://steampipe.io/install/sqlite.sh)» Ingrese el nombre del complemento: github Ingrese la versión (más reciente): Ingrese la ubicación (directorio actual): Descargando steampipe_sqlite_github .linux_amd64.tar.gz… ######################################### ################################### 100.0% steampipe_sqlite_github.so steampipe_sqlite_github.linux_amd64.tar.gz descargado y extraído exitosamente en /home/jon/steampipe-sqlite. Aquí está la configuración. Puede colocar este código en ~/.sqlitec si desea ejecutarlo cada vez que inicie sqlite..load /home/jon/steampipe-sqlite/steampipe_sqlite_github.so seleccione steampipe_configure_github(‘ token=»ghp_…» ‘) ; Ahora puede ejecutar la misma consulta que arriba.sqlite> seleccione recuento[«/home/jon/csv»]de github_my_repository; count468 ¿Qué pasa con las diferencias entre SQL con sabor a Postgres y SQLite? ¡El centro Steampipe es tu amigo! Por ejemplo, aquí hay variantes de una consulta que accede a un campo dentro de una columna JSON para tabular los idiomas asociados con sus esencias. IDGHaquí también puede cargar varias extensiones para unirse entre API. Puede unir cualquiera de estas tablas externas basadas en API con sus propias tablas SQLite. Y puede anteponer la creación de NOMBRE de tabla a una consulta para conservar los resultados como una tabla. Uso de un complemento Steampipe como herramienta de exportación independiente. Visite las descargas de Steampipe para encontrar el instalador para su sistema operativo y ejecútelo para adquirir la distribución de exportación de un complemento. Nuevamente, ilustraremos el uso del complemento GitHub.$ sudo /bin/sh -c «$(curl -fsSL https://steampipe.io/install/export.sh)» Ingrese el nombre del complemento: github Ingrese la versión ( último): Ingrese la ubicación (/usr/local/bin): directorio temporal creado en /tmp/tmp.48QsUo6CLF. Descargando steampipe_export_github.linux_amd64.tar.gz… ######################################## ####################################### 100.0% Desinflando el archivo descargado steampipe_export_github Instalando Aplicando los permisos necesarios Eliminando El archivo descargado steampipe_export_github se instaló correctamente en /usr/local/bin $ steampipe_export_github -h Exporta datos usando el complemento github. Encuentre información de uso detallada, incluidos nombres de tablas, nombres de columnas y ejemplos en Steampipe Hub: https://hub.steampipe.io/plugins/turbot/github Uso: steampipe_export_github TABLE_NAMEFlags: –config string Datos del archivo de configuración -h, — ayuda ayuda para steampipe_export_github –limit int Limitar datos –cadena de salida Formato de salida: csv, json o jsonl (predeterminado «csv») –seleccione cadenas Datos de columna para mostrar –donde stringArray donde datos de cláusula No hay ningún motor SQL en la imagen aquí; Esta herramienta es puramente exportadora. Para exportar todos sus elementos esenciales a un archivo JSON:steampipe_export_github github_my_gist –output json > gists.json Para seleccionar solo algunas columnas y exportar a un archivo CSV:steampipe_export_github github_my_gist –output csv –seleccione «description,created_at,html_url» > gists .csv Puede usar –limit para limitar las filas devueltas y –where para filtrarlas, pero principalmente usará esta herramienta para capturar datos de manera rápida y sencilla que manipulará en otro lugar, por ejemplo, en una hoja de cálculo. en el ecosistema de complementos de Steampipe Los complementos de Steampipe no son solo interfaces sin formato para las API subyacentes. Usan tablas para modelar esas API de manera útil. Por ejemplo, la tabla github_my_repository ejemplifica un patrón de diseño que se aplica de manera consistente en todo el conjunto de complementos. De la documentación del complemento de GitHub: Puede poseer repositorios individualmente o puede compartir la propiedad de los repositorios con otras personas de una organización. La tabla github_my_repository enumerará los repositorios que posee, en los que colabora o que pertenecen a sus organizaciones. Para consultar CUALQUIER repositorio, incluidos los repositorios públicos, utilice la tabla github_repository. Otros complementos siguen el mismo patrón. Por ejemplo, el complemento de Microsoft 365 proporciona microsoft_my_mail_message y microsoft_mail_message, y el complemento de Google Workspace proporciona googleworkspace_my_gmail_message y googleworkspace_gmail. Siempre que es posible, los complementos consolidan vistas de recursos desde la perspectiva de un usuario autenticado. Si bien los complementos suelen proporcionar tablas con esquemas fijos, no siempre es así. Los esquemas dinámicos, implementados por los complementos Airtable, CSV, Kubernetes y Salesforce (entre otros), son otro patrón clave. Aquí hay un ejemplo de CSV que utiliza un Postgres FDW independiente. IMPORTAR ESQUEMA EXTRANJERO csv DESDE EL SERVIDOR steampipe_csv EN OPCIONES csv (config ‘paths=’); Ahora todos los archivos .csv en /home/jon/csv serán automáticamente tablas externas de Postgres. Suponga que realiza un seguimiento de los propietarios válidos de las instancias EC2 en un archivo llamado ec2_owner_tags. Aquí hay una consulta en la tabla correspondiente.select * de csv.ec2_owner_tags; propietario | _ctx -++—————————- Pam Beesly | {«nombre_conexión»: «csv»} Dwight Schrute | {«connection_name»: «csv»} Puede unir esa tabla con la tabla aws_ec2_instance del complemento de AWS para informar etiquetas de propietario en instancias EC2 que están (o no) enumeradas en el archivo CSV. Seleccione ec2.owner, caso cuando csv.owner es nulo, luego ‘falso’, de lo contrario ‘verdadero’ termina como is_listed de (seleccione etiquetas distintas ->> ‘propietario’ como propietario de aws.aws_ec2_instance) ec2 left join csv.ec2_owner_tags csv en ec2.owner = csv.owner; propietario | está_listado -+———– Dwight Schrute | verdadero Michael Scott | false En todo el conjunto de complementos hay más de 2300 tablas de esquema fijo predefinidas que puede usar de esta manera, además de un número ilimitado de tablas dinámicas. Y Turbot y la comunidad de código abierto de Steampipe agregan constantemente nuevos complementos. Puede acceder a este ecosistema utilizando Steampipe o Turbot Pipes, desde su propia base de datos Postgres o SQLite, o directamente desde la línea de comandos. Copyright © 2024 IDG Communications, Inc.

Source link