はじめに
今回はAristaが提供しているcEOSをAnsibleで操作できるかやってみる。
実験内容としてはvlan 1にIPアドレスを設定するplay-booksにて設定されるかを確認する。
動作環境
・Mac OS(cEOS on Docker)
目次
検証内容
前回dockerコンテナとしてAristaのcEOSを構築した記事を挙げた。
構築方法は前回の記事も踏まえて参考にしていただけると幸いです。
今回は前回とコンテナの作成のパラメーターが若干違うため、起動パラメーターのみ環境構築の章にて記述する。
環境構築
cEOS のdockerコンテナ作成のパラメーター
docker create --name=ceos2 --privileged -p 25022:22 -e INTFTYPE=eth -e ETBA=1 -e SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 -e CEOS=1 -e EOS_PLATFORM=ceoslab -e container=docker -i -t ceos:latest /sbin/init systemd.setenv=INTFTYPE=eth systemd.setenv=ETBA=1 systemd.setenv=SKIP_ZEROTOUCH_BARRIER_IN_SYSDBINIT=1 systemd.setenv=CEOS=1 systemd.setenv=EOS_PLATFORM=ceoslab systemd.setenv=container=docker
作成できたらdockerネットワークの設定などが残っているが前回の記事に記載がるのでそちらを参考に。
起動できたらコンテナにCliログイン
docker exec -it ceos2 Cli
ログインできたらグローバルコンフィギュレーションモードにてユーザーとパスワード設定を行う。
(config)#username arista privilege 15 secret arista
ここまで設定できたら作成したceos2コンテナにsshでログインできるか試してみる。
$ssh arista@localhost -p 25022 Password: localhost>
事前にvlan 1にIPが設定されていないことを確認できれば事前準備は完了
localhost#show interfaces vlan 1 % Interface does not exist
Play-books作成と実行
インベントリーファイルの中身はこちら
[ceos2] localhost [ceos2:vars] ansible_user=arista ansible_password=arista ansible_connection=network_cli ansible_network_os=eos ansible_ssh_pass=arista ansible_port=25022 ansible_become=yes ansible_become_method=enable ansible_become_pass=arista
play-booksの中身はこちら
- hosts: ceos2 gather_facts: no tasks: - name: show version eos_config: parents: interface vlan 1 lines: ip address 192.168.1.1 255.255.255.0
ここまで出来れば後は実行
$ansible-playbook -i hosts setvlan.yml PLAY [ceos2] *********************************************************************************************************************************************************************************************** TASK [show version] **************************************************************************************************************************************************************************************** [WARNING]: Platform darwin on host localhost is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. changed: [localhost] PLAY RECAP ************************************************************************************************************************************************************************************************* localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
結果確認
設定できたか確認した内容はこちら
localhost#show int vlan 1 Vlan1 is up, line protocol is up (connected) Hardware is Vlan, address is 0242.ac11.3eb8 (bia 0242.ac11.3eb8) Internet address is 192.168.1.1/24 Broadcast address is 255.255.255.255 IP MTU 1500 bytes (default) Up 3 minutes, 32 seconds
さいごに
AnsibleにてcEOSのコンテナに対して自動化が可能な為、実機を購入する必要がなくなる。 実機購入を躊躇っている人にはこの方法でネットワーク機器の自動化を学習するのが良いと思う。
今後はコンテナを増やしてルーティングを行う為のplay-booksを作成しようと考えている。