■ はじめに
こんにちは、技術開発部 自動化グループの横地(@akira6592)です。
本日 2019/10/18 に Ansible 実践ガイド 第3版が発売されました。Ansible 2.8 に対応し(第2版は2.4)、新たにネットワーク自動化や Azure の連携に関する内容が追加されました。今回、ご縁がありまして「5-3 ネットワーク機器の構成管理」を執筆させていただきました。
私が初学者で雰囲気でサンプルをコピペしていた頃に知りたかったことや、Ansibleユーザー会や、JANOG などのコミュニティ活動を通じてよく聞いた疑問が解消できるように書きました。ただサンプルを提示するだけでなく、その前にネットワークモジュールの特徴や、使いこなすための前提知識の説明もおさえています。
この記事では、おすすめポイントをご紹介します。
■ おすすめポイント
ネットワークモジュールの分類
ネットワークモジュールは、Ansible 2.8 現在 1,000以上あります。初見では、やりたいことに対してどのモジュールを利用すればよいかわからないかも知れません。書籍では、モジュール名をもとに、どの機器に対応していて、何をするものなのか、見分ける方法を紹介しています。
よく利用されるネットワークモジュール
50以上のプラットフォーム(ネットワークOS)に対応しているAnsibleですが、*_command
、*_config
、*_facts
、といった名前のモジュールがあるプラットフォームが多く、プラットフォーム共通で似たようなオプションを持っています。そのため、1つのプラットフォームのモジュールのオプションを知っておくと応用が効くようになります。
書籍では、ios_command、ios_config、ios_facts の使用例や代表的なオプションの説明をしています。
*_command
モジュールの戻り値の構造
よく疑問があがる一つです。例えば、ios_command などの、*_commnad モジュールで show コマンドを実行した結果をファイルに保存したい場合、register
変数に入れた結果がどのような構造になっているのかを知っておく必要があります。
書籍では、stdout
、stdout_lines
などの戻り値の構造について説明しています。(Ansible公式ブログの記事でも説明されています)
*_config
や *_facts
モジュールで気になるアレ
- 「
parents
オプションの使い所は?」 - 「意図せず毎回
changed
になってしまう・・・」 - 「
*_facts
とgather_facts
の関係は?」(これは次リリースのAnsible 2.9で変更されます)
といった、最初の頃に感じやすい疑問(私はそうでした)について解説しています。
コネクションプラグインの使い分け
network_cli
や netconf
など、ネットワークモジュール向けの複数のコネクションプラグインが用意されていて、使い分けが重要です。公式ドキュメントには、プラットフォームとコネクションプラグインの対応表が掲載されています。書籍でも、使い分けについて説明しています。
ネットワークモジュールで利用する変数について
ネットワークモジュールを利用するサンプル Playbook を見ていて、ansible_network_os
などの変数を見かけたことはないでしょうか。これはネットワークモジュール固有の変数です。様々な変数があって、コネクションプラグインによって定義すべき変数も異なります。
書籍では、変数の意味や組み合わせついて説明しています。
接続確認方法とトラブルシュート
Playbook を作らずとも ansible
コマンドで認証を含めた接続確認ができます。その方法と、表示されうるエラーメッセージと対応方法について説明しています。
情報取得 Playbook
show コマンド実行結果のログ保存を自動化する Playbook を掲載し、解説しています。
ネットワークモジュールからAnsibleを初めた場合「コマンドは実行できるようになったけど、他のモジュールやとの組み合わせ方が分からない」という状態になりがちです(私がそうでした)が、ある程度まとまったサンプル Playbook を見ることで活用イメージが具体化すると思います。
設定変更 Playbook
設定変更を自動化する Playbook 掲載し、解説しています。
コンフィグを直接指定するタイプのモジュールも、コンフィグを意識しないで利用できるモジュールも両タイプとも利用しています。コンフィグをテンプレートから生成するタスクも仕込んでいます。
■ おわりに
「5-3 ネットワーク機器の構成管理」に書かせていただいた内容のポイントをご紹介いたしました。
- ネットワークエンジニアでAnsible未経験の方にとっては「Ansibleでこんなことができるのか」
- Ansibleを触り始めた方にとっては「そういうことだったのか」
- Ansible をすでに使われている他のエンジニアにとっては「ネットワークモジュールってこんなことができるんだ」
と思っていただいただけるとと思います。
本書の執筆は、弊社の「プロフェッショナル職制度」の活動として取り組ませていただきました。時間をくれた所属グループや、制度整備などに協力いただいた方々に感謝します。
それでは、新たにネットワーク自動化やAzureの連携に関する内容が追加された「Ansible 実践ガイド 第3版」をよろしくおねがいします!