HiRoLabブログ

HiRoのゆるふわIT備忘録

cEOSをAnsibleで自動化を試してみた

はじめに

今回はAristaが提供しているcEOSをAnsibleで操作できるかやってみる。
実験内容としてはvlan 1にIPアドレスを設定するplay-booksにて設定されるかを確認する。

動作環境

Mac OS(cEOS on Docker)

目次

検証内容

前回dockerコンテナとしてAristaのcEOSを構築した記事を挙げた。

hiro1325.hatenablog.com

構築方法は前回の記事も踏まえて参考にしていただけると幸いです。
今回は前回とコンテナの作成のパラメーターが若干違うため、起動パラメーターのみ環境構築の章にて記述する。

環境構築

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を作成しようと考えている。