他の言語でもお読みいただけます: English、 日本語, Español
ネットワークインフラストラクチャでの Ansible ファクトのデモンストレーション使用。
Ansible ファクトは、リモートネットワーク要素との会話から得られた情報です。Ansible ファクトは構造化データ (JSON) で返されるため、操作や変更が簡単になります。たとえば、ネットワークエンジニアは、Ansible ファクトを使用して監査レポートを非常に迅速に作成し、それらをマークダウンまたは HTML ファイルにテンプレート化できます。
この演習では、以下について説明します。
ansible-navigator :doc
の使用端末で ansible-navigator
インタラクティブモードに入ります
$ ansible-navigator
ansible-navigator
のスクリーンショット:
上記のスクリーンショットでは、モジュールまたはプラグインドキュメントの行を確認できます。
`:doc <plugin>` Review documentation for a module or plugin
:doc debug
と入力して debug
モジュールを検証しましょう。
:doc debug
ansible-navigator :doc debug
のスクリーンショット:
debug
モジュールのドキュメントが対話式ターミナルセッションに表示されました。これは、docs.ansible.com.
で表示されるまったく同じドキュメントの YAML 表現です。例は、モジュールのドキュメントから Ansible Playbook
に直接カットアンドペーストできます。
ビルドされていないモジュールを参照する場合、以下の 3 つの重要なフィールドがあります。
namespace.collection.module
例:
cisco.ios.facts
用語の説明:
Esc キーを押してメインメニューに戻ります。cisco.ios.facts
モジュールで :doc
コマンドを繰り返します。
:doc cisco.ios.facts
Playbook で facts モジュールを使用します。
Ansible Playbook は YAML ファイル です。YAML は構造化されたエンコーディング形式であり、人間が非常に読みやすくなっています (サブセットとは異なり、JSON 形式) 。
Visual Studio コードで新規ファイルを作成します:
分かりやすくするために、Playbook に facts.yml
という名前を付けます:
次のプレイ定義を facts.yml
に入力します。
---
- name: gather information from routers
hosts: cisco
gather_facts: no
各行の説明は次のとおりです。
---
は、これが YAML ファイルであることを示しています。- name:
キーワードは、この Ansible Playbookのオプションの説明です。hosts:
キーワードは、インベントリーファイルで定義されたグループ cisco
に対するこのプレイブックを意味します。gather_facts: no
は必要ありません。これは、Ansible 2.8 以前では、これは Linux
ホストでのみ機能し、ネットワークインフラストラクチャーでは機能しないためです。特定のモジュールを使用して、ネットワーク機器の事実を収集します。次に、最初の task
を追加します。このタスクでは、cisco.ios.facts
モジュールを使用して、グループ cisco
内の各デバイスに関するファクトを収集します。
---
- name: gather information from routers
hosts: cisco
gather_facts: no
tasks:
- name: gather router facts
cisco.ios.facts:
注記:
プレイはタスクのリストです。モジュールは、そのタスクを実行する、事前に記述されたコードです。
Playbook を保存します。
ansible-navigator
を実行して Ansible Playbook を実行します。
$ ansible-navigator run facts.yml
これにより、Playbook が対話する間に対話セッションが開きます。
facts.yml のスクリーンショット:
Playbook の出力をズームするには、0 を押して、ホスト中心ビューを表示します。ホストは 1 つしかないため、オプションは 1 つのみです。
ズームインのスクリーンショット:
rtr1 の詳細出力を表示するには、0 をあと 1 回押してモジュールの戻り値をズームします。
モジュールデータへのズームインのスクリーンショット:
スクロールダウンして、Cisco ネットワークデバイスから収集したファクトを表示できます。
ルーターの OS バージョンとシリアル番号を表示する 2 つの追加タスクを記述します。
---
- name: gather information from routers
hosts: cisco
gather_facts: no
tasks:
- name: gather router facts
cisco.ios.facts:
- name: display version
debug:
msg: "The IOS version is: {{ ansible_net_version }}"
- name: display serial number
debug:
msg: "The serial number is:{{ ansible_net_serialnum }}"
次に、ansible-navigator
と --mode stdout
を使用して Playbook を再実行します
完全なコマンドは ansible-navigator run facts.yml --mode stdout
です
stdout を使用した ansible-navigator のスクリーンショット:
20 行未満の “code” を使用すると、バージョンとシリアル番号の収集が自動化されます。これを本番ネットワークに対して実行していたと想像してみてください。古くなっていない実用的なデータが手元にあります。
ansible-navigator :doc
コマンドを使用すると、インターネットに接続していなくてもドキュメントにアクセスできます。このドキュメントは、コントロールノードの Ansible
のバージョンとも一致します。完成した Ansible Playbook は、回答キーとしてここに提供されています: facts.yml。
ラボ演習 3 を完了しました