1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

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: "The backup file is located at {{ 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の設定ファイルで、デフォルトの設定を上書きし、固有の設定を定義する

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?