IOS-XR プラットフォームのオプション

IOS-XR は、複数の接続に対応します。このページには、各接続が Ansible でどのように機能するか、およびその使用方法に関する詳細が記載されています。

利用可能な接続

レガシー Playbook の場合、Ansible はすべての IOS-XR モジュールで ansible_connection=local に対応します。できるだけ早期に ansible_connection=netconf または ansible_connection=network_cli を使用するモダナイゼーションが推奨されます。

Ansible での CLI の使用

CLI インベントリーの例 [iosxr:vars]

[iosxr:vars]
ansible_connection=network_cli
ansible_network_os=iosxr
ansible_user=myuser
ansible_password=!vault...
ansible_ssh_common_args='-o ProxyCommand="ssh -W %h:%p -q bastion01"'
  • SSH キー (ssh-agent を含む) を使用している場合は、ansible_password 設定を削除できます。
  • (bastion/ジャンプホスト を経由せず) ホストに直接アクセスしている場合は、ansible_ssh_common_args 設定を削除できます。
  • bastion/ジャンプホスト 経由でホストにアクセスしている場合は、SSH パスワードを ProxyCommand ディレクティブに含めることができません。(ps 出力などで) シークレットの漏えいを防ぐために、SSH は環境変数によるパスワードの提供に対応していません。

CLI タスクの例

- name:Retrieve IOS-XR version
  iosxr_command:
    commands: show version
  when: ansible_network_os == 'iosxr'

Ansible での NETCONF の使用

NETCONF の有効化

NETCONF を使用してスイッチに接続する前に、以下を行う必要があります。

  • pip install ncclient を使用して、コントロールノードに python パッケージ ncclient をインストールします。
  • Cisco IOS-XR デバイスで NETCONF を有効にします。

Ansible 経由で新しいスイッチで NETCONF を有効にするには、CLI 接続で iosxr_netconf モジュールを使用します。上記の CLI の例と同様にプラットフォームレベルの変数を設定し、以下のような Playbook のタスクを実行します。

- name:Enable NETCONF
  connection: network_cli
  iosxr_netconf:
  when: ansible_network_os == 'iosxr'

NETCONF を有効にしたら、変数を変更して NETCONF 接続を使用します。

NETCONF インベントリーの例: [iosxr:vars]

[iosxr:vars]
ansible_connection=netconf
ansible_network_os=iosxr
ansible_user=myuser
ansible_password=!vault |
ansible_ssh_common_args='-o ProxyCommand="ssh -W %h:%p -q bastion01"'

NETCONF タスクの例

- name:Configure hostname and domain-name
  iosxr_system:
    hostname: iosxr01
    domain_name: test.example.com
    domain_search:
      - ansible.com
      - redhat.com
      - cisco.com

Warning

Never store passwords in plain text. We recommend using SSH keys to authenticate SSH connections. Ansible supports ssh-agent to manage your SSH keys. If you must use passwords to authenticate SSH connections, we recommend encrypting them with Ansible Vault.