EOS プラットフォームのオプション¶
Arista EOS は、複数の接続に対応します。このページには、各接続が Ansible でどのように機能するか、およびその使用方法に関する詳細が記載されています。
トピック
利用可能な接続¶
レガシー Playbook の場合でも、EOS は ansible_connection: local
に対応します。できるだけ早期に ansible_connection: network_cli
または ansible_connection: httpapi
を使用するモダナイゼーションが推奨されます。
Ansible での CLI の使用¶
CLI の例: group_vars/eos.yml
¶
ansible_connection: network_cli
ansible_network_os: eos
ansible_user: myuser
ansible_password: !vault...
ansible_become: yes
ansible_become_method: enable
ansible_become_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 は環境変数によるパスワードの提供に対応していません。
Ansible での eAPI の使用¶
EAPI の有効化¶
eAPI を使用してスイッチに接続するには、eAPI を有効にする必要があります。Ansible 経由で新規スイッチで eAPI を有効にするには、CLI 接続で eos_eapi
モジュールを使用します。上記の CLI の例のように group_vars/EOS.yml を設定し、以下のような Playbook タスクを実行します。
- name: Enable eAPI
eos_eapi:
enable_http: yes
enable_https: yes
become: true
become_method: enable
when: ansible_network_os == 'eos'
HTTP/HTTPS 接続を有効にするオプションの詳細は、eos_eapi モジュールのドキュメントを参照してください。
eAPI が有効になったら、eAPI 接続を使用するように group_vars/eos.yml
を変更します。
eAPI の例: group_vars/eos.yml
¶
ansible_connection: httpapi
ansible_network_os: eos
ansible_user: myuser
ansible_password: !vault...
ansible_become: yes
ansible_become_method: enable
proxy_env:
http_proxy: http://proxy.example.com:8080
- (Web プロキシーを経由せず) ホストに直接アクセスしている場合は、
proxy_env
設定を削除できます。 https
を使用して Web プロキシー経由でホストにアクセスする場合は、http_proxy
をhttps_proxy
に変更します。
eAPI タスクの例¶
- name: Backup current switch config (eos)
eos_config:
backup: yes
register: backup_eos_location
environment: "{{ proxy_env }}"
when: ansible_network_os == 'eos'
この例では、group_vars
で定義された proxy_env
変数は、タスクのモジュールの environment
オプションに渡されます。
connection: local
を使用した eAPI の例¶
group_vars/eos.yml
:
ansible_connection: local
ansible_network_os: eos
ansible_user: myuser
ansible_password: !vault...
eapi:
host: "{{ inventory_hostname }}"
transport: eapi
authorize: yes
auth_pass: !vault...
proxy_env:
http_proxy: http://proxy.example.com:8080
eAPI タスク:
- name: Backup current switch config (eos)
eos_config:
backup: yes
provider: "{{ eapi }}"
register: backup_eos_location
environment: "{{ proxy_env }}"
when: ansible_network_os == 'eos'
この例では、group_vars
で定義された 2 つの変数がタスクのモジュールに渡されます。
eapi
変数は、モジュールのprovider
オプションに渡されます。proxy_env
変数は、モジュールのenvironment
オプションに渡されます。
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.