2.2. ネットワーク Ansible Playbook の実行
毎日特定のコマンドを実行する場合は、Playbook に保存し、ansible ではなく ansible-playbook を使用して実行できます。Playbook は、コマンドラインでフラグを使用して指定したパラメーターを多数保存し、コマンドラインで入力するようにできます。これには、Playbook とインベントリーファイルという 2 つのファイルが必要です。
前提条件
ここ から first_playbook.yml をダウンロードします。
Playbook は以下のようになります。
---
- name: Network Getting Started First Playbook
connection: ansible.netcommon.network_cli
gather_facts: false
hosts: all
tasks:
- name: Get config for VyOS devices
vyos.vyos.vyos_facts:
gather_subset: all
- name: Display the config
debug:
msg: "The hostname is {{ ansible_net_hostname }} and the OS is {{ ansible_net_version }}"
| ラベル | 説明 |
|---|---|
|
|
Playbook はこのネットワークコレクション内のプラットフォーム固有のモジュール ( |
Playbook は、上記のコマンドラインから 7 つの値のうち 3 つを設定します。
-
グループ (
ホスト: すべて) -
接続方法 (
connection: ansible.netcommon.network_cli) と - モジュール (各タスク内)。
Playbook でこれらの値を設定すると、コマンドラインで値を省略できます。この Playbook では、設定出力を表示する 2 番目のタスクも追加します。
vyos.vyos.vyos_facts や ansible.builtin.setup などのコレクション固有のファクトモジュールを通じてシステムからファクトが収集されると、収集されたデータはコンソールに書き込まれるのではなく、今後のタスクで使用できるようにメモリーに保持されます。
モジュールが Playbook で実行されると、出力はコンソールに書き込まれるのではなく、今後のタスクで使用できるようにメモリーに保持されます。他のほとんどのモジュールでは、モジュールまたはタスクの出力を保存して再利用するには変数を明示的に登録する必要があります。
ファクトの詳細は、Ansiible Playbook リファレンスガイド の [Ansible ファクト] を参照してください。
次のデバッグタスクを使用すると、シェルで結果を確認できます。
手順
以下のコマンドで Playbook を実行します。
ansible-playbook -i vyos.example.net, -u ansible -k -e ansible_network_os=vyos.vyos.vyos first_playbook.ymlPlaybook には 2 つのタスクを含むプレイが 1 つ含まれており、次のような出力を生成します。
$ ansible-playbook -i vyos.example.net, -u ansible -k -e ansible_network_os=vyos.vyos.vyos first_playbook.yml PLAY [Network Getting Started First Playbook] *************************************************************************************************************************** TASK [Get config for VyOS devices] *************************************************************************************************************************** ok: [vyos.example.net] TASK [Display the config] *************************************************************************************************************************** ok: [vyos.example.net] => { "msg": "The hostname is vyos and the OS is VyOS 1.1.8" }- デバイス設定を取得できるようになったので、Ansible を使用して更新してみることができます。
ここ から
first_playbook_ext.ymlをダウンロードします。これは、最初の Playbook の拡張バージョンです。Playbook は以下のようになります。
--- - name: Network Getting Started First Playbook Extended connection: ansible.netcommon.network_cli gather_facts: false hosts: all tasks: - name: Get config for VyOS devices vyos.vyos.vyos_facts: gather_subset: all - name: Display the config debug: msg: "The hostname is {{ ansible_net_hostname }} and the OS is {{ ansible_net_version }}" - name: Update the hostname vyos.vyos.vyos_config: backup: yes lines: - set system host-name vyos-changed - name: Get changed config for VyOS devices vyos.vyos.vyos_facts: gather_subset: all - name: Display the changed config debug: msg: "The new hostname is {{ ansible_net_hostname }} and the OS is {{ ansible_net_version }}"- 拡張された最初の Playbook には、1 回のプレイに 5 つのタスクがあります。
以下のコマンドで Playbook を実行します。
$ ansible-playbook -i vyos.example.net, -u ansible -k -e ansible_network_os=vyos.vyos.vyos first_playbook_ext.yml出力には、Ansible が設定に加えた変更が表示されます。
$ ansible-playbook -i vyos.example.net, -u ansible -k -e ansible_network_os=vyos.vyos.vyos first_playbook_ext.yml PLAY [Network Getting Started First Playbook Extended] ************************************************************************************************************************************ TASK [Get config for VyOS devices] ********************************************************************************************************************************** ok: [vyos.example.net] TASK [Display the config] ************************************************************************************************************************************* ok: [vyos.example.net] => { "msg": "The hostname is vyos and the OS is VyOS 1.1.8" } TASK [Update the hostname] ************************************************************************************************************************************* changed: [vyos.example.net] TASK [Get changed config for VyOS devices] ************************************************************************************************************************************* ok: [vyos.example.net] TASK [Display the changed config] ************************************************************************************************************************************* ok: [vyos.example.net] => { "msg": "The new hostname is vyos-changed and the OS is VyOS 1.1.8" } PLAY RECAP ************************************************************************************************************************************ vyos.example.net : ok=5 changed=1 unreachable=0 failed=0