11/18-Jenkinsfile,Dockerfile,Ansibleあたりの関係性とか用語とかまとめ
<用語レベル>
■CI/CD
継続的インテグレーション : CI
開発中に機能を実装したら必ずユニットテストコードを同時にコミットし、JenkinsをはじめとしたCIツールを利用して自動テストを行う。そして、テストを通過したコードのみをリモートリポジトリ上にある開発版のブランチに合流させていくプロセスをとることでバグの混入を防ぐこと。
あるいは、Ansibleと組み合わせることで、毎回正規の手順で構築した「キレイな」環境上でテストを流すという一連のフローを実現させること。
継続的デリバリー : CD
継続的デリバリーは、テストの自動化を行うだけでなく、テスト環境で正常性が確認できたアプリケーションを本番環境に自動的にリリースしていく仕組みのこと。
■Devops
- ビジネスやプロジェクトを成功させるために、組織文化とツールの両面を継続的にKAIZENすることで、ビジネスアジリティを向上させ、リスクを低減する活動(Ansible実践ガイドによる定義)
- CI / CDを実現する文化(一日で基本が身につくDockerによる定義)
- 一日10回以上のデプロイメント : Flickrにおける開発と運用の協力(2009 DevOpsという概念が世界初公表されたプレゼンより)
- Docker
- Github
- Jenkins
- Ansible
■Jenkins
CIツール
CIツールには特定のトリガーをもとに、デプロイメントやテストを自動で実行する機能があります。よって、従来は手動で実施していたAnsibleコマンドの実行さえも、動的に行うことが可能になります。主にCIツールがジョブを実行するためのトリガーは「イベントジョブ」と「定期ジョブ」の二種類です。
- イベントジョブ : Gitにコミット、障害、デプロイなどの特定タイミングで走るジョブ
- 定期ジョブ : Cronのように定期的な時間を設定し、実行するジョブ
- Ansibleプラグインの導入
- Ansibleジョブの作成
- Ansibleビルドの実行
■Docker
Docker.incが提供している、コンテナ管理およびコンテナイメージの管理をプラットフォーム化したツール。
■Ansible
構成管理(サーバの構築)の自動化ツール。以下の特徴。
- サーバに遠隔でパッケージをインストールする、設定ファイルを配置する、コマンドを実行するなどの機能
- 実行するTask(Ansibleにおける一つの変更単位)をツール独自の書式であらかじめコードとして定義しておくため、コマンド一発で実行可能
- 何度実行しても同じ結果になる性質があり、上書き適用可能
- リモートのマシンから複数の管理対象サーバに対して一括での設定変更が可能
■Git
■VirtualBox/Vagrant
<使い方レベル>
■Jenkins
Jenkinsfileに記述する処理単位
- enviorment : 変数の定義
- Pre check : 以後のパイプラインを開始するかの事前確認
- Build : イメージをビルドしてコンテナの起動
- Test : テスト用のコンテナで起動されたアプリをテストに実
- Register : テストをパスしたイメージにタグを与えてDockerHubにPushする
- Deploy : 本番Composeを使ってPushされたイメージを本番環境にデプロイする
- Jenkinsの画面からJobを選択
- Gitに変更があったらすぐにビルドするWebHook
■Ansible
・sshと鍵設定
・適用元サーバと適用先サーバ
・inventory-file
・Playbook
・ansible.cfg
・実行コマンド
・Role
・Task
・vars
・ホスト
■Docker
・image
・container
・-d
・containerの状態管理
・containerの操作
・containerの削除
・imageの検索 / pull / 削除
・環境変数 / ポート番号 ... /
・DockerHub / レジストリ / リポジトリ
・DockerClient
ユーザー削除でエラーが出ている状態...uims
ansible / web /db サーバーが同時に動いている
ログ情報のみ共有
web /api のログだけ出した。app /db はなさそう。
zendeskの削除時の挙動について。