Steampipe, Powerpipe, Flowpipe 프로덕션 셋팅 가이드

Steampipe & Powerpipe & Flowpipe 가이드북
이민석's avatar
Aug 02, 2024
Steampipe, Powerpipe, Flowpipe 프로덕션 셋팅 가이드

개요

Steampipe & Powerpipe 초기 셋팅 가이드북에서 기본적인 사용방법을 안내했습니다.

데이터 집계, 시각화, 자동화가 가능한 3가지 툴을 연동하고 셋팅하는 방법을 소개합니다.

  1. Steampipe : 데이터 집계툴

    1. PostgreSQL 쿼리와 사전 설정된 Plugin(cc AWS, GitHub)으로 클라우드 데이터 집계

  2. Powerpipe : 시각화툴

    1. Steampipe로 설정된 PostgreSQL과 연동하여 데이터 시각화

  3. Flowpipe : 자동화툴

    1. WebHook, Cron, CronQuery(Steampipe) 등으로 다양한 자동화 처리 가능

셋팅 과정

  1. EC2 배포하기

  2. 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이 필요합니다.

  1. ReadOnlyAccess IAM Policy가 할당된 IAM Role을 생성

  2. 해당 IAM Role에 대해서 CLI Credentials 발급하기

  3. EC2 인스턴스에 AWS-CLIv2 설치하기 - Ref

    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    unzip awscliv2.zip
    sudo ./aws/install
  4. 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를 추가하는 것을 사용하였습니다.

  1. 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"
  2. alias-injector 실행하기

    chmod +x alias-injector.sh
    ./alias-injector.sh
    source ~/.bashrc

프로젝트 구조화

  1. 확장자에 대한 이해

  2. 폴더 구조에 대한 이해

  3. 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 모두 아래의 로직으로 파일이 선택됩니다.

  1. SP cli가 입력되는 디렉토리에서 mod.sp 파일이 있어야 합니다.

  2. s query, s dashboard 등을 사용하려면 모듈 설치가 되어야 합니다. (mod.sp에 선언된 모듈들)

  3. 모듈 설치 이후 실행을 하면 SP cli가 입력된 디렉토리 하위의 *.sp 파일이 선택됩니다.

  4. 각종 환경변수는 ~/.steampipe/config/* 혹은 ~/.steampipe/internal/* 등에 존재합니다. (세부 환경변수 구성은 sp, pp, fp 마다 다를 수 있습니다.)

따라서 SP, PP, FP 다른 폴더 구조를 가지게 하는 것이 좋아보입니다.

하지만 PP의 경우 일부 *.spc, *.sp 파일을 참조하므로 S와 같은 폴더를 씁니다.

~/FP/*
~/SP/*

Prettier, Linter, Syntax에 대한 이해

Share article
RSSPowered by inblog