うさラボ

お勉強と備忘録

pyATS Testbed作成

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

csvexcelをsourceに指定することも可能で、大量のDeviceを登録する場合はCSVファイルを用意することで作成できます。

さらに、別件でTwitterでこんなことをツイートしていましたら。

@tahigash3さんにリプライを頂いたので合わせて紹介します。

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