Ansibleを始めたきかっけ
以前から構成管理ツールの類は気になっていたのですが、サーバーだけでなくネットワーク機器にも対応したことと、オライリーから「初めてのAnsible」が出たことをきっかけにしてAnsibleの勉強を始めました。
私のようなAnsibleの勉強を始めたばかりの方に参考になればと思い、私が始めの1カ月での行ったインプット、アウトプットをまとめたいと思います。ネットワーク機器を操作したいという目的があるため少し偏りがあるかもしれません。ターゲットバージョンは2.1です。
■ 1週目
インプット
- 書籍「初めてのAnsible」
- 概要を知るための最初の一冊、という感じでしょうか。
- エージェントレスであることなどの特徴、Playbookの形式、ロール、Ansible Galaxyの存在など、広く浅く知れたと思います。
- EC2やDockerの章は熟読しませんでした。また、当時はモジュールを作成しようとは思っていなかったのでカスタムモジュールの章もあまり読みませんでした。
アウトプット
- 特にありません。
■ 2週目
インプット
-
書籍「Ansible完全読本」
-
電子書籍しかありませんがAnsible 2に対応した日本語書籍です。Playbookの例が前述の「始めてAnsible」より簡単なので、試してみようかなという気になりました。
-
具体的には、Linuxにnginxをインストールしてサービスの起動、chkconfigをonにするという単純なPlaybookを初めてかきました。冪等性とはどういうものか少し実感できました。
-
もともとCisco IOSの機器を操作したいと思っていたので、ios_configやios_commandのモジュールの説明のページを見るようになりました。ですが、正直細かい仕様がわからず、ネット上にまだ使用例も少なかったので「もしかしたらモジュールのコードを読まないといけないのでは」を感じ始めました。
-
ネットワーク自動化に関する動画もあり、ios_configなどのモジュールの使用例、実行例を見られたという点で貴重でした。
アウトプット
- Qiita「Ansibleで複数のCatalystのパスワードを一括変更する」
- 分からないなりに試してみました。
■ 3週目
インプット
- 書籍「Extending Ansible」
- 「細かい仕様をするにはコードを読む、コードを読みやすくなるには、モジュール開発向けのドキュメントを読む」という発想でパラパラと読みました。
- 後になって、この本読む前にカスタムモジュールに関する公式ドキュメント(後述)を漁っておくべきだったかなと思いました。
アウトプット
-
タスクに与える認証情報をなるべくスマートにする方法を動画をきっかけに知ったので試しました。
-
Qiita「[AnsibleのPlaybook実行時に牛とゆかいな仲間たちを表示させる] (http://qiita.com/akira6592/items/f0aa04b8d71311a15175)」
-
「Ansible完全読本」に載っていたネタを試しました
-
「Extending Ansible」に載っていたBashで作成するとても簡単なカスタムモジュールを試しました
-
jinja2のフィルタを初めて使いました
■ 4週目
インプット
- 公式ドキュメント「Modules --- Ansible Documentation」
- 公式ドキュメント「Developing Modules --- Ansible Documentation」
- コード「ios_config.py」「ios.py」「netcfg.py」
- 的を絞って具体的にコードを読み始めました。機器から show run をとってくる様子、Playbookで指定されたコマンドと同比較して、最終的なコマンドをどう生成するかを追っています。(現在進行形)
アウトプット
- Qiita「Ansibleのios_configモジュールの parents オプションの使い道を考える」
- linesオプションとparantsオプションの使い分けで疑問があったので試しました
- Qiita「AnsibleでCisco IOSのコンフィグを標準機能だけで収集する」
- ios_templateモジュールを始めて使いました
- Qiita「AnsibleでCisco IOSに対して冪等性のある「no shutdown」をする」
- このあたりまじめに考えると少し難しいのかなと思いました
これから
Ansible全般としては、ロール構成にしてみたり、Ansible Galaxyのものを試してみたりしたいと思います。
ネットワーク方面では、ios_configのmatch、replaceオプションの詳細は挙動を追っていきたいと思います。