てくなべ (tekunabe)

ansible / network automation / 学習メモ

JANOG41.5 で「もっと気軽に始めるAnsible」という発表をしてきました

■ はじめに

2018/04/20 に開催された JANOG41.5 Interim Meeting で「もっと気軽に始めるAnsible」という発表をさせていただきました。

janog.connpass.com

Ansible はネットワーク機器にも対応しています。YAML形式の定義ファイル(Playbook)を書かずに、もっと気軽に始められる Ad-Hoc な Ansible の使い方をご紹介します。

今回は、Playbook もインベントリファイルも、設定ファイルも作らず、意地でもコマンドで済ませるというポリシーです。

この記事では、発表資料の共有とサンプルコマンドの再掲、感想をまとめます。


■ 資料

発表に使用した資料はこちらです。

speakerdeck.com

■ 動画

Jストリーム様のご協力により発表の動画も公開されました。私の発表は 1:23:20 頃からです。

api01-platform.stream.co.jp

他の方の発表の分も JANOG41.5 connpass イベントページ に掲載されています。

コマンドサンプル

資料中に掲載されているサンプルコマンドをコピペしやすいように、以下に再掲します。

環境準備 (資料P22)

# Ansible のインストール
pip install ansible
# Junosモジュールで必要なpythonモジュールのインストール
pip install ncclient jxmlease

利用例1: コンフィグの取得

  • 準備 (資料P12)
# 実行結果を json にする
export ANSIBLE_STDOUT_CALLBACK=json
# ansible コマンドでも前述の設定を有効にする
export ANSIBLE_LOAD_CALLBACK_PLUGINS=True
# (オプション)接続対象ホストキーがAnsibleホストに未登録の場合は、ホストキーチェックを無効化
export ANSIBLE_HOST_KEY_CHECKING=False
  • 実行 (資料P13)
ansible -i 172.16.0.1, all \
   -m junos_command \
   -a "commands='show configuration'" \
   -c netconf -u root -k \
   -e ansible_network_os=junos \
   | jq -r ".plays[0].tasks[0].hosts[].stdout[0]" > config.txt

利用例2: 参照NTPサーバーの追加

  • 準備
# (オプション)接続対象ホストキーがAnsibleホストに未登録の場合は、ホストキーチェックを無効化
export ANSIBLE_HOST_KEY_CHECKING=False
  • 実行 (資料P16)
ansible -i 172.16.0.1,172.16.0.2 all \
   -m junos_config \
   -a "lines='set system ntp server 172.16.0.123'" \
   -c netconf -u user1 -k \
   -e ansible_network_os=junos

参考資料

資料中に掲載されているリンクをジャンプしやすいように、以下に再掲します。

  • 公式ドキュメント
    • ansible コマンドでネットワークモジュール を使う (Run Your First Network Ansible Command)

Run Your First Command and Playbook — Ansible Documentation


■ togetter まとめ

私の発表時のツイートは P13 の 18:23 あたりからです。

togetter.com


■ 感想など

発表の反応を拝見すると「ワンライナー的な使い方もアリだな」ですとか「Cisco IOSで試してみた」という方々がいらっしゃって嬉しかったです。

ネットワークエンジニアが Ansible を触ってみる入り口の一つとして、今回の発表が参考になったら幸いです。

さて、JANOG は前回のJANOG 41が初参加でした。ネットワーク運用自動化BoF内で発表もさせ頂いたので、2回連続で機会をいただきました。ありがとうございました。

次回 JANOG 42 は、2018/07/11-13 に三重で開催されます。次回も参加する予定です。

www.janog.gr.jp