(6)2017-08-13tacck今回もAnsibleのPlaybookにおける繰り返し制御について、学んでいきます。引き続き題材は本家のドキュメントから。Loopsシリーズはこちら。inventoryインベントリを使ったループ、ということでこれを実現する方法は複数あるそうです。使った方法、と紹介されています。実際に動かしてみるとわかりやすいので、やってみましょう。インベントリファイルとして下記を用意します。[localnet]localhost[www]www1www2これを利用するようにして、Playbookを実行してみます。}}"tasksの中は、例文通りです。こちらを実行すると、下記のようになります。failed=0一つ目のタスクで「全てのグループのホスト」、二つ目のタスクで「Playbookで指定しているホスト(グループ)」が表示されました。all:!wwwこれも、tasksの中は例文通りですね。こちらを実行すると、下記のようになります。failed=0結果は同じ形(実行順がやや違いますが)となっています。指定した意味としては、一つ目のタスクで「全てのホスト」、二つ目のタスクで「wwwグループ以外で絞り込んだホスト」、ということになります。このように、自分の必要に応じた形でホストを使ったループ処理が実現できます。Controlここでは、ループの制御のバージョンによる進化が書かれています。タスクのインクルードが使えました。これにより、一連のタスクを一度にループするできます。いう名前の変数を使います。値は上書きされてしまいます。オプションにより、ループに使用する変数名を指定できます。下記の例を見てみます。以下が内側のループに相当するところですね。変数が利用されています。定義されている変数名をループ変数として利用しようとしているのを検知したら、エラーとしてタスク失敗としてしまう、という動作となるようです。次に、バージョン2.2です。複雑なデータ構造でループを行なった場合、実行時の表示結果が少しうるさい(busy)ものとなります。これにラベル(label)ディレクティブをつけることで抑制できます。"{{item.name}}"上記の例だと、サーバ名を表示させることになるので、何を操作しているかもわかりますし、すっきりとした表示になります。他のループ制御オプションとして、pauseがあります。こちらは、繰り返し実行ごとに指定した秒を待たせる、というものになります。ある説明の通り、次のサーバを作る前に3秒待つ、という動作になります。利用して実現することができます。c古いバージョンしか使えない環境であれば、このような回避方法があるようです。プラグイン開発開始のための情報があります。今まで見てきたように多くの機能が存在しているので、参照する実装は豊富に存在しています。まとめということで、ループについて一通り確認してきました。やり始めてからだいぶ時間かけてしまいましたが、何とかやりきれてよかったです。参照しやすい形に整理もしたいですね。最新記事tacck北の大地の普通のソフトウェアエンジニア。インフラ・バックエンド・フロントエンドと、色々やります。初心者・若手向けのメンターも希望あればお受けします。(5)次の記事VuePressを使って”Laravel+TDD”の導入記事を書いてみたコメントするメールアドレスが公開されることはありません。※ウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。tacckの積み重ねるブログ。