コピー2022.02.12職場でなんとなく使用しているAnsible。ユーザ作成/削除、コンポートのインストールetc..、あらゆる場面でAnsibleは登場します。playbookを一度でも実行したことがある人なら一度でも思ったことがあるはず。「このコマンドの実行結果成功してるの?失敗してるの?」そうです。playbookの実行結果というのは非常に見ずらいのです。冪等性という概念も相まって非常に分かりづらいです。本記事ではそんな、playbookの出力結果の見方について解説していこうと思います。本記事で使用するAnsibleの実行環境に関しては、以下の記事にて作成した検証環境を使用します。【CFn】Ansibleの検証環境をECS(EC2)上に構築する1(環境構築編)【CFn】Ansibleの検証環境をECS(EC2)上に構築する2(Ansible実行編)ディレクトリ構成に関して以下の通りとします。・・・playbookファイルhosts(inventory)ファイルの中身は以下の通りです[Web]web01web02[all:vars]ansible_ssh_user=ec2-useransible_ssh_private_key_file=/home/ec2-user/.ssh/id_rsa今回使用するplaybookは以下の通り、新しくadduser.ymlを作成します。「ターゲットホスト(WebコンテナA,B)にて新規ユーザを作成する」といった処理です。playbookを実行します。本記事では、文法チェック含め以下の実行コマンドに関しての出力結果を確認します。playbookの文法チェック。--syntax-checkplaybookのDryRun。--checkplaybookの実行。./adduser.ymlplaybookの文法チェックplaybookには、実行する前にそのplaybookの中身の構文に間違いが無いかを確認するオプションがあります。作成したplaybookが正しく機能するかを確認したり、デバッグの際に使用します。問題が無い場合シンプルにファイル名のみが帰ってきます。(場合によりWarningエラーが返ってきますが、ただの警告文なので無視して大丈夫です。playbookの文法チェック。問題がある場合このように問題箇所を指し示す形でエラーが出力されます。失敗できない環境ではこのDryRunオプションを指定する形で仮実行し、playbook処理に問題が無いかを確認します。RECAPにOK=1(実行した処理の数、今回で言うとユーザ作成処理分)、chenged=1(処理によってサーバの状態に変更が生じた数、今回で言うとtestuserが追加されたという変更分)と表示されます。RECAPまで表示されて、Failedのカウントが0以外であれば基本的には処理に問題はありません。(場合によりWarningエラーが返ってきますが、ただの警告文なので無視して大丈夫です。以下のようにFAILEDの数がカウントされていれば、playbook処理が失敗していることになります。ignored=0もしくわ、ssh接続等に問題があり、そもそものサーバ間の通信に問題があれば、以下のようなエラーが出力されます。SSH設定を見直しましょう。true}playbookの実行DryRunの結果、問題がなければ本実行します。ansible-playbookplaybookを実行する際は、ansibleに-playbookを付ける形で実行します。hosts-i(--inventory)でInventoryファイルを指定します。hostsはInventoryファイルのことです。./adduser.yml実行するplaybook.ymlです。playbookファイルはymlかjson形式で記載します。実行結果DryRun時と特に変わりはありません。ignored=0なお、再度playbookを実行すると以下のような結果になります。ignored=0先程とは変わって、changedが0になっていますね。これはtestuserは既に作成されているため、同じ処理を実行してもサーバ側に変化がないからです。このように同じ処理を何度実行しても同じ結果になる性質を「冪等性」といいます。冪等性に関しては、以下の記事で解説しているのでよければご覧下さい。【Ansible】Ansibleで理解する冪等性Ansibleに触れると必ずでてくる単語「冪等性」。意味」等で検索すると冪等性の意味に関する記事が沢山見つかります。文字ベースではその言葉の意味を調べても中々しっくりこないものです。本記事では、実際にA...chibinfra-techblog.com2022.02.09出力結果の見方playbookの出力結果について見ていきます。基本的にはplaybookは以下の形式で出力されます。ignored=0ではそれぞれのセクションの意味について解説していきます。PLAY簡単に言うと、このターゲットに対して、playbookを実行するよーって意味です。今回でいうと、ターゲット「Web」に対して処理を実行するっていう宣言みたいなものですね。playbook実行後、無視されがちなセクションですが、ターゲットの指定に間違えがないか改めて確認する癖を付けておきましょう。TASK処理を行うタスク名とその実行結果を出力するセクションです。タスクの実行結果に応じて、以下のステータスが出力されます。[web02]これらの意味を理解していないと、どのタスクを実行したのか、どのターゲットに対してどのような処理が通ったのか、判断が付かないと思います。ステータス値の意味合いを理解し、playbook実行後は以下三点を確認するようにしましょう。RECAP実行結果の詳細なステータス(サマリー)が出力されるセクションです。それぞれの項目の意味合いは以下の通りとなります。ignored=0例えば今回の出力結果でいうと、web01,02に対して、新規ユーザを追加するタスクを実行し(ok=1)、各ターゲットにユーザが追加され、ホストの状態にユーザが1名追加されるという変化が生じた(changed=1)という見方になります。まとめAnsibleは非常に便利な半面、使い勝手が少々悪い部分があります。その部分をしっかりと理解し、「なんとなく実行してなんとなく結果を判断する」といったことがないようにしましょう。/スポンサーリンクchibiharu関連記事Ansible【CFn】Ansibleの検証環境をECS(EC2)上に構築する1(環境構築編)Ansibleの勉強がてら検証環境を構築してぶん回してたら、環境そのものを壊してしまった・・なんて方も多いのではないでしょうか。その度にサーバを作り直してたら面倒くさいし、お金も勿体ないです。そんな時はコンテナを使いましょう!!コンテナ...Ansible【Ansible】Ansibleで理解する冪等性Ansibleに触れると必ずでてくる単語「冪等性」。意味」等で検索すると冪等性の意味に関する記事が沢山見つかります。文字ベースではその言葉の意味を調べても中々しっくりこないものです。本記事では、実際にA...Ansible【CFn】Ansibleの検証環境をECS(EC2)上に構築する2(Ansible実行編)本記事は以下の記事の続編となります。本編を初めてご覧の方はまずはこちらの記事からお読みになって下さい。本記事の概要を以下に記載します。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。Δスポンサーリンクchibiharuはじめまして!当サイト管理人のchibiharu(ちびはる)です。普段はクラウドインフラエンジニアをしており、多くの方とのITスキル・ナレッジの共有を目的にブログを始めました。コメント等お待ちしております。皆様のITエンジニアとしての活動に少しでもお役に立てればと思っています。chibiharuと申します。ラボDeveloperNetworkSoftwareHardwareプロフィールお問い合わせポートフォリオホーム検索トップサイドバータイトルとURLをコピーしました。