演習 3: Ansible ファクト

他の言語でもお読みいただけます: uk Englishjapan 日本語, Español Español

目次

目的

ネットワークインフラストラクチャでの Ansible ファクトのデモンストレーション使用。

Ansible ファクトは、リモートネットワーク要素との会話から得られた情報です。Ansible ファクトは構造化データ (JSON) で返されるため、操作や変更が簡単になります。たとえば、ネットワークエンジニアは、Ansible ファクトを使用して監査レポートを非常に迅速に作成し、それらをマークダウンまたは HTML ファイルにテンプレート化できます。

この演習では、以下について説明します。

ガイド

ステップ 1 - ドキュメントの使用

端末で ansible-navigator インタラクティブモードに入ります

$ ansible-navigator

ansible-navigator のスクリーンショット: ansible-navigator interactive
mode

上記のスクリーンショットでは、モジュールまたはプラグインドキュメントの行を確認できます。

`:doc <plugin>`                 Review documentation for a module or plugin

:doc debug と入力して debug モジュールを検証しましょう。

:doc debug

ansible-navigator :doc debug のスクリーンショット: ansible-navigator interactive
mode doc

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 モジュールを使用します。

ステップ 2 - プレイの作成

Ansible Playbook は YAML ファイル です。YAML は構造化されたエンコーディング形式であり、人間が非常に読みやすくなっています (サブセットとは異なり、JSON 形式) 。

Visual Studio コードで新規ファイルを作成します: vscode new
file

分かりやすくするために、Playbook に facts.yml という名前を付けます: vscode save
file

次のプレイ定義を facts.yml に入力します。

---
- name: gather information from routers
  hosts: cisco
  gather_facts: no

各行の説明は次のとおりです。

ステップ 3 - ファクトタスクの作成

次に、最初の task を追加します。このタスクでは、cisco.ios.facts モジュールを使用して、グループ cisco 内の各デバイスに関するファクトを収集します。

---
- name: gather information from routers
  hosts: cisco
  gather_facts: no

  tasks:
    - name: gather router facts
      cisco.ios.facts:

注記:

プレイはタスクのリストです。モジュールは、そのタスクを実行する、事前に記述されたコードです。

Playbook を保存します。

ステップ 4 - Playbook の実行

ansible-navigator を実行して Ansible Playbook を実行します。

$ ansible-navigator run facts.yml

これにより、Playbook が対話する間に対話セッションが開きます。

facts.yml のスクリーンショット: ansible-navigator run
facts.yml

Playbook の出力をズームするには、0 を押して、ホスト中心ビューを表示します。ホストは 1 つしかないため、オプションは 1 つのみです。

ズームインのスクリーンショット: ansible-navigator zoom
hosts

rtr1 の詳細出力を表示するには、0 をあと 1 回押してモジュールの戻り値をズームします。

モジュールデータへのズームインのスクリーンショット: ansible-navigator zoom
module

スクロールダウンして、Cisco ネットワークデバイスから収集したファクトを表示できます。

ステップ 5 - デバッグモジュールの使用

ルーターの 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 }}"

ステップ 6 - stdout の使用

次に、ansible-navigator--mode stdout を使用して Playbook を再実行します

完全なコマンドは ansible-navigator run facts.yml --mode stdout です

stdout を使用した ansible-navigator のスクリーンショット: ansible-navigator stdout
screenshot

20 行未満の “code” を使用すると、バージョンとシリアル番号の収集が自動化されます。これを本番ネットワークに対して実行していたと想像してみてください。古くなっていない実用的なデータが手元にあります。

重要なこと

ソリューション

完成した Ansible Playbook は、回答キーとしてここに提供されています: facts.yml

完了

ラボ演習 3 を完了しました


前の演習 | 次の演習

Ansible Network Automation ワークショップに戻る