Ansible:プレイブックのテスト(パート2)

そのため、前回の記事では、Ansibleプレイブックとロールをテストするための環境を迅速かつ簡単にセットアップする方法を検討しました。 もちろん、これは非常に便利で便利ですが、プレイブックの作成からサーバーの変更まで、インフラストラクチャの変更プロセス全体を自動化してみませんか?



画像



構成テストを実行するいくつかの条件を思い出させてください。



1.設定全体がgitリポジトリに保存されます。

2. Jenkinsは、変更についてロール/プレイブックを使用してgitリポジトリを定期的にポーリングします。

3.変更が発生すると、Jenkinsは構成テストでジョブを起動します。 テストは2つの段階で構成されます。

3.1 Kitchen-CIは、リポジトリから更新されたコードを取得し、完全に新しいDockerコンテナを起動し、リポジトリから更新されたプレイブックをアップロードして、DockerコンテナでAnsibleをローカルで起動します。

3.2第1段階が成功した場合、serverspecはdockerコンテナで起動し、新しい構成が正しく立ち上がったかどうかを確認します。

4. Kitchen-CIですべてのテストが成功した場合、Jenkinsは新しい構成フィルを開始します。



理想的には、プレイブックの作成からリポジトリへのコミットからサーバーへの変更までのプロセス全体が、参加なしで行われるべきです。 Jenkinsのインストールを深く掘り下げ、この記事でパイプラインについて詳しく説明することは計画されていません。 1つ目は標準のリポジトリで問題なく行われ、2つ目は純粋に個別です。



ジェンキンス



それで、それは何で、何と一緒に食べられますか? Jenkinsは継続的な統合サービスであり、コードの記述から実稼働への展開までの開発プロセスを構築および自動化するために積極的に使用されています。 これは非常に柔軟なツールであり、長い歴史と広範なコミュニティサポートがあります。 彼には、無数のプラグインとアドオンがあります。 バージョン2.0がまもなくリリースされることに注意してください。 インフラストラクチャをコードとして使用する場合、このパスを選択しないのはなぜですか?



前に述べたように、Jenkinsは標準リポジトリからインストールできます(この場合はDebian ですが、他のOS用のリポジトリもあります

sudo apt-get install jenkins
      
      





次に、Jenkinsにキッチンコンテナーとdockerコンテナーを実行する機能を提供する必要があります。

sudoersの編集:

 visudo -f /etc/sudoers.d/jenkins
      
      





ドッカーを実行する機会を与えます

 jenkins ALL=(ALL) NOPASSWD: /usr/bin/docker
      
      





Jenkinsの再起動:

 service jenkins restart
      
      





そして、ブラウザをダッシュ​​ボードに移動します。



次に、Jenkinsがすべての作業を行うためのスクリプトを作成する必要があります。 まず、無料の構成でアイテムを作成します。







バージョン管理システムの設定で、gitを選択し、gitリポジトリへのパスと接続する資格情報を指定します。 構成全体を1つのリポジトリに保存する場合、テストおよび展開するプロジェクトフォルダーでスパースを使用すると便利です。







アセンブリトリガーでは、定期的にSCMをポーリングし、gitをポーリングする間隔を設定するように指定します。 この場合、タスクの次の手順は、リポジトリに変更が加えられた場合にのみ開始されます。



次に、サイドステップで「シェルコマンドの実行」を示し、プレイブックのテストとキャストを実行するために必要なステップを単に示します。



 sudo kitchen test
      
      





この時点で、kitchen-ciはドッカーコンテナーを起動し、プレイブックでローカルにAnsibleを起動し、コンテナー内でserverspecを起動します。 必要に応じて、ステップを収束と検証に分けることができます。



 ansible-playbook site.yml
      
      







ロール/プレイブックで指定された構成のキャストを開始します。 最後のステップもオプションです。 テストが成功した場合、だれかがマシンを信頼せずに構成をこぼして手動で実行する場合があります。 これを行うには、通知(電子メール、IRC、XMPP、それらの多くがあるため)を送信するためのプラグインをインストールし、ビルド後のアクションを追加できます。 したがって、テスト後、アセンブリの成功または失敗に関する通知が送信されます。



ご清聴ありがとうございました。 成功したテストと自動化!

投稿者DevOps Southbridge管理者Victor Batuev



参照資料



アンシブル

ジェンキンス

キッチンci

Serverspec



All Articles