Testbedファイルとは
pyATS/Genieを利用するにはTestbedと呼ばれる、宛先の情報をまとめたYAMLファイルを作成する必要があります。
作り方
私の知っている限りTestbedにはいくつかの作り方があります。
- 手でかく
- コマンドから生成する
今回はpyats create testbed
コマンドでTestbedファイルを作成します。
使い方を調べるために、まずは--helpオプションで実施し使い方を調べます。
(pyats20-11) usalab!:nw_lab $ pyats create testbed --help Usage: pyats create testbed [source] [arguments] Testbed Options: [source] Source of where to retrieve device data. --output OUTPUT File location to output the created testbed yaml. General Options: -h, --help Show help -v, --verbose Give more output, additive up to 3 times. -q, --quiet Give less output, additive up to 3 times, corresponding to WARNING, ERROR, and CRITICAL logging levels
csvやexcelをsourceに指定することも可能で、大量のDeviceを登録する場合はCSVファイルを用意することで作成できます。
さらに、別件でTwitterでこんなことをツイートしていましたら。
pyATSインストールしたらAnsibleも入るのか!
— うさぎエンジニア (@usagi_automate) 2020年11月23日
しかもこれはもしや2.10では??
pip install pays[full] pic.twitter.com/cN8MF2jrfx
@tahigash3さんにリプライを頂いたので合わせて紹介します。
最新バージョンが入るはずです。Ansibleを必要とするのはインベントリファイルをtestbed yamlに変換する機能だけです。
— Takashi Higashimura (@tahigash3) 2020年11月23日
Ansibleのinventoryファイルが既にあれば、それを利用してTestbedファイルを作成することも可能なようです
inventoryのみ読み込んでTestbedファイルを作るようなので、inventoryの書き方に特徴があるのでは無いかな?と睨んでいます。(pipインストール時にpyats[full]を指定しAnsibleも合わせてインストールする必要もあります)
こちらは、また別の回で紹介しようと思います。
sourceファイルが無い時はsourceオプションをinteractive
にして実行することで対話形式でTestbedファイルの作成もできます。
公式ドキュメント: pyATS Create — Genie Documentation
今回は対話形式でTestbedファイルを作成してみます。
testbed/sample.ymlを作成してみます。★でコメント
(pyats20-11) usalab!:nw_lab $ pyats create testbed interactive --output testbed/sample.yml Start creating Testbed yaml file ... Do all of the devices have the same username? [y/n] n ★Testbedファイル内のDeviceのusernameが全て共通する場合[y] Do all of the devices have the same default password? [y/n] n ★Testbedファイル内のDeviceのlogin passwordが全て共通する場合[y] Do all of the devices have the same enable password? [y/n] n ★Testbedファイル内のDeviceのenable passwordが全て共通する場合[y] Device hostname: csr1000v ★ホスト名を入力(1文字でもずれるとうまく動かないので注意) IP (ip, or ip:port): ios-xe-mgmt.cisco.com:8181 Username: developer Default Password (leave blank if you want to enter on demand): Enable Password (leave blank if you want to enter on demand): Protocol (ssh, telnet, ...): ssh OS (iosxr, iosxe, ios, nxos, linux, ...): iosxe More devices to add ? [y/n] n ★さらにDevice追加するなら[y] Testbed file generated: vars/sample.yml
Testbedファイルの作成(対話形式)
testbed/sample.ymlにできたtestbedファイル
devices: csr1000v: connections: cli: ip: ios-xe-mgmt.cisco.com port: 8181 protocol: ssh credentials: default: password: C1sco12345 username: developer enable: ★こちらは今回不要なので削除する password: '%ASK{}' os: iosxe type: iosxe
今回enableパスワードは未設定なので本設定は不要です。
削除してしまいましょう。
enable: password: '%ASK{}'
残していた場合はScriptを実行したとき最初に入力が求められるようになります。
devices: csr1000v: connections: cli: ip: ios-xe-mgmt.cisco.com port: 8181 protocol: ssh credentials: default: password: C1sco12345 username: developer os: iosxe type: iosxe
これでTestbedファイルが作成できました。
TestbedのDeviceの項目にも他の変数などもありますが、最低限host名,ip, password,enable,osを定義すればTestbedファイルとして成立するようです。
次回、このTestbedファイルを使ってpyatsを動かしていきます。