هر پلاگین Steampipe اکنون به عنوان یک بسته داده خارجی برای Postgres، یک افزونه جدول مجازی برای SQLite و یک ابزار صادرات مستقل در دسترس است.
ما دیدهایم که چگونه Steampipe میتواند دسترسی به APIها را یکپارچه کند، جستجوی متا را درایو کند، KPIها را بهعنوان کد اعمال کند، و پیکربندی را شناسایی کند رانش. افزونههای فعالکننده تا همین اواخر، کاملاً به باینری Steampipe و نمونهای از Postgres که Steampipe راهاندازی میکند متصل بودند. و کنترل ها این باعث شد تا اعضای جامعه منبع باز Steampipe بپرسند: “آیا می توانیم از افزونه ها در پایگاه داده Postgres خود استفاده کنیم؟” اکنون پاسخ مثبت است – و بیشتر. اما اجازه دهید ابتدا روی Postgres تمرکز کنیم.
استفاده از پلاگین Steampipe به عنوان یک بسته داده خارجی Postgres
از دانلودهای Steampipe دیدن کنید تا نصب کننده سیستم عامل خود را پیدا کنید و آن را اجرا کنید تا Postgres را بدست آورید توزیع بسته داده خارجی (FDW) یک افزونه—در این مورد، افزونه GitHub.
$ sudo /bin/sh -c "$(curl -fsSL https://steampipe.io/install/postgres.sh)" Enter the plugin name: github Enter the version (latest): Discovered: - PostgreSQL version: 14 - PostgreSQL location: /usr/lib/postgresql/14 - Operating system: Linux - System architecture: x86_64 Based on the above, steampipe_postgres_github.pg14.linux_amd64.tar.gz will be downloaded, extracted and installed at: /usr/lib/postgresql/14 Proceed with installing Steampipe PostgreSQL FDW for version 14 at /usr/lib/postgresql/14? - Press 'y' to continue with the current version. - Press 'n' to customize your PostgreSQL installation directory and select a different version. (Y/n): Downloading steampipe_postgres_github.pg14.linux_amd64.tar.gz... ########################################################################################### ۱۰۰.۰% 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.linux_amd64/steampipe_postgres_github--1.0.sql steampipe_postgres_github.pg14.linux_amd64/install.sh steampipe_postgres_github.pg14.linux_amd64/README.md Download and extraction completed. Installing steampipe_postgres_github in /usr/lib/postgresql/14... Successfully installed steampipe_postgres_github extension! Files have been copied to: - Library directory: /usr/lib/postgresql/14/lib - Extension directory: /usr/share/postgresql/14/extension/
اکنون طبق معمول، با استفاده از psql
یا کلاینت دیگری، معمولاً به عنوان کاربر postgres
، به سرور خود متصل شوید. سپس این دستورات را که برای هر پوشش داده خارجی Postgres معمولی است، اجرا کنید. مانند تمام پسوندهای Postgres، شما اینگونه شروع می کنید:
CREATE EXTENSION steampipe_postgres_fdw_github;
برای استفاده از یک بسته داده خارجی، ابتدا یک سرور ایجاد می کنید:
CREATE SERVER steampipe_github FOREIGN DATA WRAPPER steampipe_postgres_github OPTIONS (config 'token="ghp_..."');
از OPTIONS برای پیکربندی افزونه برای استفاده از نشانه دسترسی GitHub خود استفاده کنید. (متغیرهای محیط استاندارد مورد استفاده برای پیکربندی افزونه Steampipe – در این مورد فقط GITHUB_TOKEN
است – اگر آنها را قبل از شروع نمونه Postgres تنظیم کنید، کار خواهند کرد.)
جدول ارائه شده توسط برنامه افزودنی در یک طرحواره زندگی می کنند، بنابراین تعریف کنید یک:
CREATE SCHEMA github;
اکنون طرح تعریف شده توسط سرور خارجی را به طرح محلی که ایجاد کرده اید وارد کنید:
IMPORT FOREIGN SCHEMA github FROM SERVER steampipe_github INTO github;
اکنون یک پرس و جو را اجرا کنید!
جدول های خارجی ارائه شده توسط برنامه افزودنی در طرحواره github
زندگی می کنند، بنابراین به طور پیش فرض به جداولی مانند github.github_my_repository
مراجعه خواهید کرد. اگر set search_path = 'github'
را انجام دهید، این طرح اختیاری میشود و میتوانید با استفاده از نامهای جدول نامشخص، پرسوجوهایی بنویسید.
select
count(*)
from
github_my_repository;
count
-------
۴۶۸
اگر مخازن زیادی دارید، اولین اجرای آن کوئری چند ثانیه طول خواهد کشید. اجرای دوم فوراً نتایج را برمیگرداند، زیرا برنامه افزودنی شامل یک کش.
و این همه چیز است! اکنون هر افزونه Steampipe یک بسته داده خارجی است که دقیقاً مانند این کار می کند. میتوانید چندین افزونه را برای پیوستن به APIها بارگیری کنید. . البته شما می توانید به هر یک از این جداول خارجی منبع API با جداول Postgres خود بپیوندید. و برای ذخیره نتایج هر پرس و جو، می توانید create جدول NAME به عنوان
یا create materialized view NAME as
را به یک پرس و جو اضافه کنید تا نتایج به عنوان جدول یا نما باقی بمانند. p>
استفاده از افزونه Steampipe به عنوان یک برنامه افزودنی SQLite که جداول مجازی را ارائه می کند
از دانلودهای Steampipe دیدن کنید تا نصب کننده سیستم عامل خود را بیابید و آن را برای دریافت SQLite اجرا کنید توزیع همان افزونه.
$ sudo /bin/sh -c "$(curl -fsSL https://steampipe.io/install/sqlite.sh)" Enter the plugin name: github Enter version (latest): Enter location (current directory): Downloading steampipe_sqlite_github.linux_amd64.tar.gz... ############################################################################ ۱۰۰.۰% steampipe_sqlite_github.so steampipe_sqlite_github.linux_amd64.tar.gz downloaded and extracted successfully at /home/jon/steampipe-sqlite.
تنظیمات اینجاست. اگر میخواهید هر بار که sqlite
را شروع میکنید، آن را اجرا کنید، میتوانید این کد را در ~/.sqliterc
قرار دهید.
.load /home/jon/steampipe-sqlite/steampipe_sqlite_github.so select steampipe_configure_github(' token="ghp_..." ');
اکنون میتوانید همان عبارت بالا را اجرا کنید.
sqlite> select count(*) from github_my_repository;
count(*)
۴۶۸
تفاوت بین SQL با طعم Postgres و SQLite با طعم چیست؟ مرکز Steampipe دوست شماست! به عنوان مثال، در اینجا انواعی از یک جستجو وجود دارد که به یک فیلد در یک ستون JSON دسترسی دارد تا زبان های مرتبط با مفاهیم شما را جدول بندی کند.
در اینجا نیز میتوانید چندین برنامه افزودنی را بارگیری کنید تا پیوستید API ها. شما می توانید به هر یک از این جداول خارجی منبع API با جداول SQLite خود بپیوندید. و می توانید ایجاد جدول NAME به عنوان
را به یک پرس و جو اضافه کنید تا نتایج به عنوان جدول باقی بمانند.
استفاده از افزونه Steampipe به عنوان ابزار صادرات مستقل
از دانلودهای Steampipe دیدن کنید تا نصب کننده سیستم عامل خود را پیدا کنید و آن را اجرا کنید تا صادرات را بدست آورید توزیع یک افزونه مجدداً، ما با استفاده از افزونه GitHub توضیح خواهیم داد.
$ sudo /bin/sh -c "$(curl -fsSL https://steampipe.io/install/export.sh)" Enter the plugin name: github Enter the version (latest): Enter location (/usr/local/bin): Created temporary directory at /tmp/tmp.48QsUo6CLF. Downloading steampipe_export_github.linux_amd64.tar.gz... ############################################################################## ۱۰۰.۰% Deflating downloaded archive steampipe_export_github Installing Applying necessary permissions Removing downloaded archive steampipe_export_github was installed successfully to /usr/local/bin
$ steampipe_export_github -h Export data using the github plugin. Find detailed usage information including table names, column names, and examples at the Steampipe Hub: https://hub.steampipe.io/plugins/turbot/github Usage: steampipe_export_github TABLE_NAME [flags] Flags: --config string Config file data -h, --help help for steampipe_export_github --limit int Limit data --output string Output format: csv, json or jsonl (default "csv") --select strings Column data to display --where stringArray where clause data
در تصویر اینجا موتور SQL وجود ندارد. این ابزار صرفا یک صادر کننده است. برای صادر کردن تمام مفاهیم خود به یک فایل JSON:
steampipe_export_github github_my_gist --output json > gists.json
برای انتخاب فقط برخی از ستونها و صادرات به فایل CSV:
steampipe_export_github github_my_gist --output csv --select "description,created_at,html_url" > gists.csv
میتوانید از --limit
برای محدود کردن ردیفهای برگشتی و --where
برای فیلتر کردن آنها استفاده کنید، اما بیشتر از این ابزار برای گرفتن سریع و آسان استفاده خواهید کرد. دادههایی که در جای دیگری ماساژ میدهید، مثلاً در صفحهگسترده.
به اکوسیستم پلاگین Steampipe ضربه بزنید
افزونههای Steampipe فقط رابطهای خام برای APIهای اساسی نیستند. آنها از جداول برای مدلسازی آن APIها به روشهای مفید استفاده می کنند. به عنوان مثال، جدول github_my_repository
الگوی طراحی را نشان می دهد که به طور مداوم در مجموعه افزونه ها اعمال می شود. از اسناد افزونه GitHub:
سایر پلاگین ها نیز از همین الگو پیروی می کنند. برای مثال، افزونه Microsoft 365 هم microsoft_my_mail_message
و هم < را ارائه میکند. code>microsoft_mail_message، و افزونه Google Workspace googleworkspace_my_gmail_message< /code> و
googleworkspace_gmail
. در صورت امکان، افزونه ها نماهای منابع را از دیدگاه یک کاربر تأیید شده یکپارچه می کنند.
در حالی که پلاگین ها معمولا جداول با طرحواره های ثابت ارائه می دهند، همیشه اینطور نیست. طرحواره های پویا، پیاده سازی شده توسط Airtable، CSV، Kubernetes افزونههای و Salesforce (در میان سایر موارد)، الگوی کلیدی دیگری هستند. در اینجا یک مثال CSV با استفاده از Postgres FDW مستقل وجود دارد.
IMPORT FOREIGN SCHEMA csv FROM SERVER steampipe_csv INTO csv OPTIONS(config 'paths=["/home/jon/csv"]');
اکنون همه فایلهای .csv
در /home/jon/csv
بهطور خودکار جداول خارجی Postgres خواهند بود. فرض کنید صاحبان معتبر نمونه های EC2 را در فایلی به نام ec2_owner_tags
پیگیری می کنید. در اینجا یک پرس و جو در برابر جدول مربوطه وجود دارد.
select * from csv.ec2_owner_tags; owner | _ctx ----------------+---------------------------- Pam Beesly | {"connection_name": "csv"} Dwight Schrute | {"connection_name": "csv"}
میتوانید با افزونههای AWS aws_ec2_instance
جدول برای گزارش برچسبهای مالک در نمونههای EC2 که در فایل CSV فهرست شدهاند (یا نیستند).
select ec2.owner, case when csv.owner is null then 'false' else 'true' end as is_listed from (select distinct tags ->> 'owner' as owner from aws.aws_ec2_instance) ec2 left join csv.ec2_owner_tags csv on ec2.owner = csv.owner;
owner | is_listed ----------------+----------- Dwight Schrute | true Michael Scott | false
در مجموعه افزونهها، بیش از ۲۳۰۰ جدول طرحواره از پیش تعریفشده وجود دارد که میتوانید به این روشها استفاده کنید، به علاوه تعداد نامحدودی جدول پویا. و افزونه های جدید به طور مداوم توسط Turbot و انجمن منبع باز Steampipe اضافه می شوند. میتوانید با استفاده از Steampipe یا Turbot Pipes، از پایگاه داده Postgres یا SQLite خودتان، یا مستقیماً از خط فرمان.
پست های مرتبط
Steampipe unbundled: از APIهای ابری تا پایگاه داده شما
Steampipe unbundled: از APIهای ابری تا پایگاه داده شما
Steampipe unbundled: از APIهای ابری تا پایگاه داده شما