LoginSignup
3
2

More than 5 years have passed since last update.

AWS CodeCommitをgitレポジトリとしたセットアップ自動化

Last updated at Posted at 2016-06-18

背景

いろいろな環境でセットアップスクリプトを書いていると、
同じスクリプトを様々な環境から参照したいケースがある。

本質的に必要なのは『機能』であって、それがどこで動くかは重要じゃないでしょ、という場合。
( もちろん『どこで動くか』が重要な場合もありますが )

例えばクラウドで自分検証用にちょっとサーバ立てた。で、セットアップスクリプト書いた、
そういえばこれは自宅サーバでも移動中のノートPCでも、コンテナでも割と使いたいものだったりする。

セットアップスクリプトを置く場所は統一したい。
理想的にはGithubでレシピを公開なのかな、というとちょっとプライベートな部分もあって悩ましい。

自前でプライベートなgitレポジトリを立てるか?という考えも悩ましい。

  • ストレージの冗長化は?
  • git のサーバを2台立ててロードバランスすれば動きそうか?
  • セキュリティはどのように守られるべきか?
  • アクセス制限はどのように行うのか?

といった悩みが。 お仕事用のサーバ群では冗長化に対してかなりの
コストを支払っているのだけれど、2016年の今だとgitのサービスも
いろいろあるし、サービス使った方がセキュリティアップデートのコストはサービス提供者もちだし、その方が合理的だよな、とおもってCodeCommitを使ってみました。

下記のような構成をつくる

EC2で自動セットアップ

CodeCommit_EC2.png

dockerで自動セットアップ

CodeCommit_docker.png
dockerでの利用は、もうちょっとシンプルにならないかな、という悩みがある
packerやDockerfileで都度イメージ作成だろうか。
( イメージによる管理も明確なメリットがある、インスタンスが起動してから使えるまでの時間が短い。が、ブロックデバイスから疎結合になりたい。わざわざイメージ作らなくても、セットアップスクリプトをpullして実行すればセットアップ可能、みたいな環境もありかな、とも )

KVM( libvirtd )でも

まだできてないのですが、自宅サーバも同様な感じでセットアップしたい。

CodeCommit_libvirtd.png

これができれば、自宅の物理サーバも同様な方法( PXE + kickstart + CodeCommit )でいけると思われる。

注1
ここではchef-clientの実行間隔を60秒にし、
chef的に「インストールされてなければするし」「プロセスが立ち上がってなければ立ち上げるし」
というアプローチでプロセスが実行されていくようにしていますが
chef-clientの処理は、設定のボリュームが増えれば増えるほど長くなっていくので、
monitなり監視プロセスから起動されるアプローチの方が素早い気もします。が、monit使えていません。

作業の流れ

EC2で自動セットアップ

1. AWSアカウント作る
2. VPCつくる
3. CodeCommitを始める
4. ( 初回起動時に実行される仕組みの )cloud-initの処理を書き始める
5. cloud-initのスクリプトで git cloneする
6. EC2インスタンス自身が自分のRoleを確認して自分でセットアップされるようにする

dockerで自動セットアップ( 予定 )

ここを参考にしています http://qiita.com/kukita/items/932822b2d029e4b8a0c5
( 上記のURLの仕組みは凄いと思います。chefサーバの冗長化を考え始めると、
結構工数かかりそうなんですが、冗長化のコストを外に出せる )
* 作業用PCにchef-zeroで chef server
* セットアップスクリプトはCodeCommitから定期的に git pull
* chef serverを参照するようなdockerイメージ作成
* 作業用PCからchef serverにコンテナに与えるRoleを設定
* chef-clientが自分のRoleの処理を行う

自宅サーバでも( 予定 )

  • PXE + kickstart での自動セットアップ
  • kickstartの設定で自前のスクリプトを流す
  • 自前のスクリプトの処理内で、セットアップ自動化を行う
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2