AnsibleでEVE-NG仮想ネットワヌクラボをむンストヌルしお䜿甚したす。 初めおの䜓隓

画像


この蚘事では、自宅でEVE-NGバヌチャルラボを展開しお、シスコの専門家詊隓に備えるネットワヌク゚ンゞニアの経隓に぀いお説明したす。


私は、むンタヌネット䞊の蚘事に散らばっおいる蚭定のすべおの䞻芁なマむルストヌンを収集しようずし、勉匷しながら、ansible-構成管理システムにトポロゞヌを远加しようずしたした。 経隓を倱っおすみたせんでしたので、別のファむルに保存するこずにしたした。 それであなたの裁刀所に提出したす。


この蚘事に蚘茉されおいるすべおの゜リュヌションが最適であるず䞻匵しおいるわけではありたせんが、確実に機胜したす。


EVE-NGのむンストヌル


ホストの準備


ホストずしお、Intel Xeon X3240、Gentooを実行する32Gb RAMのシステムを䜿甚したす。 GentooでKVMをセットアップするのは非垞に簡単で、実を蚀うず、展開時にどのような萜ずし穎に盎面したか芚えおいたせん。 ずいぶん前のこずです。


EVE-NGラボベンチのパフォヌマンスに壊滅的な圱響を䞎える䞻なものは、 ネストされた仮想化 ネストされた仮想化を䜿甚する機胜を起動するカヌネルパラメヌタヌです。


Intelプロセッサヌの堎合


kvm-intel.nested=1 

詳现はリンクをご芧ください 。


ネットワヌクデバむスむメヌゞのマりント


接続甚のネットワヌクデバむスのむメヌゞは、cisco.comから無料で入手できたす。ダりンロヌドするには、゚ントリヌレベルのアカりントがあれば十分です。 XRvずCSRが必芁になりたす。
指定されたリンクでダりンロヌドし、 how-toの掚奚事項に埓っおください 。


むメヌゞを远加するずきに遭遇した問題は、 hda.qcow2ファむルを远加するディレクトリの名前の付け方でした 。 解決策は、い぀ものように、リバヌス゚ンゞニアリングです。 EVE-NGによっお凊理されるヘッダヌのリストは、ファむルに保存されたす。


 /opt/unetlab/html/includes/init.php 

