blog

あるプログラマーのPuppetとの旅:それは本当にそれほど良いものではない

PuppetはオープンソースのIT自動化ツールであり、システム管理者同士のコミュニケーションと共有を促進し、重複作業を回避します。Devopsのコンセプトがますます熱くなるにつれ、Puppetの評価も...

Jun 29, 2015 · 3 min. read
シェア

プログラマーとして数年間、会社のサーバーを管理する必要があったので、Opsの技術をいろいろと調べ、2010年にはPuppetやChefなど、当時は応用が効かないと思っていたツールを調べました。 しかし、Devopsの概念が広まるにつれ、Puppetが有名になっていきました:

 puppetなし、devopsなし。

数ヶ月ごとにPuppetのドキュメントに目を通すのは、大きなタイミングを逃すことを恐れて怖くなりますが、毎回結論はその時と同じです。

サーバー・ソフトウェアのインストールにおける最大の悩みは、次のようなものです:

様々な依存パッケージは厄介で複雑であり、それらをダウンロードしてインストールするのは非常に困難です。

この痛みに対処するため、さまざまなソフトウェアが開発されています:

  • Redhat/centos yum
  • apt-get for ubuntu/debian
  • Javaのmaven、pythonのpip、rubyのgemなど!

これらのツールはうまく機能し、基本的に問題は解決しました。

つまり、Redhat上でPuppetを実行するとup2dateでソフトウェアを更新し、Ubuntu上でPuppetを実行するとapt-getでソフトウェアをダウンロードします。

パペットとは何ですか?

私の考えでは、Puppetには主に2つの機能があります:

  1. ソフトウェアのインストール・スクリプトを書くときに使う方言;
  2. サーバクラスタ操作ツールは、1台のマシン上でN台のサーバに実行/ダウンロード/インストールを命令することができます。

第一に、Puppetの記述構文は非常に複雑で、テキストを記述するためのMarkdownと比べると、Puppetの構文は非常にトリッキーで、習得に多くの時間がかかり、記憶するのが困難です。

あるソフトウェアをインストールするために、シェルコマンドで書かれたインストールスクリプトは50行しかないかもしれません。

ソフトウェアインストーラによってソフトウェアインストールの最大の問題は解決されているので、puppetにできることはほとんどありません。

ありがたいことに、Example(42)のみなさんが、すでに書かれたpuppetのexample42/puppet-modules束を提供してくれました。

ポイント2、一般人にとっては、トロイの木馬のように複数のサーバーを一括操作できるのはとてもクールです! でも、SAにとっては日常業務。

最も一般的な方法は、ログインマシンとして使用するサーバーを見つけ、 ssh keygen を使用して他のすべてのサーバーに接続することです。 sshd のインストーラには ssh-copy-id スクリプトが付属しており、それを実行してパスワードを一度入力すれば接続できます。

ログインマシンにウェブサーバーをインストールし、ウェブサーバーのhttpドキュメントの下に各種ソフトウェア/パッケージ/インストールディレクトリを置き、使いたいときにwget -O。

複数のサーバーにソフトウェアをデプロイするには、for ip in ip_lists :ssh ip -e "" のようなシェルを書けばOKです。

pythonで一括インストールスクリプトを書くのであれば、psshやFabricなどのパッケージを使えばいいのですが、これらはすべて、サーバ間のssh keygenログインを事前に解除する必要があります。

ssh keygenでサーバーに侵入するのはセキュリティ上のリスクがあります。しかし、それを突き破らずに直接ログインすれば、システム管理者のコンピュータは火薬庫になるだけなので、リスクはありません。

はんけつをくだす

Puppetは、ソフトウェアのインストールにおける最大の難点から逃れ、ほとんど何もできず、急な学習曲線で、鶏のひっかき傷にすらなりません。

Read next

Xcodeとインストゥルメント・デバッグでiOSのメモリ・リークを解決する

iOS 5.0以降、ARCメカニズムが追加されましたが、相互参照関係の複雑さにより、メモリリークはまだ存在する可能性があります。そのため、原理を理解することが重要です。ここでは、ARCを使わないプログラムでメモリリークを見つけるための使い方と、設定の使い方を説明します。\n\n

Jun 28, 2015 · 4 min read