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を動かしていきます。