そもそもAnsibleって何?
お疲れ様です。伊藤です。
かなり今更な内容ですが、この辺を書くのを忘れてました。先日も書きましたがそもそも弊社はソフトウェア開発の会社なのでインフラ的な話はシステム開発メンバーにはほとんど通じません。しかしながら世の中はDevOps(簡単にいうと開発者がインフラとかもやる世の中...厳密には違うけど)の方向に進んでいますので、インフラのことも覚えてもらいたい!というわけでAnsibleより先にインフラエンジニアって何やってんの?というところを踏まえてAnsibleの説明をさせていただきたいと思います。
- インフラエンジニアって?
サーバエンジニア、ネットワークエンジニアなんて個別に呼ばれたりもしますが、基本的にはサーバ、ネットワーク、ストレージ、辺りの物理的なサーバ関連装置及び、最近ではAWSなどのクラウドサービス上の仮想マシンの設計・構築・保守をする人たちですね。と、言ってもなかなかピンと来ないかもしれません。所謂システム開発、というのは何かしらのシステムを作る作業ですが、そのシステムが乗るのがサーバです。つまりはサーバが出来ていないとシステム開発がすすめられません。「そんなのサーバ買ってきて使えばいいじゃない」なんて思う方もいらっしゃるかと思います。しかし、サーバ一つとっても全体構成や個別サーバの役割に合わせた個々のサーバの選定・OS・詳細な設定など多岐にわたってやらなければならないことがあります。さらに、開発が進んでいくと「このユーザを追加したい」「ディレクトリが足りない」「権限を追加して」「ミドルが入ってない」などなどなど様々な開発者さんたちの要望に応えないといけないわけです。そんな要望に応えたり環境(サーバ・ネットワーク・ストレージなど)の構築を行ったりするのがインフラエンジニアです。
- Ansibleって何ができるの?
前述のとおり、インフラエンジニアは環境に対して様々な設定を行っていく必要があります。特に大規模システムとなるとサーバ台数も数百台単位、超巨大だと数千台に及ぶ場合もあります。そんなサーバ群に対して、今までの構築ですと人が一台ごとにアクセスして手動で設定を変更していました。
場合によっては数台単位にで同時に設定変更したり(teratermの複数ログインとかしてブロードキャストで。。)していましたが、結局は手動で行うので操作ミスやサーバの間違いなどが発生していました。で、Ansibleです。これは事前にプログラムした設定内容を自動でサーバに反映させるソフトウェアです。最初のプログラムは必要ですが、これを正しく作れば後は何台サーバがあっても基本的には同じに設定することができます。
極々簡単に説明すると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についてははだいぶ世の中に情報が広まってきているので興味のある方は調べてみてください。
以上です。お疲れ様でした。
インターミッション~じぶんのはなし~
お疲れ様です。伊藤です。
久しぶりにブレイク的な話題を書いてみます。と言ってもかなりこのブログのメインの話題に近いのですが。。。ちょっと私の自己紹介も兼ねて昔話をしますので興味のない方はすぐに右上の×ボタンをクリック!
私はアビックシステムという会社に所属しております。この会社は元々システム開発の会社で、私自身もソフトウェアの開発に携わっておりました。
とある日にお世話になっている会社さんに仕事を紹介して頂き、システムのサーバ構築の仕事に関わることになります。今までプログラムの設計や製造していた人間がいきなりUNIXやLinuxの設定をやってみろ!と言われてもまぁこれがなんも出来ないんです。とにかく何も知らない。現場の打ち合わせに初めて出たときにはその場にいたすげーえらい部長さんから「誰だ!こんな素人連れてきたのは!」と怒鳴られる始末。が、よく考えるとこの業界に入った時からずっとそうだったことを思い出します。
今の時代は全く違いますが、私が入社したての頃は現場に出ても誰も何も教えてくれなかったんです。もう「これ作っといて、よろしく」状態。担当者に仕様を聞きに行くと「あそこにいる何とかさんに聞いてみて」と言われ、何とかさんのところに行くと「それ(教えるの)は私の仕事じゃありません」とか言われて門前払い、みたいな。いやあ、自分でも良く病まなかったなと思いますが、当時はそーゆーもんだと思い込んでましたねぇ。まあ今考えると昔だとしてもひどい現場です。一緒に行ってた先輩も自分の仕事しかしてなくて全然相手にしてもらえないし。私はと言えばその頃はCSVファイルって何?みたいな状態。まあひどいですね。まま、そんな現場も根性だけで何とか乗り切りやってきたわけです。
で、話はインフラ事業を始めたころに戻ります。私ともう一人一緒にインフラの現場に行った後輩W君がいたんですが、彼が非常に優秀だったためその後もインフラの仕事はじわじわと増え始めて何とか今に至っております。で、私はと言えば新規の現場に行ってはインフラの仕事をしてなんとか切り開くという作業をしていました。で、色々な現場を回ってきて思ったことなんですが、ほとんどのインフラ構築では同じような問題に直面しているんですね。大きな課題としては設計書と実機が異なるという問題が挙げられると思います(一概に言い切れないけど)
例えば
- テスト時に実機だけ直して設計書を直してない。
- 設計書を更新したが実機がついて行ってない。
- そもそも開発環境については設計書すらない。
- テスト仕様書と設計書が異なっていてテストで間違った方に直した。
- このサーバは直したけどあのサーバは直してない。
とかとか
で、これらの問題を解決できる方法が見つかったらいいなあ。。。と思っているところにDockerとAnsibleの調査に関する仕事を頂きました。その時はもうそれが何か全く分かっていなかったのですが、調べれば調べるほどこの問題を解決できるのはAnsibleしかない!と思えるようになってきて、「これを使ってインフラ自動化のソリューションを作って売る!」として始めたのが今のプロジェクトです。現時点では全く金になっていませんが、こーゆーことをさせてくれる会社に感謝です。
で、弊社のサービスとして提供するのはAnsibleの初期環境構築とPlaybookの作成支援です。Playbookの作成支援ではExcelの設計書からマクロでPlaybookを作成する仕組みを提供します!(これさえあればPlaybookの知識がなくてもサーバの設定変更ができるようになる!予定)興味のある方はメールアドレス(pj_doaa@abcs.co.jp)か株式会社アビックシステム(http://www.abcs.co.jp/)のHPまでお問い合わせください!まだ出来てないけど!
と、いうわけでお疲れ様でした。