Skip to content

gitdsuzuki/ansible-copilot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cisco IOSXE VLAN展開 Ansible Playbook

このリポジトリには、Cisco IOSXEスイッチにVLANを安全かつ冪等的に展開するためのAnsible Playbookが含まれています。

📋 概要

  • 対象機器: Cisco IOS-XE スイッチ(2台: sw-access-01, sw-access-02)
  • 目的: 複数のVLANを一括で追加・管理
  • 主な機能:
    • 設定の自動バックアップ
    • 冪等性の保証(複数回実行しても安全)
    • 詳細な検証とログ出力
    • エラーハンドリングとロールバック準備
    • Check modeによるドライラン対応

🏗️ ディレクトリ構造

ansible-copilot/
├── inventories/
│   └── production/
│       ├── hosts.yml                    # インベントリファイル
│       └── group_vars/
│           ├── cisco_iosxe.yml         # VLAN設定とグループ変数
│           └── vault.yml               # 認証情報(暗号化推奨)
├── playbooks/
│   └── deploy_vlans.yml                # メインPlaybook
├── backups/                            # 設定バックアップ保存先(自動生成)
└── logs/                               # ログファイル保存先(自動生成)

⚙️ 事前準備

1. 必要なAnsibleコレクションのインストール

ansible-galaxy collection install cisco.ios

2. 認証情報の設定

inventories/production/group_vars/vault.ymlを編集し、実際の認証情報を設定してください:

ansible_user: "your_username"
ansible_password: "your_password"
ansible_become_password: "your_enable_password"

3. 認証情報の暗号化(本番環境では必須)

ansible-vault encrypt inventories/production/group_vars/vault.yml

4. VLAN設定のカスタマイズ

inventories/production/group_vars/cisco_iosxe.ymlで追加するVLANを設定:

vlans:
  - vlan_id: 100
    name: "production"
    state: "active"
  - vlan_id: 200
    name: "development"
    state: "active"
  - vlan_id: 300
    name: "management"
    state: "active"

5. ホスト情報の設定

inventories/production/hosts.ymlでスイッチのIPアドレスを設定:

sw-access-01:
  ansible_host: 192.168.1.101  # 実際のIPアドレスに変更
sw-access-02:
  ansible_host: 192.168.1.102  # 実際のIPアドレスに変更

🚀 実行方法

ドライラン(Check Mode)- 推奨

変更内容を事前確認するには、--checkフラグを使用します:

ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --check --ask-vault-pass

差分表示付きドライラン

ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --check --diff --ask-vault-pass

本番実行

ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --ask-vault-pass

特定のタグのみ実行

# バックアップのみ
ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --tags backup --ask-vault-pass

# 設定適用のみ(バックアップをスキップ)
ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --tags configure --ask-vault-pass

# 検証のみ
ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --tags verify --ask-vault-pass

段階的展開(1台ずつ実行)

ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --limit sw-access-01 --ask-vault-pass
ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --limit sw-access-02 --ask-vault-pass

Vaultパスワードファイルを使用

# パスワードファイルを作成(権限に注意)
echo 'your_vault_password' > .vault_pass
chmod 600 .vault_pass

# ファイルを指定して実行
ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --vault-password-file .vault_pass

📊 タグ一覧

タグ 説明
setup 事前チェックのみ実行
backup 設定バックアップのみ実行
facts デバイス情報収集のみ
configure VLAN設定適用のみ
save 設定保存のみ
verify 検証とログ出力のみ
report 最終レポート出力のみ

📝 出力ファイル

バックアップファイル

  • 場所: ./backups/
  • 形式: <ホスト名>_<タイムスタンプ>.cfg
  • 例: sw-access-01_20251214T120530.cfg

ログファイル

  • 場所: ./logs/
  • 検証ログ: <ホスト名>_vlan_verify_<タイムスタンプ>.log
  • エラーログ: <ホスト名>_error_<タイムスタンプ>.log

✅ 冪等性の確認

このPlaybookは冪等性が保証されています。同じ設定で複数回実行しても:

  1. 初回実行: VLANが作成され、changedステータスが返される
  2. 2回目以降: VLANが既に存在する場合、変更なし(okステータス)

確認方法:

# 1回目
ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --ask-vault-pass

# 2回目(変更が無いことを確認)
ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --ask-vault-pass

🔧 トラブルシューティング

接続エラー

# 接続テスト
ansible cisco_iosxe -i inventories/production -m ping --ask-vault-pass

# タイムアウトを延長
ansible-playbook -i inventories/production playbooks/deploy_vlans.yml --ask-vault-pass -e "ansible_command_timeout=60"

認証エラー

# vault.ymlの内容を確認(復号化)
ansible-vault view inventories/production/group_vars/vault.yml

# vault.ymlを編集
ansible-vault edit inventories/production/group_vars/vault.yml

Syntax エラーチェック

ansible-playbook playbooks/deploy_vlans.yml --syntax-check

Lint チェック

ansible-lint playbooks/deploy_vlans.yml

🔒 セキュリティのベストプラクティス

  1. 認証情報の保護

    • vault.ymlは必ず暗号化する
    • .vault_passファイルは.gitignoreに追加
    • パスワードファイルの権限は600に設定
  2. 変更管理

    • 本番環境では必ず--checkで事前確認
    • メンテナンス時間内に実行
    • バックアップの確認
  3. アクセス制御

    • 最小権限の原則に従う
    • enable パスワードを別途管理

📚 参考情報

🤝 サポート

問題が発生した場合は、以下を含めて報告してください:

  1. Ansibleバージョン (ansible --version)
  2. 実行したコマンド
  3. エラーメッセージ
  4. ログファイルの内容

📄 ライセンス

このPlaybookはプロジェクト標準に従って作成されています。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors