puppet本にはcisco nexusを制御する章があるよ

12
Puppet本にはCisco NEXUSを 制御する章があるよ 2017/12/13 Hidetoshi Ochiai ネットワークプログラマビリティ勉強会 #14 ショート枠 発表資料

Upload: hidetoshi-ochiai

Post on 22-Jan-2018

583 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Puppet本にはcisco nexusを制御する章があるよ

Puppet本にはCisco NEXUSを制御する章があるよ

2017/12/13Hidetoshi Ochiai

ネットワークプログラマビリティ勉強会 #14ショート枠 発表資料

Page 2: Puppet本にはcisco nexusを制御する章があるよ

自己紹介 サーバサイドの人。ネットワークはサーバの周辺知識とし

て知っているだけ。 某SI会社勤務 2009年、Hadoop数百台の構築維持でPuppetを経験 その後、複数プロジェクトでPuppetで自動化を実施 現在、社内へのインフラ自動化の導入推進役をしている

社内は未だに人力のパラメタシート/手順書/試験項目書で成り立ってます。

夏にPuppetの書籍を出版しました! (次のページ)

Page 3: Puppet本にはcisco nexusを制御する章があるよ

Puppet[設定&管理]活用ガイド2017年8月24日発売 技術評論社執筆メンバは、全員同じ某SI会社勤務

ネットワークの章は、以下の皆様に多大 なるご助力をいただき、完成しました!

感謝! ServiceNow Japan株式会社河野真祐様

シスコシステムズ合同会社加藤久慶様

シスコシステムズ合同会社吉原大補様

Page 4: Puppet本にはcisco nexusを制御する章があるよ

目次を簡単に紹介

[第一部] 基本編1. Puppetはじめよう2. マニフェストの書き方3. クラス・リソースの定義4. モジュールの活用5. Puppet構成とインストール6. Hieraによるコードとデータの分離7. 高度な機能の活用

[第二部] 応用編8. 自動化のメリット9. 自動化に適したアーキテクチャ10. 自動化に適したインフラ体制11. マニフェスト設計のベストプラクティス12. 自動化に向かない構成の乗りこなし方13. 商用ソフトウェアのモジュール化14. インフラのテスト手法15. Puppet自体の運用設計16. パラメータシートからマニフェストの自動

生成17. ネットワーク機器とストレージ機

器の管理

Puppetの最新の文法を網羅的に解説

実際のエンタープライズシステムでの自動化の考え方を解説ツールに寄らない内容

17.1  Cisco製ネットワーク機器の管理17.2 EMC社製ストレージの管理17.3 NetApp社製ストレージの管理

Puppet, Chef, Ansibleを通じて、ネットワーク・ストレージの自動化まで解説した書籍は他にないのでは?(たぶん)

この本ならでは

この本ならでは

Page 5: Puppet本にはcisco nexusを制御する章があるよ

PuppetのCiscoモジュールpuppetlabs/ciscopuppetモジュール (Puppet社公式モジュール)Nexusシリーズの管理がPuppetで行える

Page 6: Puppet本にはcisco nexusを制御する章があるよ

ciscopuppetモジュールの機能 [1/2]タイプ  リソース 簡易説明

AAA Types cisco_aaa_authorization_login_cfg_svc cisco_aaa_authorization_login_exec_svc cisco_aaa_group_tacacs cisco_aaa_authentication_login

認証、認可、アカウンティングのためのリソース

ACL Types cisco_acl, cisco_ace アクセス制御のためのリソース

BGP Types cisco_bgp, cisco_bgp_af cisco_bgp_neighbor, cisco_bgp_neighbor_af

L3ルーティングプロトコル BGP制御のためのリソース

Brige Domain Types

cisco_bridge_domain cisco_bridge_domain_vni L2ブロードキャストドメインを定義するためのリソース

Fabricpath Types cisco_fabricpath_global cisco_fabricpath_topology

L2でSTPの代わりに使用する技術FabricPath設定のためのリソース

Interface Types cisco_interface インターフェイス設定のためのリソース

ITD Types cisco_itd_device_group cisco_itd_device_group_node cisco_itd_service

L3, 4の負荷分散、ロードバランシング設定のためのリソース

Multicast Types cisco_pim, cisco_pim_rp_address cisco_pim_grouplist

マルチキャスト設定のためのリソース

OSPF Types cisco_ospf, cisco_ospf_vrf L3ルーティングプロトコルOSPF制御のためのリソース

サーバサイドの人から見ると、はっきり言って良くわかりません(涙)

なんとなくキーワードを聞いたことがあるレベルのものばかり……

たぶん、役に立つ、はず、です、きっと

Page 7: Puppet本にはcisco nexusを制御する章があるよ

ciscopuppetモジュールの機能 [1/2]タイプ  リソース 簡易説明

AAA Types cisco_aaa_authorization_login_cfg_svc cisco_aaa_authorization_login_exec_svc cisco_aaa_group_tacacs cisco_aaa_authentication_login

認証、認可、アカウンティングのためのリソース

ACL Types cisco_acl, cisco_ace アクセス制御のためのリソース

BGP Types cisco_bgp, cisco_bgp_af cisco_bgp_neighbor, cisco_bgp_neighbor_af

