「Pragmatic Terraform on AWS」が神本だったので紹介する

ダウンロード.png


はじめに

予定より、ちょっと遅くなってしまいましたが、宣言通り書評書いていこうと思います。。

ただただ「Pragmatic Terraform on AWS」を褒めちぎるだけの記事になってしまうことをご了承ください。。


こんな人にオススメ



  • AWSの知識がある程度あって、IaC(Infratecture as Code)に入門してみたい人  


  • 他のIaCのツール(CloudFormationとか)を使っていてterraform使ってみたい人   

AWSもIaCも全くわからん、、だとちょっと進めるのが辛いかもしれません。

逆にAWSある程度触ったり、資格の勉強で包括的に知識を入れていたりすると、復習にもなるし

「GUIでぽちぽちやってよくわかってなかったけど、裏ではこんなリソースが出来ているのか」

と整理もできる内容になっています。

現場でAWS使ってないし全然触ってないんだよね、って人はAWS資格の勉強でもしてから取り組むといいかも知れません。

その際のおすすめ記事(宣伝):3週間でAWS認定ソリューションアーキテクト-アソシエイト-とったので、勉強法などまとめてみる - Qiita


著者様

KOS-MOS様

twitter:tmk.com


お買い求め先

【ダウンロード版】Pragmatic Terraform on AWS - KOS-MOS - BOOTH


該当本の目次

第1章 はじめに

第2章 インストール

第3章 Terraformの基本

第4章 全体設計

第5章 権限管理

第6章 ストレージ

第7章 ネットワーク

第8章 ロードバランサとDNS

第9章 コンテナオーケストレーション

第10章 バッチ

第11章 鍵管理

第12章 設定管理

第13章 データストア

第14章 デプロイメントパイプライン

第15章 SSHレスオペレーション

第16章 ロギング

第17章 構造化

第18章 Terraformベストプラクティス

第19章 AWSベストプラクティス

第20章 モジュール設計

第21章 落ち穂拾い

第22章 巨人の肩の上に乗る

1~3章でTerraformの基礎を学び、4章~16章でDocker化したWebアプリケーションをAWS上に作っていき、17章〜22章で大規模なシステムでのterraform運用のノウハウや基本的な設計の考え方を学んでいきます。

今から始める方は、もうTerraform 0.12.0-rc1が正式リリースされているので以下の注意点は問題ないかと思いますが、一様著者様の注意喚起のリンクを載せておきます。

『Pragmatic Terraform on AWS』のハマりどころと回避方法 #技術書典 - 憂鬱な世界にネコパンチ!


「Pragmatic Terraform on AWS」のココがすごい


1. 全てのsampleコードがgithub上に存在する

たまにソースコードの共有がない本(特に同人本)がありますが、部分的にコピペしたいときに辛い。。

しかもterraform0.11と0.12のバージョンどちら用にもサンプルコードを用意する聖人っぷり。。。徳積みすぎです。(この本の出版の時にまだ0.12が正式リリースされていなかった)

GitHub - tmknom/example-pragmatic-terraform-on-aws: 技術書典6で頒布した『Pragmatic Terraform on AWS 』のサンプルコードを公開しています


2. 読者への読みやすさへの配慮がえげつない

細かすぎて伝わらない『Pragmatic Terraform on AWS』を読みやすくする技術 #技術書典 - 憂鬱な世界にネコパンチ!に詳しく書かれているんですが、僕が特に感動したのが以下の二点です。


  • 単語が途中で改行されていないので、変な煩わしさが皆無

  • 表記上改行されているだけのソースを、わかりやすくつながりを矢印で表しているので、変なエラーの発生を防いでくれている

脳のリソースをコンテンツだけに集中させる工夫が随所に詰まっていて、「これ、本当に同人誌か?」となりました。


3. terraformやAWSのベストプラクティスやモジュール設計の話まで学べる(具体的なハンズオンに終始しない)

だいたいこういうハンズオン系の本は、簡単な小規模のケースを紹介して終わり、なことが多いですが、正直IaCを一人で小規模でやるってまぁそんな機会はないですよね(個人開発でそこまでやるか?って感じですし)

