ネットワーク素人がAnsibleもくもく会 NW編に参加してみた。

はじめに

CCNAも持っていなければ、ネットワークアプライアンスも碌に触ったことがない、ネットワーク素人エンジニアが、Ansibleもくもく会に参加し、ネットワーク編をもくもくしてきました。

学んだこと

AnsibleでLinuxを自動構築した経験はあるので、そことの違いを中心に、個人的な発見を記載します。

ネットワーク周り

Connection Pluginを意識する必要がある

管理対象がLinuxのみであれば、基本sshだけ気にしていれば良いので、あまりこの辺りを意識していませんでした。下記はワークショップ資料からの引用です。

  • ansible_network_os - この次に定義されている network_cli コネクションタイプが利用される場合にこの定義は必須となります。
  • ansible_connection - この変数は connection plugin をこのグループに設定します。これは netconf, httpapi network_cli など対象のネットワークプラットフォームがサポートしている形式を設定します。

gather_factsが使えない

gather_factsLinux専用で、ネットワーク機器には使用できません。 IOSの場合は、ios_factsモジュールを使用する必要があります。

ちなみに、gather_facts: trueを指定してPlaybookを実行すると、 Gathering Factsタスクの結果に下記が出力されました。

[WARNING]: Ignoring timeout(10) for ios_facts

ネットワーク以外

ansible-playbookの出力形式をYAMLに変更できる

例えば、setupモジュールの実行結果はjson形式で返りますが、私はjsonに 慣れていないので、正直見づらかったりします。

例えば、ansible.cfgに以下のように設定すると、結果出力に使用するデフォルトの callback pluginをYAMLに指定できるので、YAMLの方が慣れているという方は おすすめの設定だと思います。

[defaults]
stdout_callback = yaml

おわりに

Ansible、AWXは触ったことがあったので、ワークショップ全体としては、 すらすら進められたと思います。

ただ、IOSそのものの知識がないため、いざ自分でPlaybookを書くとなると、難儀しそうです。 DevNetなどを使って、色々模索していきたいと思います。

Ansible Towerについても、概要はつかめたものの、実際の運用を想定した設計となると なかなか奥が深そうという印象を受けました。