前回、AnsibleでNW機器への接続用(Telnet)Playbookを作成しました。
今回出力結果のログファイルを各機器ごとに出力するPlaybookを作成したのでまとめました。
前回の記事はこちらを参照
「Ansible」複数機器のログを各ファイルごとに出力するPlaybook
複数NW機器で各機器ごとの出力結果のファイルを作成するには「hosts」ファイルとPlaybookのエクスポートを変更します。
「hosts」をホスト名で設定
「hosts」ファイルで以下のように各NW機器ごとにホスト名とアクセス先のIPを設定します。
※hosts
[cisco_r1] CiscoRT1 ansible_host=192.168.0.1 CiscoRT2 ansible_host=192.168.0.2
「Playbook」で出力先のログを変数を使って設定
Playbookでエクスポート先のファイル名に変数を使用します。
30行目で「{{ inventory_hostname }}」を使用し、hostsのホスト名を使用するようにします。
[root@CetOS8 ansible]# cat cisco.yml --- - hosts: cisco_r1 connection: local gather_facts: False tasks: - name: show run telnet: user: cisco password: Nos7130! login_prompt: "Password: " prompts: - "[>|#]|Password: " command: - terminal length 0 - enable - Nos7130! - show run - show ver changed_when: False register: command_result - name: log export local_action: module: copy owner: root group: root mode: 0644 dest: "/etc/ansible/LOG/{{ inventory_hostname }}_show_run.log" content: "{{ command_result.output[3] }}" changed_when: False
Playbook実行
上記設定を実施後、Playbookを実行します。
[root@CetOS8 ansible]# ansible-playbook -i hosts cisco.yml PLAY [cisco_r1] ***************************************************************************************************************************************************************************************************************************** TASK [show run] ***************************************************************************************************************************************************************************************************************************** changed: [CiscoRT1] changed: [CiscoRT2] TASK [log export] *************************************************************************************************************************************************************************************************************************** ok: [CiscoRT1] ok: [CiscoRT2] PLAY RECAP ********************************************************************************************************************************************************************************************************************************** CiscoRT1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 CiscoRT2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [root@CetOS8 ansible]#
正常に動作したら以下フォルダで、複数分の機器のログファイルが作成されます。
[root@CetOS8 ansible]# ll LOG/* -rw-r--r--. 1 root root 4790 11月 26 17:09 LOG/CiscoRT1_show_run.log -rw-r--r--. 1 root root 1472 11月 26 17:09 LOG/CiscoRT2_show_run.log
Ansibleで複数のNW機器の出力結果をファイルで出力する方法は以上となります。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す