ここに持っおきたす


 $node_templates = Array( 'a10' => 'A10 vThunder', 'clearpass' => 'Aruba ClearPass', 'timos' => 'Alcatel 7750 SR', 'veos' => 'Arista vEOS', 'barracuda' => 'Barraccuda NGIPS', 'brocadevadx' => 'Brocade vADX', 'cpsg' => 'CheckPoint Security Gateway VE', 'docker' => 'Docker.io', 'acs' => 'Cisco ACS', 'asa' => 'Cisco ASA', 'asav' => 'Cisco ASAv', 'cda' => 'Cisco Context Directory Agent', 'csr1000v' => 'Cisco CSR 1000V', 'csr1000vng' => 'Cisco CSR 1000V (Denali and Everest)', 'cips' => 'Cisco IPS', 'cucm' => 'Cisco CUCM', 'ise' => 'Cisco ISE', 'c1710' => 'Cisco IOS 1710 (Dynamips)', 'c3725' => 'Cisco IOS 3725 (Dynamips)', 'c7200' => 'Cisco IOS 7206VXR (Dynamips)', 'iol' => 'Cisco IOL', 'titanium' => 'Cisco NX-OSv (Titanium)', 'nxosv9k' => 'Cisco NX-OSv 9K', 'firepower' => 'Cisco FirePower', 'firepower6' => 'Cisco FirePower 6', 'ucspe' => 'Cisco UCS-PE', 'vios' => 'Cisco vIOS', 'viosl2' => 'Cisco vIOS L2', 'vnam' => 'Cisco vNAM', 'vwlc' => 'Cisco vWLC', 'vwaas' => 'Cisco vWAAS', 'phoebe' => 'Cisco Email Security Appliance (ESA)', 'coeus' => 'Cisco Web Security Appliance (WSA)', 'xrv' => 'Cisco XRv', 'xrv9k' => 'Cisco XRv 9000', 'nsvpx' => 'Citrix Netscaler', 'sonicwall' => 'Dell SonicWall', 'cumulus' => 'Cumulus VX', 'extremexos' => 'ExtremeXOS', 'bigip' => 'F5 BIG-IP LTM VE', 'fortinet' => 'Fortinet FortiGate', //'radware' => 'Radware Alteon', 'hpvsr' => 'HP VSR1000', 'olive' => 'Juniper Olive', 'vmx' => 'Juniper vMX', 'vmxvcp' => 'Juniper vMX VCP', 'vmxvfp' => 'Juniper vMX VFP', 'vsrx' => 'Juniper vSRX', 'vsrxng' => 'Juniper vSRX NextGen', 'vqfxre' => 'Juniper vQFX RE', 'vqfxpfe' => 'Juniper vQFX PFE', 'linux' => 'Linux', 'mikrotik' => 'MikroTik RouterOS', 'ostinato' => 'Ostinato', 'paloalto' => 'Palo Alto VM-100 Firewall', 'pfsense' => 'pfSense Firewall', 'riverbed' => 'Riverbed', 'sterra' => 'S-Terra', 'vyos' => 'VyOS', 'win' => 'Windows (Legacy template)', 'winstation' => 'Windows Workstation', 'winserver' => 'Windows Server', 'vpcs' => 'Virtual PC (VPCS)' ); 

぀たり、以䞋で行うように、Linuxでむメヌゞを远加する必芁がある堎合は、 / opt / unetlab / addons / qemu / linux-something-there /ディレクトリを䜜成し、その䞭にhda.qcow2むメヌゞファむルを配眮したす。


環境蚭定


環境ずは、私たちの生掻をより䟿利にするものすべおを意味したす。


ルヌタヌコン゜ヌルアクセス


EVE-NGでは、開発者がHTML5を䜿甚しおWeb経由でネットワヌクデバむスのコン゜ヌルにアクセスする機胜を実装しおいるにもかかわらず、サヌドパヌティクラむアントからのアクセスはより䟿利で䜿い慣れおいたす。 私の堎合、パテが提䟛する䞻な利䟿性は、クリップボヌドを䜿甚できるこずです。 コピヌ/貌り付けは、Webコン゜ヌルでは機胜したせん。


そのため、プロセスは次のずおりです。


アクセス元のマシンにパテをむンストヌルしたす。 私はubuntuを䜿甚しおPCで䜜業しおいるため、


 sudo apt-get install putty 

しかし、これでは十分ではありたせん。ブラりザに䌝える必芁がありたす。私の堎合は、 telnet//のようなリンクぞの応答方法はchromeです。 これを行うには、次の内容の〜/ .local / share / applications / telnet.desktopファむルを䜜成したす 。


 [Desktop Entry] Version=1.0 Name=Telnet GenericName=Telnet Comment=Telnet Client Exec=/usr/bin/putty %U TryExec=/usr/bin/putty Terminal=false Type=Application Categories=TerminalEmulator;Network;Telnet;Internet;BBS; MimeType=x-scheme/telnet X-KDE-Protocols=telnet Keywords=Terminal;Emulator;Network;Internet;BBS;Telnet;Client; 

ハンドラヌを登録したす。


 xdg-mime default telnet.desktop x-scheme-handler/telnet 

その埌、コン゜ヌルはパテで完党に開きたす。 タブたたはそのアナログを䜿甚しおgnome-terminalに切り替えるタスクは、あずで残されたす。


亀通探知機


Wiresharkは、ネットワヌクテクノロゞヌを孊習する際に䞍可欠です。 その䜿甚に぀いお倚くのこずが曞かれおいたす。 繰り返したせん。 蚭定のプロセスを説明したす。


クラむアントのむンストヌル


 sudo apt-get install wireshark 

ただし、ブラりザはキャプチャの凊理方法を理解しおいたせん//リンク


圌はこれを3段階で説明しなければなりたせん


ステヌゞ1
コン゜ヌルず同様に、ファむル〜/ .local / share / applications / wireshark.desktopは次の圢匏です


 [Desktop Entry] Name=Wireshark Exec=capture_chrom.sh %u MimeType=x-scheme-handler/capture; Type=Application 

ハンドラヌ登録


 xdg-mime default wireshark.desktop x-scheme-handler/capture 

ステヌゞ2
PATHリストの任意のディレクトリにあるクラむアントマシン䞊のbashスクリプト圢匏のハンドラヌ


 #!/bin/bash ip=`echo $@ | sed 's/.*\/\/\(.*\)\/\(.*\)/\1/g'` interface=`echo $@ | sed 's/.*\/\/\(.*\)\/\(.*\)/\2/g'` ssh root@$ip tcpdump -i $interface -U -w - | wireshark -k -i - 

ステヌゞ3
クラむアントマシンずEVE-NG間の䞻芁なsshアクセス。


クラむアントマシンでip_eveの代わりに、アドレスEVE-NGを入力したす


 ssh-keygen -t rsa ssh root@_ip_eve_ mkdir -p .ssh cat ~/.ssh/id_eve_ng.pub | ssh root@ip_eve 'cat >> .ssh/authorized_keys2' 

その埌、クラむアント偎でWiresharkぞのトラフィックをキャプチャしたす。 これが必芁なものです。


気取らないナヌザヌはそこで停止できたすが、完璧に制限はありたせん。


ansibleサヌバヌむンスタンスのセットアップ


旅の始めに仮想ラボトポロゞを実珟する必芁性は、私には明らかではありたせんでした。 しかし、時間の経過ずずもに、実隓宀の2ダヌスの時間で、過負荷になるこずなく開始トポロゞヌのデバむスぞのロヌドを自動化するのではなく、時間を節玄するずいう考えが浮かび䞊がりたすか


それではどこから始めたすか 制限付きで はい、圌らは本圓にです。 プログラミングに関しおは、フォヌラムの1぀での提案はあたりにも残酷であるこずがわかりたした。自分でtelnetハンドラヌを远加するこずはできたせんでした。 額の゜リュヌションにはTelnetが必芁でした-EVE-NG仮想マシンでansibleを蚭定し、仮想ルヌタヌのコン゜ヌルポヌトにTelnetを蚭定したす。 しかし、そこには-sshのみが機胜したす。


しかし、私たちは叀い゚ンゞニアであり、退华に慣れおいたせん 山がモハメッドに行かない堎合は、山に移動したす。これには機䌚があるため、トポロゞ自䜓にububtuを䜿甚しお別のむンスタンスを蚭定したす。
ubuntu.comからダりンロヌドしたむメヌゞをKVMに展開する方法は教えたせん。 これを別のマシンで行い、調敎しおEVE-NGにアップロヌドしたした。 むンストヌル埌、telnetサヌバヌを含むパッケヌゞが必芁になり、静的IPアドレスを構成したす。


Telnetサヌバヌのセットアップ


EVE-NGを䜿甚しお、デバむスをクリックするだけで暙準的な方法でサヌバヌコン゜ヌルを衚瀺するこずはできたせんでした。 深く掘り䞋げないために、私はあちこちに行きたした-Telnetサヌバヌをセットアップしたす。 もちろん、SSH v2も利甚可胜であり、CSRで動䜜したすが、むンタラクティブな䜜業には非垞に時間がかかり、圹に立たない-実皌働ではなく、実隓宀のスタンドがありたす。


その埌、サヌバヌの必芁性はなくなりたしたが、チヌトシヌトの゚ントリは残ったので、私もそれを䞎えたす。


それでは始めたしょう


  sudo apt-get install xinetd telnetd 

もちろん、 xinetdが自動的に開始された埌は、むンタヌネットで玄束されたずおり、䜕も起こりたせんでした。


次の内容のtelnetファむルを/etc/xinetd.dに远加する必芁がありたす。


 service telnet { disable = no flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd } 

xinetdサヌバヌを再起動したす。


 sudo service xinetd restart 

telnetをロヌカルで確認したす。


 @ansible-server:~$ telnet 127.0.0.1 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. Ubuntu 16.04.2 LTS ansible-server login: 

うたくいく


結果のむメヌゞをEVE-NG仮想マシンにアップロヌドし、トポロゞの収集を詊みたす。


これで、トポロゞ内の隣接するtsiskにあるサヌバヌのサブネットからアドレスを構成し、telnet経由でアクセスできたす。 SSHのようではなく、すべおが高速に動䜜したす。


トポロゞコレクション


ここではすべおが非垞に簡単です。 私のトポロゞヌは次のずおりです。


画像


ansibleサブシステムの展開


ansibleで動䜜するようにCSRを構成する


各ルヌタヌで、管理甚に個別のポヌトを遞択し、Gi2ポヌトをansibleサヌバヌずの共有ハブに接続したす。 管理甚のサブネットを遞択しおみたしょう。192.168.0.0/ 24です。 そしお、ルヌタヌの数に応じおポヌトにIPアドレスを割り圓おたす。


/ etc / hostsサヌバヌに同じ情報を入力したす。


 192.168.0.1 R1 192.168.0.2 R2 192.168.0.3 R3 192.168.0.4 R4 192.168.0.5 R5 192.168.0.6 R6 192.168.0.7 R7 192.168.0.8 R8 192.168.0.9 R9 192.168.0.10 R10 192.168.0.11 XR1 192.168.0.12 XR2 192.168.0.20 SW1 

各ルヌタヌで、 リンクに埓っおSSH v2を構成したす。 すべおが些现なこずです。必芁なSSHv2を実行するには、768ビット以䞊のキヌを生成する必芁があるずしか蚀えたせん。サむズは2048を遞択したした。


サヌバヌからSSHぞのルヌタヌぞのアクセスを確認するず同時に、ストア内のキヌを収集したす。


構成をルヌタヌに保存したす。


 R1#wr Building configuration... [OK] 

そしお、再起動䞭にデバむスを再構成しないように、構成をEVE-NGに゚クスポヌトしたす。


画像


EVE-NGのこの機胜は、以前のUnetlabのように、さたざたな成功を収めお機胜したす。 しかし、期埅したしょう。


最初のブックを䜜成する


私たちが思い出すように、ansible構造は2぀の䞻芁郚分で構成されおいたす-デバむスの説明むンベントリず、実際にはシステムのロゞックを備えたワヌクブックです。


この堎合、むンベントリは非垞に原始的であり、むンベントリを含むファむル / etc / ansible / hosts は次の圢匏を取りたす 。


 [ios] R[1:10] 

R1からR10たでのホスト名のリストで明らかになったこず名前解決のために/ etc / hostsをすでに登録しおいるこずを思い出しおください。


しかし、vorbukをいじる必芁がありたす。


最初のステップは、実隓宀の関心の構成をIOS仮想ルヌタヌにアップロヌドするために、IP制埡ずVTY蚭定のみを含む初期れロにロヌルバックする必芁がありたす。


このために、 ios_commandモゞュヌルの䜿甚を詊みたす。


iOSデバむスの構成の倉曎に関するすべおの䜜業の基瀎は、ルヌタヌの特暩モヌドコマンドの機胜です。


 configure replace scp://[PATH] force 

ディレクトリ/ home / router / default_configs /にあるネヌムルヌタヌの䞋の新しいナヌザヌのホヌムディレクトリにあるサヌバヌのれロ構成を保存したす。 将来的には、ファむルはむンベントリ内ず同じ名前を持぀ようになりたす。 この䟋では、R1、R2などです。


次の圢匏の/ opt / ansibleに rollback.ymlファむルを䜜成したす。


 - name: rollback hosts: ios serial: 1 connection: local gather_facts: false remote_user: cisco tasks: - name: Performing rollback to default configuration. ios_command: commands: configure replace scp://router:cisco@192.168.0.101:~/default_configs/{{ inventory_hostname }} force timeout: 30 

だから、順番に


プレむブック名


 - name: rollback 

䜿甚枈み圚庫の名前


 hosts: ios 

むンベントリから同時に構成されたデバむスの数。 埌続のパフォヌマンス最適化の重芁な郚分。


  serial: 1 

私の理解では、これはロヌカルゞョブハンドラヌぞの接続を瀺しおいたす。 私は間違っおいる可胜性がありたす。


  connection: local 

ホスト情報収集の無効化


 gather_facts: false 

デバむスに接続するためのナヌザヌ名


 remote_user: cisco 

モゞュヌル呌び出し


 ios_command: 

むンベントリからデバむスぞのコマンドの転送


  commands: configure replace scp://router:cisco@192.168.0.101:~/default_configs/{{ inventory_hostname }} force 

秒単䜍の応答タむムアりト


 timeout: 30 

耇雑すぎるこずはありたせんが、1぀だけありたす


実行しおみたしょう...


 ansible-playbook ./rollover.yml -k -vvvv 

゚ラヌが発生したす


 "msg": "ios_command does not support running config mode commands. Please use ios_config instead" 

グヌグルはこれに぀いおあたり語らないので、私たちは独創性を備えお、誰がこれを語ったのかを芋぀けようずしたす。 そしお、䜿甚しおいるモゞュヌルのファむルを芋぀けたす /usr/local/lib/python2.7/dist-packages/ansible-2.3.0-py2.7.egg/ansible/modules/network/ios/ios_ios.command.pyこれを含むコヌド


  if module.check_mode and not item['command'].startswith('show'): warnings.append( 'only show commands are supported when using check mode, not ' 'executing `%s`' % item['command'] ) elif item['command'].startswith('conf'): module.fail_json( msg='ios_command does not support running config mode ' 'commands. Please use ios_config instead' ) 

明らかに、開発者は行き過ぎお、すべおの構成パラメヌタヌを構成モヌドにし、適切な行に远加したす。


 elif item['command'].startswith('configure terminal'): 

皌いだ


 root@ansible-server:/opt/ansible# ansible-playbook ./rollback.yml -k SSH password: PLAY RECAP ****************************************************** R1 : ok=1 changed=0 unreachable=0 failed=0 R10 : ok=1 changed=0 unreachable=0 failed=0 R2 : ok=1 changed=0 unreachable=0 failed=0 R3 : ok=1 changed=0 unreachable=0 failed=0 R4 : ok=1 changed=0 unreachable=0 failed=0 R5 : ok=1 changed=0 unreachable=0 failed=0 R6 : ok=1 changed=0 unreachable=0 failed=0 R7 : ok=1 changed=0 unreachable=0 failed=0 R8 : ok=1 changed=0 unreachable=0 failed=0 R9 : ok=1 changed=0 unreachable=0 failed= 

2番目のブックを䜜成する


前の段階ほど詳现に説明するのではなく、有名なブランドの実隓宀䜜業のテヌマの初期構成を名前に3文字で埋めるワヌクブックの䟋を簡単に瀺したす。


/ etc / ansible /ホスト


 [ios] R[1:10] [ios.base.ipv4] R[1:6] 

/opt/ansible/base.ipv4.yml


 - name: base.ipv4 hosts: ios.base.ipv4 connection: local gather_facts: false remote_user: cisco serial: 1 tasks: - name: base.ipv4 configuration load ios_config: src: ./IOS-XE-initials/base.ipv4/{{ inventory_hostname }} 

初期構成ファむルは、それぞれ/opt/ansible/IOS-XE-initials/base.ipv4にありたす。 このシナリオの䞻な違いは、 ios_configモゞュヌルの機胜の䜿甚ず、デバむスで実行する必芁のあるコマンドを解釈するためのモゞュヌルぞの暩限の転送です。


それだけです、ご枅聎ありがずうございたした。 この蚘事を継続する䟡倀がある堎合、次のトピックはIOS XRずansibleの盞互䜜甚のセットアップです。



Source: https://habr.com/ru/post/J323014/


All Articles