はじめに
Ansible のインストールについては、公式の Anisble インストールガイド、https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html を参照してください。
この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
Ansible は、クラウド プロビジョニング、構成管理、アプリケーションの展開、サービス内オーケストレーション、およびその他の IT ニーズを自動化するオープンソースの IT 自動化エンジンです。Puppet や Chef と同様に、Ansible を使用すると、管理者はさまざまなタイプのサーバー環境の管理、自動化、およびオーケストレーションを行えます。Ansible はエージェントレスであり、デバイスを自動化するためにターゲット ノード(サーバーまたはスイッチ)にソフトウェア エージェントをインストールする必要はありません。通常、Ansible は管理対象のターゲット サーバーで SSH と Python をサポートする必要がありますが、MDS スイッチの場合、Ansible は SSH と NX-API の両方を使用するように拡張されているため、スイッチ上の Python サポートは必要ありません。Ansible プレイブックは YAML で記述されているため、自動化ジョブを読みやすい形式で記述することができます。各 Ansible プレイブック内では、さまざまな Ansible モジュールを使用できます。
次に、cisco.nxos コレクション内の MDS 固有のモジュールを示します:
nxos_zone_zoneset (https://docs.ansible.com/ansible/latest/collections/cisco/nxos/nxos_zone_zoneset_module.html#ansible-collections-cisco-nxos-nxos-zone-zoneset-module)
nxos_devicealias (https://docs.ansible.com/ansible/latest/collections/cisco/nxos/nxos_devicealias_module.html#ansible-collections-cisco-nxos-nxos-devicealias-module)
nxos_fc_interfaces (https://docs.ansible.com/ansible/devel/collections/cisco/nxos/nxos_fc_interfaces_module.html#ansible-collections-cisco-nxos-nxos-fc-interfaces-module)
任意のコマンドを実行するには、nxos_command モジュール(https://docs.ansible.com/ansible/latest/collections/cisco/nxos/nxos_command_module.html#ansible-collections-cisco-nxos-nxos-command-module)を使用します。
Cisco MDS のサポートが制限されている他のモジュールもあります。Cisco MDS との互換性については、個々のモジュールのマニュアルを参照してください:https://docs.ansible.com/ansible/latest/collections/cisco/nxos/index.html#modules
Ansible モジュールは、SSH 接続または NX-API コールを行い、リアルタイムの状態データを収集し、Cisco MDS デバイスの構成を変更します。Ansible の詳細については、Ansible の公式ドキュメントを参照してください。
![]() (注) |
Cisco MDS Ansible モジュールの場合、ターゲット ノードに Python インタープリタは必要ありません。 |
Ansible でサポートされる Cisco MDS モジュールの詳細については、Ansible モジュールを参照してください。
Ansible のインストールについては、公式の Anisble インストールガイド、https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html を参照してください。
ホスト ファイルには、管理対象のデバイスがリストされます。1 つのデバイスを 1 つだけのグループに含めることも、複数のグループに含めることもできます。次のホストファイルでは、2 つのデバイス mds1 と mds2 を持つ edge と呼ばれる単一のグループが使用されています。接続は、HTTPS 接続を使用してターゲット デバイスに接続する NX-API に設定されます。ユーザー名とパスワードはホスト ファイルに保存されます。セキュリティを強化するために、このホストファイルは Ansible Vault を使用して暗号化できますが、ここでは使用しません。
![]() (注) |
Ansibe 2.5 から、 ansible_connection: local は廃止されました。代わりに |
$ cat /etc/ansible/hosts
[all:vars]
ansible_connection = ansible.netcommon.httpapi
ansible_httpapi_use_ssl=True
ansible_httpapi_port=8443
ansible_user=username
ansible_password=password
[edge]
mds1
mds2
すべての Cisco MDS NX-OS モジュールのマニュアルは、 https://docs.ansible.com/ansible/latest/collections/cisco/nxos/ から入手できます。または、組み込みのマニュアル ツールを使用して端末で表示できます。
$ansible-doc
この最初のプレイブックでは、いくつかの VSAN をプロビジョニングし、VSAN を削除します。nxos_vsan という Ansible モジュールを使用して、このタスクを自動化します。
以下に示すように、プレイブックは YAML で定義されています。
---
- name: Test that vsan module works
gather_facts: no
hosts:
- mds1
cisco.nxos.nxos_vsan:
vsan:
- id: 922
interface:
- fc1/1
- fc1/2
- port-channel 1
name: vsan-SAN-A
remove: false
suspend: false
- id: 923
interface:
- fc1/11
- fc1/21
- port-channel 2
name: vsan-SAN-B
remove: false
suspend: true
- id: 1923
name: vsan-SAN-Old
remove: true
register: result
- debug: var=result
上記のプレイブックが vsan.ymlと呼ばれると仮定すると、このタスクはターミナルから以下に示すように実行できます。
$ ansible-playbook vsan.yml
PLAY [VSAN TEST (NXOS)] ********************************************************
TASK [Test that vsan module works] *********************************************
changed: [mds1]
TASK [debug] *******************************************************************
ok: [mds1] => {
"result": {
"changed": true,
"cmds": [
"terminal dont-ask",
"vsan database",
"vsan 922",
"vsan 922 name vsan-SAN-A",
"no vsan 922 suspend",
"vsan database",
"vsan 922 interface fc1/1",
"vsan 922 interface fc1/2",
"vsan 922 interface port-channel 1",
"vsan database",
"vsan 923",
"vsan 923 name vsan-SAN-B",
"vsan 923 suspend",
"vsan database",
"vsan 923 interface fc1/11",
"vsan 923 interface fc1/21",
"vsan 923 interface port-channel 2",
"vsan database",
"no vsan 1923",
"no terminal dont-ask"
],
"failed": false,
"messages": [
"creating vsan 922",
"setting vsan name to vsan-SAN-A for vsan 922",
"no suspending the vsan 922",
"adding interface fc1/1 to vsan 922",
"adding interface fc1/2 to vsan 922",
"adding interface port-channel 1 to vsan 922",
"creating vsan 923",
"setting vsan name to vsan-SAN-B for vsan 923",
"suspending the vsan 923",
"adding interface fc1/11 to vsan 923",
"adding interface fc1/21 to vsan 923",
"adding interface port-channel 2 to vsan 923",
"deleting the vsan 1923"
]
}
}
PLAY RECAP *********************************************************************
mds1 : ok=2 changed=1 unreachable=0 failed=0
Ansible を使用して VSAN を設定/設定解除する方法を見てきました。これは単純な例ですが、自動化が必要なさまざまなタスクでモジュールを使用できます。