lycheejam's tech log

チラ裏のメモ帳 | プログラミングは苦手、インフラが得意なつもり。

AWS CLIとjqでCSVを作るワンライナーレシピ集

概要

EC2インスタンスやEBSの一覧をスプレッドシート(エクセル)で作成しなければいけない...みたいなツラミを味わってるのは自分だけじゃないはず。
練習がてら雑にメモに追記していっていたAWS CLIとjqを使ってCSV出力するワンライナーが結構な量溜まったので、整理も兼ねてブログ記事にしようかと。
基本的にjqの組み立てについての解説はせず、どんな情報が取れるかの補足のみ記載します。
出力はヘッダー付きCSVになります。

※改行して整形してますが、ワンライナーって言っていいよね...?ダメ...?

目次

前提

実行環境はWSLのUbuntuですが、Macでも動作を確認しています。
紹介するものに関しては、OS依存の動作の違いは特にないかと思います。(たぶん)

$ aws --version
aws-cli/2.2.22 Python/3.8.8 Linux/5.10.16.3-microsoft-standard-WSL2 exe/x86_64.ubuntu.20 prompt/off
$ jq --version
jq-1.6

ワンライナーレシピ集

EC2インスタンスの一覧を取得する

EC2インスタンスを一覧取得してCSV出力するワンライナーです。

$ aws ec2 describe-instances | \
  jq -r '.Reservations[].Instances[] |
  {
    TagName: .Tags | from_entries.Name
    , PrivateIpAddress
    , PublicIpAddress
    , InstanceId
    , InstanceType
    , AZ: .Placement.AvailabilityZone
    , State: .State.Name
  }' | jq -r -s '(map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv' > list.csv

.Tags | from_entries.Nameとすることで、TagにNameが設定されていなくても一覧に出力されるようになります。
よくあるmapとselectの組み合わせだと、Nameが設定されてないと出力されないので。
.Tags | from_entries.{Tagキー}とすることで任意のTagを出力可能です。

最後のjq -r -s '(map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv'CSV用のヘッダーを追加してます。
これはStackOverflowから引っ張ってきました。

How to convert arbitrary simple JSON to CSV using jq? - Stack Overflow

続きを読む

GitHubにあるITエンジニアの職務経歴書を見たいときのTips

職務経歴書を書く際に、他の人がどんなフォーマットでどのように書いているのか参考にしたいことってありませんか?
GitHubで単純に「resume」と検索すると、全世界のものがひっかかって辛かったので、ログとして。

ちょっと調べてて思ったんですが、前に転職したときと比較にならないほど職務経歴書が公開されてますね。
更新再開の一発目がtipsってどうなん。

Ansible ProvisionerでMySQLを対象としたansible roleのテストをする

概要

ansible roleのテストを行うときにVagrantのAnsible Provisionerを使ってるわけですが
MySQLとかのDBを対象としたタスクのテストをしようと思うと、MySQL環境を構築しなければならず面倒です。
なので、MySQL環境構築のスクリプトを書きました。
書きましたと言ってもネットに落ちてるやつ拝借しただけですが。

目次

  • 概要
  • 目次
  • 参考サイト様
  • 前提
  • 想定シーン
  • 成果物
  • 雑感

参考サイト様

続きを読む

CentOS 7でAnsible AWXの環境を構築(Docker版)

概要

興味が湧いたのでAnsible AWX触りたいと思って、環境構築やってみました。
CentOS 7でやってると依存関係とか諸々でしんどかったので手順を残しておきます。

目次

  • 概要
  • 目次
  • 参考サイト様
  • 前提
  • 手順
    • 必要パッケージのインストール
    • インストール確認
    • Docker Engineの起動
    • Ansible AWXのインストール
    • コンテナ起動確認
    • ブラウザから確認
  • 雑感

参考サイト様

前提

実行環境はWindows 10のVMware WorkStationでCentOS 7

  • Windows 10 1909
  • VMware(R) Workstation 15 Player 15.5.2 build-15785246
    • 一応、マシンにメモリ8GB割当
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
続きを読む

レポート:「プロダクトを10年運用するチームをつくる」 #devsumi2020 #devsumiB

概要

Developer Summit 2020に参加して株式会社はてなだいくしーさん(@daiksy)のお話を聞いてきました。

人の入れ替わりにどう対応するか、対策を打つかみたいな話です。

聞けてよかったセッション同率1位くらい、是非スライドに目を通してほしいです。

目次

  • 概要
  • 目次
  • セッション情報
  • 発表資料
  • トピック
    • システムを10年安定稼働させる事の難しさ
    • チームメンバーの変化
    • スキルマップの作成
    • 障害対応の話
    • 障害対応演習
    • 技術的負債とプロダクトのスケール
    • 式年遷宮をしよう
  • まとめ
  • 雑感

セッション情報

発表資料

続きを読む