11/18-Jenkinsfile,Dockerfile,Ansibleあたりの関係性とか用語とかまとめ

<用語レベル>

■CI/CD

継続的インテグレーション : CI

開発中に機能を実装したら必ずユニットテストコードを同時にコミットし、JenkinsをはじめとしたCIツールを利用して自動テストを行う。そして、テストを通過したコードのみをリモートリポジトリ上にある開発版のブランチに合流させていくプロセスをとることでバグの混入を防ぐこと。

あるいは、Ansibleと組み合わせることで、毎回正規の手順で構築した「キレイな」環境上でテストを流すという一連のフローを実現させること。

継続的デリバリー : CD

継続的デリバリーは、テストの自動化を行うだけでなく、テスト環境で正常性が確認できたアプリケーションを本番環境に自動的にリリースしていく仕組みのこと。


■Devops

  • ビジネスやプロジェクトを成功させるために、組織文化とツールの両面を継続的にKAIZENすることで、ビジネスアジリティを向上させ、リスクを低減する活動(Ansible実践ガイドによる定義)
  • CI / CDを実現する文化(一日で基本が身につくDockerによる定義)
  • 一日10回以上のデプロイメント : Flickrにおける開発と運用の協力(2009 DevOpsという概念が世界初公表されたプレゼンより)
基本的には以下のツール連携で実現される自動化のこと
  1. Docker
  2. Github
  3. Jenkins
  4. Ansible

■Jenkins

CIツール

CIツールには特定のトリガーをもとに、デプロイメントやテストを自動で実行する機能があります。よって、従来は手動で実施していたAnsibleコマンドの実行さえも、動的に行うことが可能になります。主にCIツールがジョブを実行するためのトリガーは「イベントジョブ」と「定期ジョブ」の二種類です。

  1. イベントジョブ : Gitにコミット、障害、デプロイなどの特定タイミングで走るジョブ
  2. 定期ジョブ : Cronのように定期的な時間を設定し、実行するジョブ
デプロイジョブだけでなく、テストもジョブとして登録できるため、定期的な結合テストを設定しておくことにより、システムの外部変更に伴う異常検知も、スピーディに対応できる。

JenkinsでAnsibleを実行する際の手順
  1. Ansibleプラグインの導入
  2. Ansibleジョブの作成
  3. Ansibleビルドの実行
コードに変更を加えた段階で全体としての整合性に問題がないかすぐにチェックする仕組み
基本は、Jenkinsfileというパイプラインの定義書にパイプライン処理を記述すること


■Docker

Docker.incが提供している、コンテナ管理およびコンテナイメージの管理をプラットフォーム化したツール。

■Ansible

構成管理(サーバの構築)の自動化ツール。以下の特徴。

  1. サーバに遠隔でパッケージをインストールする、設定ファイルを配置する、コマンドを実行するなどの機能
  2. 実行するTask(Ansibleにおける一つの変更単位)をツール独自の書式であらかじめコードとして定義しておくため、コマンド一発で実行可能
  3. 何度実行しても同じ結果になる性質があり、上書き適用可能
  4. リモートのマシンから複数の管理対象サーバに対して一括での設定変更が可能

■Git

■VirtualBox/Vagrant


<使い方レベル>

■Jenkins

   Jenkinsfileに記述する処理単位

  • enviorment : 変数の定義
  • Pre check : 以後のパイプラインを開始するかの事前確認
  • Build : イメージをビルドしてコンテナの起動
  • Test : テスト用のコンテナで起動されたアプリをテストに実
  • Register : テストをパスしたイメージにタグを与えてDockerHubにPushする
  • Deploy : 本番Composeを使ってPushされたイメージを本番環境にデプロイする
 Jenkinsのジョブ作成
  • 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の削除時の挙動について。


Next Post Previous Post
No Comment
Add Comment
comment url