L3ルーティングプロトコル BGP制御のためのリソース

Brige Domain Types

cisco_bridge_domain cisco_bridge_domain_vni L2ブロードキャストドメインを定義するためのリソース

Fabricpath Types cisco_fabricpath_global cisco_fabricpath_topology

L2でSTPの代わりに使用する技術FabricPath設定のためのリソース

Interface Types cisco_interface インターフェイス設定のためのリソース

ITD Types cisco_itd_device_group cisco_itd_device_group_node cisco_itd_service

L3, 4の負荷分散、ロードバランシング設定のためのリソース

Multicast Types cisco_pim, cisco_pim_rp_address cisco_pim_grouplist

マルチキャスト設定のためのリソース

OSPF Types cisco_ospf, cisco_ospf_vrf L3ルーティングプロトコルOSPF制御のためのリソース

Page 8: Puppet本にはcisco nexusを制御する章があるよ

ciscopuppetモジュールの機能 [2/2]タイプ  リソース 簡易説明

Portchannel Types

cisco_portchannel_global, cisco_interface_ospf cisco_interface_channel_group cisco_interface_portchannel

複数物理ポートを1つ論理ポートとしてまとめるためのリソース

STP Types cisco_stp_global L2プロトコルSTPのためのリソース

SNMP Types cisco_snmp_community, cisco_snmp_groupcisco_snmp_server, cisco_snmp_user

SNMP設定のためのリソース

TACACS Types cisco_tacacs_server_host cisco_tacacs_server

認証サーバ設定のためのリソース

VLAN Types cisco_vtp, cisco_vlan VLAN設定のためのリソース

VPC Types cisco_vpc_domain 筐体をまたがる複数物理ポートを1つの論理ポートしてまとめるためのリソース

VRF Types cisco_vrf_af, cisco_vrf 一台の物理ルータの中に複数の仮想ルータを作るためのリソース

VNI Types cisco_interface_service_vni cisco_encapsulation

VXLANにおいて、各論理ネットワークの識別を行うためのIDを設定するためのリソース

VXLAN Types cisco_vxlan_vtep, cisco_vxlan_vtep_vni cisco_evpn_vni, cisco_overlay_global

VXLAN設定のためのリソース

Miscellaneous Types

cisco_vdc, cisco_command_config その他

Page 9: Puppet本にはcisco nexusを制御する章があるよ

コードの例: VLAN設定cisco_vlan { '2':

ensure => present,

vlan_name => 'vlan2',

shutdown => false,

}

cisco_interface { 'Ethernet1/3':

description => 'configured by puppet',

shutdown => false,

access_vlan => 2,

switchport_mode => access,

}

VLAN 2の設定

ポート Ethernet1/3にVLAN 2を割り当てる

一番単純な例を1つだけ示します。詳細はciscopuppetモジュールのドキュメントを見てください。

Page 10: Puppet本にはcisco nexusを制御する章があるよ

システム構成図● 書籍では、PC上のVMでNX-OSv 9000を動作させる方法を紹介しています。– Nexusが無料で試せます!– Puppetの検証目的であれば、問題なく使えます

Windows

VM VM NX-OSv 9000 Linux

Puppetマスタ

Puppetエージェント

マニフェストNX-OSのguestshell上にインストール

VirtualBox

Page 11: Puppet本にはcisco nexusを制御する章があるよ

で、結局どうなの?分類 質問 回答

機能 モジュールの作りはどう?

単にコンフィグを流し込むのではなく、ネットワーク機能をきちんと抽象化して、Puppetらしく作り込んでいる印象です

足りない機能があるのですが

Issueでリクエスト出すか、自分で作ってPull Request出しましょう!

ええっと、足りない機能がすぐに使えないと困るのですが……

cisco_command_config使うと、コンフィグが直接設定できるので、とりあえず何でも設定できます。冪等性もあります。show running-configの出力と比較して変化したところだけ設定されます。

Ansibleのネットワーク機能と比べてどう?

Ansble2.3までの機能は、上記cisco_command_configとほぼ同じで、コンフィグ流し込みタイプです。Ansible 2.4からは、機能を抽象化して本格的なモジュールに向かいつつあるようです。

利用例

実案件で使ったことあるの?

私はまだ実戦投入できていないです。虎視眈々とタイミングを狙っているのですが。海外では使われているようですが、詳しくはよくわかりません。Nexusを導入している案件では、既に運用ががっちり決まっていて、後付けでPuppet入れるのはかなりつらいので、あきらめました。

どのような案件なら使えそうなの?

仮想化統合基盤などのように、テナント払い出し毎に設定変更が入るような案件なら、Puppet等のツールが有益と思われます。OpenFlow導入は躊躇するが、今までと同じタイプの機器を使いつつ、コンフィグをPuppetで制御はアリだと思います。

Page 12: Puppet本にはcisco nexusを制御する章があるよ

まとめ● Puppet書籍を出しました。第2部は、他の本に書いていない内容が満載– エンタープライズシステムでの自動化の考え方– ネットワーク機器、ストレージ機器の制御

● 機器を持っていなくても、NX-OSv 9000を使うと簡単に試せます

● 皆さん、実際のプロジェクトでciscopuppetモジュールを使ってみましょう!