tl;dr

tl;dr 作ったもの furikake 使い方 ちっぷす 以上 まだまだ awspec ということで tl;dr ギョームにて AWS リソース一覧を Backlog Wiki や Excel にまとめる度になんて不毛な作業をやっているんだろうと自問自答を繰り返しておりました. そう, EC2 を追加したり削除...

inokara.hateblo.jp

先日, 作成した furikake について, 色々と修正した上で gem 化してリリースしました.

furikake | RubyGems.org | your community gem host

ということで

furikake の始め方が変わりました

詳細は

README をご一読下さい.

It is a command line tool to register your resources in Wiki page (Markdown format). - inokappa/furikake

github.com

セットアップ

gem 化に伴い, gem コマンドや bundler を利用してインストールすることが出来ます. また, 従来は .furikake.yml を手動で生成していましたが, 以下のように setup コマンドを実行することで生成することが出来ます.

$ bundle exec furikake setup

以下のように .furikake.yml が出力されます.

resources:
  aws:
    - clb
    - vpc_endpoint
    - security_group
    - ec2
    - kinesis
    - lambda
    - alb
    - directory_service
    - elasticsearch_service
    - vpc
    - rds
backlog:
  projects:
    - space_id: 'your-backlog-space-id'
      api_key: 'your-backlog-api-key'
      top_level_domain: 'your-backlog-top-level-domain'
      wiki_id: your-wiki-id
      wiki_name: 'your-wiki-name'
      header: >
        # Test Header

        [toc]

        ## Sub Header
      footer: >
        ## Test Footer

        ### Sub Footer

あとは, 環境に応じて space_idapi_key 等の情報を修正して下さい. また, resources キー以下の属性値はドキュメント化する AWS リソースの一覧となります. 将来的には, この属性値を削除することで, 指定したリソースのみドキュメント化出来るようにする予定です.

リソースタイプの実装

Markdown だけでなく, CSV や Google SpreadSheet 等の異なるフォーマットにも対応する為, 内部処理を少し修正しています. それに伴い, 以下のように, リソースタイプの実装が少しだけシンプルにしたつもりです.

module Furikake
  module Resources
    module Ec2
      def report(format = nil)
        instance = get_resources
        contents = {
          title: 'EC2',
          resources: [
            {
               subtitle: '',
               header: ['Name', 'Instance ID', 'Instance Type',
                        'Availability Zone', 'Private IP Address',
                        'Public IP Address', 'State'],
               resource: instance
            }
          ]
        }
        Furikake::Formatter.shaping(format, contents)
      end

      def get_resources
        ec2 = Aws::EC2::Client.new
        params = {}
        instances = []
        loop do
          res = ec2.describe_instances(params)
...

get_resources メソッドは従来から変更はありませんが, report メソッドには以下のようなハッシュオブジェクトと Furikake::Formatter クラスのクラスメソッド shaping だけを呼び出すようにしています.

...
        contents = {
          title: 'EC2',
          resources: [
            {
               subtitle: '',
               header: ['Name', 'Instance ID', 'Instance Type',
                        'Availability Zone', 'Private IP Address',
                        'Public IP Address', 'State'],
               resource: instance
            }
          ]
        }
        Furikake::Formatter.shaping(format, contents)
...

↑ ここの部分だけを AWS リソースに応じて修正する感じです. (get_resources の実装は従来どおり必要です.)

テストの追加

まずは気になるところからテストを追加しています. 個々のリソースタイプについても随時テストを追加していく予定です.

以上

furikake の更新情報でした. よろしければ, furikake を使って頂きましてフィードバック頂けると嬉しいです.

元記事はこちら

furikake を gem 化してリリースしました