Steampipe, Powerpipe, Flowpipe 프로덕션 셋팅 가이드
개요
Steampipe & Powerpipe 초기 셋팅 가이드북에서 기본적인 사용방법을 안내했습니다.
데이터 집계, 시각화, 자동화가 가능한 3가지 툴을 연동하고 셋팅하는 방법을 소개합니다.
Steampipe : 데이터 집계툴
PostgreSQL 쿼리와 사전 설정된 Plugin(cc AWS, GitHub)으로 클라우드 데이터 집계
Powerpipe : 시각화툴
Steampipe로 설정된 PostgreSQL과 연동하여 데이터 시각화
Flowpipe : 자동화툴
WebHook, Cron, CronQuery(Steampipe) 등으로 다양한 자동화 처리 가능
셋팅 과정
EC2 배포하기
Git 설정 및 연동하기
EC2 배포하기
OS : Amazon Linux 2023
Type : t3.small
Disk : gp3 3000IOPS / 150 Throughput / 16GiB
Git 설정 및 연동하기
sudo yum install git
AWS Profile 설정하기
Steampipe가 리소스 정보를 읽어오기 위해서
connection
을 사용하게 됩니다.
이connection
에는 IAM User CLI Credentials으로 등록한 AWS Profile이 필요합니다.
ReadOnlyAccess
IAM Policy가 할당된 IAM Role을 생성해당 IAM Role에 대해서 CLI Credentials 발급하기
EC2 인스턴스에 AWS-CLIv2 설치하기 - Ref
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
AWS Profile 설정하기
aws configure --profile <account-alias-1> # ... aws configure --profile <account-alias-2> # ... aws configure --profile <account-alias-3> # ...
라이브러리 다운하기
sudo /bin/sh -c "$(curl -fsSL https://steampipe.io/install/steampipe.sh)"
sudo /bin/sh -c "$(curl -fsSL https://powerpipe.io/install/powerpipe.sh)"
sudo /bin/sh -c "$(curl -fsSL https://flowpipe.io/install/flowpipe.sh)"
powerpipe -v
steampipe -v
flowpipe -v
Alias 설정하기
Alias를 수동으로 설정해도 되지만 가급적 IaC 방식으로 작업하는 것을 지향합니다.
따라서 alias-injector.sh 파일을 통해서 동적으로 alias를 추가하는 것을 사용하였습니다.
alias-injector 파일 생성 하기
rm alias-injector.sh touch alias-injector.sh vi alias-injector.sh
#!/bin/bash # echo $SHELL # Function alias_inject() { local alias=$1 local alias_command=$2 local script=$3 if [ $(grep -q "$alias" $script && echo 1 || 2) -eq 1 ]; then sed -i "/$alias/c\\$alias'$alias_command'" $script else echo "" >> $script echo "$alias'$alias_command'" >> $script fi } # Constant STEAMPIPE_ALIAS="alias s=" STEAMPIPE_ALIAS_COMMAND="steampipe" POWERPIPE_ALIAS="alias p=" POWERPIPE_ALIAS_COMMAND="powerpipe" FLOWPIPE_ALIAS="alias f=" FLOWPIPE_ALIAS_COMMAND="flowpipe" SHELL_SCRIPT_PATH="/home/ec2-user/.bashrc" # Workload alias_inject "$STEAMPIPE_ALIAS" "$STEAMPIPE_ALIAS_COMMAND" "$SHELL_SCRIPT_PATH" alias_inject "$POWERPIPE_ALIAS" "$POWERPIPE_ALIAS_COMMAND" "$SHELL_SCRIPT_PATH" alias_inject "$FLOWPIPE_ALIAS" "$FLOWPIPE_ALIAS_COMMAND" "$SHELL_SCRIPT_PATH"
alias-injector 실행하기
chmod +x alias-injector.sh ./alias-injector.sh source ~/.bashrc
프로젝트 구조화
확장자에 대한 이해
폴더 구조에 대한 이해
Prettier, Linter, Syntax에 대한 이해
확장자에 대한 이해
steampipe, powerpipe, flowpipe는 각각 아래의 확장자를 가집니다.
설명의 편의를 위해 앞으로 SP, PP, FP 의 약칭으로 표기를 합니다.
Lib | Extension | Purpose |
---|---|---|
SP | *.spc | SteamPipe Configuration File |
*.sp | SteamPipe File | |
mod.sp | SteamPipe Module & Dependency File | |
PP | *.ppc | PowerPipe Configuration File |
*.pp | PowerPipe File | |
mod.pp | PowerPipe Module & Dependency File | |
FP | *.fpc | FlowPipe Configuration File |
*.fp | FlowPipe File | |
mod.fp | FlowPipe Module & Dependency File |
폴더 구조에 대한 이해
SP, PP, FP 모두 아래의 로직으로 파일이 선택됩니다.
SP cli가 입력되는 디렉토리에서 mod.sp 파일이 있어야 합니다.
s query
,s dashboard
등을 사용하려면 모듈 설치가 되어야 합니다. (mod.sp에 선언된 모듈들)모듈 설치 이후 실행을 하면 SP cli가 입력된 디렉토리 하위의 *.sp 파일이 선택됩니다.
각종 환경변수는 ~/.steampipe/config/* 혹은 ~/.steampipe/internal/* 등에 존재합니다. (세부 환경변수 구성은 sp, pp, fp 마다 다를 수 있습니다.)
따라서 SP, PP, FP 다른 폴더 구조를 가지게 하는 것이 좋아보입니다.
하지만 PP의 경우 일부 *.spc
, *.sp
파일을 참조하므로 S와 같은 폴더를 씁니다.
~/FP/*
~/SP/*