ときどきAnsible日記

主にITインフラ基盤の自動化に関する事を書いているブログです

そもそもAnsibleって何?

お疲れ様です。伊藤です。

かなり今更な内容ですが、この辺を書くのを忘れてました。先日も書きましたがそもそも弊社はソフトウェア開発の会社なのでインフラ的な話はシステム開発メンバーにはほとんど通じません。しかしながら世の中はDevOps(簡単にいうと開発者がインフラとかもやる世の中...厳密には違うけど)の方向に進んでいますので、インフラのことも覚えてもらいたい!というわけでAnsibleより先にインフラエンジニアって何やってんの?というところを踏まえてAnsibleの説明をさせていただきたいと思います。

  • インフラエンジニアって?

サーバエンジニア、ネットワークエンジニアなんて個別に呼ばれたりもしますが、基本的にはサーバ、ネットワーク、ストレージ、辺りの物理的なサーバ関連装置及び、最近ではAWSなどのクラウドサービス上の仮想マシンの設計・構築・保守をする人たちですね。と、言ってもなかなかピンと来ないかもしれません。所謂システム開発、というのは何かしらのシステムを作る作業ですが、そのシステムが乗るのがサーバです。つまりはサーバが出来ていないとシステム開発がすすめられません。「そんなのサーバ買ってきて使えばいいじゃない」なんて思う方もいらっしゃるかと思います。しかし、サーバ一つとっても全体構成や個別サーバの役割に合わせた個々のサーバの選定・OS・詳細な設定など多岐にわたってやらなければならないことがあります。さらに、開発が進んでいくと「このユーザを追加したい」「ディレクトリが足りない」「権限を追加して」「ミドルが入ってない」などなどなど様々な開発者さんたちの要望に応えないといけないわけです。そんな要望に応えたり環境(サーバ・ネットワーク・ストレージなど)の構築を行ったりするのがインフラエンジニアです。

  • Ansibleって何ができるの?

前述のとおり、インフラエンジニアは環境に対して様々な設定を行っていく必要があります。特に大規模システムとなるとサーバ台数も数百台単位、超巨大だと数千台に及ぶ場合もあります。そんなサーバ群に対して、今までの構築ですと人が一台ごとにアクセスして手動で設定を変更していました。
f:id:pj_doaa:20170922100909p:plain
場合によっては数台単位にで同時に設定変更したり(teratermの複数ログインとかしてブロードキャストで。。)していましたが、結局は手動で行うので操作ミスやサーバの間違いなどが発生していました。で、Ansibleです。これは事前にプログラムした設定内容を自動でサーバに反映させるソフトウェアです。最初のプログラムは必要ですが、これを正しく作れば後は何台サーバがあっても基本的には同じに設定することができます。
f:id:pj_doaa:20170922100926p:plain
極々簡単に説明するとAnsibleでできるのはこれだけです。

  • Ansibleの何がいいの?

実はAnsibleのようなことが出来るソフトウェアはほかにもあります。代表的なものとしてChef、Puppet辺りが有名です。ではそれらとAnsibleの違いは何か?というところですが、Ansibleサイド(現状はRedhat)が謡っているのはシンプル、パワフル、エージェントレス、という3つです。

シンプル
前述の事前に作っておくプログラムのことをAnsibleではPlaybookと呼んでいます。で、このPlaybookはYAMLという言語で書かれています。このYAMLという言語は非常に単純で分かりやすい記述方法なので、この部分をシンプル、と言っています。
パワフル
Ansibleでは設定を変更する際にModuleというものを内部で使います。そしてこのModuleは以前も書いたように誰でも作成できます。頑張れば公式に採用されます。で、これらは現在1000以上あります。Moduleによってはネットワーク機器の設定などもできるものがあります。Redhatとしてはいずれは全ての装置をAnsibleで管理できるようにしたいようです。この部分をパワフル、と言っています。
エージェントレス
これはそのままですが、基本的にChefやPuppetというのは管理する側のサーバにエージェントを入れる必要があります。それが100台だろうと1000台だろうとそれらすべてにChef、Puppetをインストールする必要があるということです。これは非常に厄介で、そもそもインフラエンジニア(に限らないと思いますが)はシステムに関連しないソフトをサーバに入れたくありません。そういった意味でAnsibleがエージェントレスである意味は非常に大きいと思います。


というのがAnsibleの説明になります。Ansibleについてははだいぶ世の中に情報が広まってきているので興味のある方は調べてみてください。

以上です。お疲れ様でした。