arista.eos-system
EOSのシステムロール
arista.eos-systemロールは、一般的でグローバルなシステム設定の抽象化を作成します。 これにより、Ansibleのタスクを書く必要はありません。以下の要件に合致するオブジェクトを作成するだけで、 このロールがそのオブジェクトを読み込み、必要な設定を実施します。
このロールでは、IPルーティング、ホスト名、CLIユーザーの設定が可能になります。
インストール
ansible-galaxy install arista.eos-system
要件
アリスタデバイスへの接続にはSSH接続が必要です。組み込みのeos接続変数や便利な「provider」辞書を使用できます。
ロール変数
このロール内のタスクは、以下に説明する「hostname」「eos_ip_routing_enabled」「eos_users」オブジェクトによって駆動されます:
hostname
キー | 型 | ノート |
---|---|---|
hostname | string | ノードの現在の実行構成でホスト名の値を設定するために使用するASCII文字列。 |
eos_ip_routing_enabled
キー | 型 | ノート |
---|---|---|
eos_ip_routing_enabled | boolean: true, false* | スイッチ上のIPv4の「ip routing」の状態を設定します。デフォルトでは、EOSスイッチは「no ip routing」で起動します。 |
eos_users(リスト)各エントリには、以下のキーが含まれます:
キー | 型 | ノート |
---|---|---|
name | string(必須) | ユニークなユーザー名。ユーザー名は特定の形式ガイドラインに従う必要があります。有効なユーザー名はA-Z、a-z、または0-9で始まり、次の文字も含むことができます:@#$%^&*-_= +;<>,.~ |
encryption | 選択肢: md5, sha512 | 対応する秘密鍵に提供されるパスワードの暗号化形式を定義します。 |
secret | string | このキーは暗号化と一緒に使用されます。値は、以前に生成されたハッシュ化されたパスワードである必要があります。 |
nopassword | boolean: true, false* | nopasswordキーは、パスワードが割り当てられていないユーザーを作成するために使用されます。この属性はsecretおよびencryptionとは互いに排他的です。 |
role | string | ユーザーに割り当てられる役割を設定します。 |
privilege | int: 0-15 | ユーザーの特権レベルを設定します。有効な値は0から15の整数です。このキーを省略すると、EOSのデフォルト特権は1になります。 |
sshkey | string | CLIユーザーのためのssh鍵を設定します。このssh鍵は/home/USER/.ssh/authorized_keysに保存されます。 |
state | 選択肢: present*, absent | CLIユーザーの状態を設定します。 |
注:アスタリスク(*)は、指定されていない場合のデフォルト値を示します
設定変数
キー | 選択肢 | 説明 |
---|---|---|
eos_save_running_config | true*, false | ロール実行の結果としての実行構成の変更をメモリに書き込むかどうかを指定します。設定をスタートアップ構成にコピーします。 |
注:アスタリスク(*)は、指定されていない場合のデフォルト値を示します
接続変数
Ansible EOSロールは、インベントリ内のノードとの通信を確立するために、以下の接続情報を必要とします。この情報は、Ansibleのgroup_varsやhost_varsディレクトリ、またはプレイブック自体に存在できます。
キー | 必要 | 選択肢 | 説明 |
---|---|---|---|
host | はい | 指定されたtransportを介してリモートデバイスに接続するためのDNSホスト名またはアドレスを指定します。hostの値は、トランスポートの宛先アドレスとして使用されます。 | |
port | いいえ | リモートデバイスへの接続を構築する際に使用するポートを指定します。この値は、transportの受け入れ可能な値のいずれかに適用されます。タスク内で指定されていない場合、ポート値は適切なトランスポートの共通ポートにデフォルト設定されます(cli=22、http=80、https=443)。 | |
username | いいえ | リモートデバイスへの接続を認証するために使用するユーザー名を設定します。usernameの値は、CLIログインまたはeAPI認証のいずれかを認証するために使用されます。タスク内で指定されていない場合、環境変数ANSIBLE_NET_USERNAMEの値が代わりに使用されます。 | |
password | いいえ | リモートデバイスへの接続を認証するために使用するパスワードを指定します。これはtransportのいずれかの受け入れ可能値に共通の引数として使用されます。タスク内で指定されていない場合、環境変数ANSIBLE_NET_PASSWORDの値が代わりに使用されます。 | |
ssh_keyfile | いいえ | リモートデバイスへの接続を認証するために使用するSSH鍵ファイルを指定します。この引数はtransport=cliのときのみ使用されます。タスク内で指定されていない場合、環境変数ANSIBLE_NET_SSH_KEYFILEの値が代わりに使用されます。 | |
authorize | いいえ | はい、いいえ* | リモートデバイスで特権モードに入るようにモジュールに指示します。指定されていない場合、デバイスは特権のないモードで全てのコマンドを実行しようとします。タスク内で指定されていない場合、環境変数ANSIBLE_NET_AUTHORIZEの値が代わりに使用されます。 |
auth_pass | いいえ | リモートデバイスで特権モードに入るために必要な場合に使用するパスワードを指定します。authorize=noの場合、この引数は無効です。タスク内で指定されていない場合、環境変数ANSIBLE_NET_AUTH_PASSの値が代わりに使用されます。 | |
transport | はい | cli*, eapi | リモートデバイスに接続する際に使用するトランスポート接続を設定します。transport引数は、cli(ssh)またはeapiを介ったデバイスへの接続をサポートします。 |
use_ssl | いいえ | はい*, いいえ | transport=eapiの場合にのみ、SSLを使用するようにトランスポートを設定します。transport=cliの場合、この値は無視されます。 |
provider | いいえ | 上記のすべての接続引数を辞書オブジェクトとして渡す便利な方法です。すべての制約(必須,選択肢など)は、個別の引数またはこの辞書の値によって満たされる必要があります。 |
注:アスタリスク(*)は、指定されていない場合のデフォルト値を示します
Ansible変数
キー | 選択肢 | 説明 |
---|---|---|
no_log | true, false* | プレイブックの実行中に、モジュールの引数や出力がログに記録されるのを防ぎます。デフォルトでは、出力サイズを減らすためにEOS構成情報を取得して保存するタスクに対してno_logがtrueに設定されています。すべての出力をタスク結果以外から防ぐには、trueに設定してください。 |
注:アスタリスク(*)は、指定されていない場合のデフォルト値を示します
依存関係
eos-systemロールは、コアAnsibleコードに含まれるモジュールに基づいています。 これらのモジュールは、ansibleバージョン2.1.0で追加されました。
- Ansible 2.1.0
例プレイブック
以下の例では、arista.eos-systemロールを使用して、CLIユーザー、IPルーティング、スイッチのホスト名をタスクを書くことなく完全に設定します。 「hosts」ファイルとそれに対応する「host_vars」ファイルを作成し、eos-systemロールを参照する簡単なプレイブックを作成します。 ロールを含めることで、システム機能を構成するためのすべてのタスクに自動的にアクセスできるようになります。 システム設定のないホストがあった場合、タスクは問題なくスキップされます。
サンプルhostsファイル:
[leafs]
leaf1.example.com
サンプルhost_vars/leaf1.example.com
provider:
host: "{{ inventory_hostname }}"
username: admin
password: admin
use_ssl: no
authorize: yes
transport: cli
eos_users:
- name: superadmin
encryption: md5
secret: '$1$J0auuPhz$Pkr5NnHssW.Jqlk17Ylpk0'
privilege: 15
role: network-admin
- name: simplebob
nopassword: true
privilege: 0
role: network-operator
hostname: leaf1
eos_ip_routing_enabled: yes
ブリッジ設定用の簡単なプレイブック、leaf.yml
- hosts: leafs
roles:
- arista.eos-system
次に実行します:
ansible-playbook -i hosts leaf.yml
開発者情報
開発への貢献を歓迎します。追加情報や、ロール開発のテストケースの開発と実行方法については、Arista Roles for Ansible - Development Guidelines(test/arista-ansible-role-test/README)を参照してください。
ライセンス
Copyright (c) 2015, Arista Networks EOS+ 全著作権所有。
以下の条件を満たす限り、ソースおよびバイナリ形式での再配布および使用は、変更の有無にかかわらず許可されます:
ソースコードの再配布には、上記の著作権表示、この条件のリスト、次の免責条項を保持する必要があります。
バイナリ形式での再配布には、上記の著作権表示、この条件のリスト、および次の免責条項を配布に付随する文書または他の資料に記載する必要があります。
Aristaの名前またはその貢献者の名前は、特定の事前の書面による許可なく、このソフトウェアから派生した製品の支持または宣伝に使用してはなりません。
このソフトウェアは著作権保持者および貢献者によって「現状のまま」提供され、商品性や特定目的への適合性を含むが、これに限定されない明示または暗黙の保証は否認されます。著作権保持者または貢献者は、本ソフトウェアの使用に起因するいかなる直接的、間接的、付随的、特別、例外的、または結果的な損害(代替品の調達、使用の損失、データや利益の損失、事業の中断を含むが、これに限られない)について、一切の責任を負いません。たとえそのような損害の可能性について通知を受けていても、いかなる法的理論(契約、厳格責任、または不法行為(過失を含む))に基づいても、著作権保持者や貢献者は責任を負いません。
著者情報
課題があれば、GitHubリポジトリを使用して問題を報告するか、ansible-dev@arista.comまでメールしてください。
Role for managing EOS global system configuration
ansible-galaxy install arista.eos-system