VOOZH about

URL: https://qiita.com/38pinn/items/09831db74b4ee4b791db

⇱ AnsibleでCiscoのIOSへの設定サンプル #Ansible - Qiita


👁 Image
2

Go to list of users who liked

1

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

More than 1 year has passed since last update.

@38pinn(38pinn)

AnsibleでCiscoのIOSへの設定サンプル

2
Posted at

AnsibleでCiscoのIOSへの設定サンプル

必要なもの

  • Ansibleがインストールされている管理サーバ(ここではubuntu)
  • ネットワーク接続が可能なCisco IOS機器
  • SSH経由でCisco機器にアクセスするための認証情報

Cisco機器の設定(SSHパスワード認証の場合)

Cisco機器にAnsibleユーザを追加/確認

TestRouter(config)#username miwapinn privilege 15 secret miwapinn
TestRouter(config)#line vty 0 15
TestRouter(config-line)#transport input ssh 

TestRouter#sh run | i user
 miwapinn privilege 15 secret 5 $1$xxxxxx5z9FrlrhBLHCxxxxxxxxx
TestRouter#

Ansible管理ノードの設定

インベントリファイルの作成: Cisco機器のIPアドレスや接続情報を記載したインベントリファイルを作成する。

inventory.ini
[cisco_devices]
cisco_router ansible_host=192.168.0.150 ansible_user=miwapinn ansible_ssh_pass=xxxx ansible_network_os=ios ansible_connection=network_cli

Playbookの作成: Cisco機器の設定バックアップを取得し、特定の設定を変更するためのPlaybookを作成する。

cisco_backup_and_configure.yml
---
- name: Backup and Configure Cisco IOS
 hosts: cisco_devices
 gather_facts: no

 tasks:
 - name: Backup Cisco Config
 ios_config:
 backup: yes
 register: backup_cisco_config

 - name: Print the backup file location
 debug:
 msg: "Thebackupfileislocatedat{{backup_cisco_config.backup_path}}"

 - name: Configure Cisco device
 ios_config:
 lines:
 - no ip http server
 - no ip http secure-server
 save_when: changed

このPlaybookは、最初にCisco機器の現在の設定をバックアップし、次にHTTPサーバーとHTTPSサーバーを無効にする設定を適用するシナリオ。変更があった場合には設定を保存する。

Playbookの実行

Playbookを実行
ansible-playbook -i inventory.ini cisco_backup_and_configure.yml

このコマンドは、inventory.iniに記載されたCisco機器に対してcisco_backup_and_configure.yml Playbookを実行する。

Ansibleノードディレクトリ構成の例

ガイドラインによると、一般的に以下のような構成で作成することで拡張性を保つ

ディレクトリ構成例
ansible-project/
├── inventory/
│ ├── production.ini
│ └── staging.ini
├── group_vars/
│ ├── group1.yml
│ └── group2.yml
├── host_vars/
│ ├── hostname1.yml
│ └── hostname2.yml
├── roles/
│ ├── common/
│ │ ├── tasks/
│ │ ├── handlers/
│ │ ├── templates/
│ │ ├── files/
│ │ ├── vars/
│ │ └── defaults/
│ ├── role1/
│ └── role2/
├── playbooks/
│ ├── setup.yml
│ └── deploy.yml
└── ansible.cfg
  • inventory/: 環境ごとのインベントリファイル、例えばproduction.inistaging.iniなど、異なる環境でのデプロイを区別するために使用

  • group_vars/: グループごとの変数を定義するファイル

  • host_vars/: ホストごとの変数を定義するファイル

  • roles/: 再利用可能な単位である役割。各ロールは特定のタスクを実行

    • tasks/: ロールによって実行されるタスク
    • handlers/: タスクの実行によってトリガーされるハンドラー(例: サービスの再起動など)
    • templates/: Jinja2テンプレートファイルを保持、設定ファイルなどを動的に生成する。
    • files/: タスクで使用される静的ファイル
    • vars/: ロール内で使用される変数を定義
    • defaults/: ロールのデフォルト変数を定義
  • playbooks/: 実行ファイル

  • ansible.cfg: Ansibleの設定ファイルで、デフォルトの設定を上書きし、固有の設定を定義する

2

Go to list of users who liked

1
0

Go to list of comments

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2

Go to list of users who liked

1