AristaをAnsibleのplaybookから設定してみる
前回のChefとAristaで試してみてわかったのですが、devopsのextensionがまだ0.1.1でやれることが少なすぎて今後に期待という状況なので果たしてAnsibleで試してどうなのと思いつつ、一応動いたのでメモとして残しておきます。
使い分けが難しいです。むしろ使い分ける必要はないんですかね?
- グローバルコンフィグをメーカー横断でChefで管理
- VLAN設定やインタフェースの設定はAnsibleで設定
言語も違うしChef統一でいいかな少し違うかなと思いつつ、でも大規模環境でもストレスの少ない一括変更とかできてよいかなとも思います。プログラマブルにトラフィックを制御したくはないですが、プログラマブルに設定をできるソフトウェアをメーカー横断で使いたいので、コントロールプレーンの分離と共通化はうまく進んでほしいです。devopsの最適化を求めて高価なメーカー既製品を購入するのは"個人的には"現時点で見送りしたいところです(数ヶ月後に違うこと言っているかもですが)
で、本題のAnsibleですがサラッと以下の通りです。
Ansibleインストール
epelリポジトリからインストールするので、epelが入ってない人は以下実行しておきます。
[root@localhost templates]# sudo rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm を取得中 警告: /var/tmp/rpm-tmp.XIffL5: ヘッダ V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY 準備中... ########################################### [100%] 1:epel-release ########################################### [100%] [root@localhost ~]# sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
今回はyumでインストールしますが、pip installの方がよいかもしれません
[root@localhost ~]# yum install ansible
hostsと実行結果はこんな感じです。
# vi /etc/ansible/hosts [arista] 192.168.1.100 ansible_ssh_user=admin [root@localhost ~]# ansible arista -m ping --ask-pass SSH password: 192.168.1.100 | success >> { "changed": false, "ping": "pong" }
devopsでVLAN一覧を確認してみます。
[root@localhost ~]# ansible all -a 'devops vlan list' -u admin --ask-pass SSH password: 192.168.1.100 | success | rc=0 >> { "message": "OK", "result": { "1": { "name": "default", "vlan_id": "1" }, "10": { "name": "VLAN0010", "vlan_id": "10" } }, "status": 200 }
PlaybookからVLANを設定する
Gitにサンプルがあがっているのでcloneして使います。
https://github.com/aristanetworks/ansible-eos
中身を見てみます。
[root@localhost playbooks]# cat vlan --- - hosts: arista gather_facts: no tasks: - name: create vlan 999 action: arista_vlan vlan_id=999 logging=true - name: edit vlan 999 action: arista_vlan vlan_id=999 name=test logging=true - name: delete vlan 999 action: arista_vlan vlan_id=999 state=absent logging=true
aristaグループのホストに対してplaybookを流します。作って、編集して、削除します。
[root@localhost playbooks]# ansible-playbook vlan --module-path=../modules/ --ask-pas [WARNING]: The version of gmp you have installed has a known issue regarding timing vulnerabilities when used with pycrypto. If possible, you should update it (ie. yum update gmp). SSH password: PLAY [arista] ***************************************************************** TASK: [create vlan 999] ******************************************************* changed: [192.168.1.100] TASK: [edit vlan 999] ********************************************************* changed: [192.168.1.100] TASK: [delete vlan 999] ******************************************************* changed: [192.168.1.100] PLAY RECAP ******************************************************************** 192.168.1.100 : ok=3 changed=3 unreachable=0 failed=0
流している最中にArista(EOS)側でVLANを見てみます。 Playbook通りに実行されていることがわかります。
arista-kensho#show vlan VLAN Name Status Ports ----- -------------------------------- --------- ------------------------------- 1 default active 10 VLAN0010 active arista-kensho#show vlan VLAN Name Status Ports ----- -------------------------------- --------- ------------------------------- 1 default active 10 VLAN0010 active 999 VLAN0999 active arista-kensho#show vlan VLAN Name Status Ports ----- -------------------------------- --------- ------------------------------- 1 default active 10 VLAN0010 active 999 test active arista-kensho#show vlan VLAN Name Status Ports ----- -------------------------------- --------- ------------------------------- 1 default active 10 VLAN0010 active
インタフェースの設定についても以下の通りです。見ればわかると思いますので貼り付けだけにします。
arista-kensho#show run interface Ethernet1 shutdown ! [root@localhost playbooks]# cat interface --- - hosts: arista tasks: - name: set description on Ethernet 1 action: arista_interface interface_id=Ethernet1 description='test interface' logging=true [root@localhost playbooks]# ansible-playbook interface --module-path=../modules/ --ask-pas [WARNING]: The version of gmp you have installed has a known issue regarding timing vulnerabilities when used with pycrypto. If possible, you should update it (ie. yum update gmp). SSH password: PLAY [arista] ***************************************************************** GATHERING FACTS *************************************************************** ok: [192.168.1.100] TASK: [set description on Ethernet 1] ***************************************** changed: [192.168.1.100] PLAY RECAP ******************************************************************** 192.168.1.100 : ok=2 changed=1 unreachable=0 failed=0 arista-kensho#show run interface Ethernet1 description test interface shutdown !
冒頭にも書きましたが、devopsと共通化に期待ということろです。
一部の機種で対応してますとかだと正直厳しいですね。
シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。
- 作者: 若山史郎
- 発売日: 2014/07/30
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
Ansible Configuration Management
- 作者: Daniel Hall
- 出版社/メーカー: Packt Publishing
- 発売日: 2013/11/22
- メディア: Kindle版
- この商品を含むブログを見る