17章以降の設計やベストプラクティスの章では、大規模なシステムでのIaCのハマりどころから基本的な設計の考え方まで非常にわかりやすく整理されています。

なので、一回16章まで通してはいおしまい、ではなく、折にふれて読み返す本になりそうです。

(自分も技術書を出すときは、そういうものが書きたいものですね、、、でも次出すやつは具体に終始しそうだ、、笑)


4. 扱っているAWSサービスの幅広さ

目次を見ていただいたら分かる通り、基本的なWebアプリケーションに必要なインフラほぼ全般のサービスについてふれています。

基本のVPCやS3やRDSやRoute53やELBはもちろんのこと、ACMやKMS、SSMまで。極め付けに、Session ManagerによるSSHレスオペレーティングまで(これ、sshできないコンテナ運用の調査でめちゃくちゃ重宝しそうだ、知らなかった)。なかなか体系だって学習しずらいログ周りの話もまとまってます。(CloudWatch LogsやKinesis Data Firehose)

ECSによるコンテナオーケストレーションやCodePipelineでのCI/CDなんかは結構色んな本が出てきてますが、コンテナ運用するんだったら使うよね、ってサービスにまで言及しているのは痒い所に手が届きすぎて逆に嫉妬しそうです。(嘘です、本当にありがとうございます)

上記のように、terraformの学習にとどまらず、そういえば気になってたけど全然試せてなかったなと思うサービスを使うきっかけをくれる本にもなってると思います。


終わりに


触発されて、IaCについて思いを巡らせるようになった 

学習を進めてく中で、terraformやCloudFormationで本当に開発~本番全部のインフラリソース管理できてんのみんな、、、という気持ちが少し拭えなかった。

そんな中 この発表資料を読んだりしながら、ROIを考えながら全てをIaCしなくてもいいよねと考えられると、少し気持ちが楽になると思った。(もちろん、これはなんでコード化してないんだっけみたいな部分は全体で共有しながら(これはこの本でも書いてある))

以下のような、既存のインフラからtfファイルをexportしてくれるようなツールも追いかけていく必要もあるかも。

GitHub - dtan4/terraforming: Export existing AWS resources to Terraform style (tf, tfstate)

GitHub - GoogleCloudPlatform/terraformer: CLI tool to generate terraform files from existing infrastructure (reverse Terraform). Infrastructure to Code

また、今回のAWSSummitで、SDKがインフラをymlではなくappの言語で管理できるように進化していく(pulumiと同じ思想)という話(その時のレポがこちら)があり、そういう進化をしていくとより開発チーム全体としてスムーズにIaCの意識を上げていけれそうだなと思ったりしました。

これからそういった部分も含めて、terraformやIaCを学習していきがら、プロジェクトにも積極的に取り入れていったり、知見がたまったら社内布教もしていきたいですね。


技術書書いてみたくなってしまった

前回の技術書典6が初参加(買い手側として)だったんですが、こういう本を通してある技術やトピックに踏み入れるきっかけ作りができたりするのって、素敵だなと思わされました。

ここまでのクオリティのものは作れないかも知れないですが、誰か一人のきっかけでも作れたら最高じゃんと思い次の技術書典申し込んでみました。

(でも、なんで表紙バベルの塔なんだろう、、バベルの塔のように途中で崩れない戒め、反面教師としての象徴なのだろうか(深読みしすぎ))


余談

前の記事でお話しした、うちの会社を「発信していく組織にしていく」をテーマに、自分がとりあえずやろうと思ってる施策は以下の2つです。


  • 自分自身がQiitaに毎週1本は記事をあげる

  • 社内で記事の投稿者へのリアクションがしやすいように、interactive message slack botを開発(例えば、ワンボタンでリアクションが取れる、次書いて欲しい記事の要望が送れる、などなど)

うちではこんなことやってますよ〜なんてことがあれば、ぜひ教えて欲しいです!

アイデアお待ちしております。