こんばんは たそ(@taso_int)です。
入社してから1ヶ月経ちました。時間たつのが早い…
GWの予定は当然ありません。資格の勉強でもしようかと思います。
今日は久しぶりに技術的な記事を書きたいなと
私はAnsibleでサーバの自動構築(レベル低)はやったことあるのですが、
Ansibleでネットワーク機器を触ったことがないのでやってみたいなと思いました。
今日はそのための環境構築として書きたいと思います。
1.構成図
本当にシンプルな構成で申し訳ないです。本当はスイッチ購入して、
ホストとAnsibleを分けたかったのですが、スイッチ持ってないですよね。
おすすめの中古スイッチがあれば教えてほしいです。
2.目標
まずはこの構成の完成を目指していきたいと思います。
Ansibleはインストール済みになってます。
ルータへのSSH接続とAnsibleのモジュールが使えればOKとします。
3.手順
3-1ルータへのSSH有効化
まずはルータへのSSHをできるようにコンソールケーブルを使用して、
設定を行いたいと思います。
①ユーザー認証の設定
R1(config)#username taso privilege 15 secret cisco
R1(config)#line vty 0 4
R1(config-line)#login local ←ユーザ名とパスワードを認証の際に使用するように
②ドメイン名作成
R1(config)#hostname R1 (←設定している)
R1(config)#ip domain name taso.com
③RSA鍵の作成
R1(config)#crypto key generate rsa ←この後に1024を入力
④セキュリティ的に
R1(config)#line vty 0 4
R1(config-line)#trunsport input ssh
※事前に特権EXECモードへ移行するためにパスワード設定はしておくこと
enable passwordコマンドかenable secretコマンド
参考URL
3-2ルータのアドレス設定
R1(config)#int f0/1
R1(config-if)#ip add 192.168.1.2 255.255.255.0
R1(config-if)#no shut ←ポートの有効化
3-3PC側の設定
ホストのアドレスを192.168.1.1に設定
SSHでログインできるかを確認する。
SSHにログインができなかった場合、
手順の振り返り、エラーの確認
今回はSSHの鍵が対応していなかったためエラーを起こしたらしい
/etc/ssh/ssh_configの設定を確認して無事SSH成功
3-4Ansibleの設定
ディレクトリ構成
Ansible
├── group_vars
│ └── ios.yml
└── inventory
inventoryファイルの作成。
ルータで設定したf0/1のipアドレスを記入する。
[ios]
R1 ansible_hosts=192.168.1.2
group_vars/ios.ymlファイルの作成
inventoryファイルで[ios]のグループを定義したので、そのios内の変数等を
しまうためのファイルを作成
---
ansible_network_os: ios
ansible_connection: network_cli
anisble_user: taso
ansible_password: cisco
#特権
ansible_become_password: cisco
ansible_become: yes
基本設定はこれで終わりですかね。
ためしにpingモジュールを使って疎通確認してみます。
ansible -i inventory ios -m ping
Router1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
またciscoのシステム情報やインターフェイス情報を入手すること
ができるios_factsモジュールを使ってみたいと思います。
一部抜粋
ちゃんと取得できていますね。
今回はこれで終わりにします。
次週は何かの設定をAnsibleで入れてみたいと思います。
あとコマンドとファイルの記述が分かりづらいので
次はコマンドプロンプト風に出来たらいいなと思います。
ここまで読んでいただきありがとうございました