muninに辛くなってfabricでなんやかんやするアプリケーションを作ったりしていたがグラフ描画部分で辛くなり、色々と調べた結果InfluxDBとGrafanaの組み合わせが良さそうだったので、それでいい感じにリソース可視化してみたという内容。 概要 監視サーバーと監視されるサーバー群が存在していて、監視サーバーにInfluxDB、Grafana、Fabricをインストールする。 監視サーバーはFabricで各サーバーにssh接続しメトリックを取得する。取得したメトリックはInfluxDBに保存され、Grafanaで可視化される。という感じ。 Versions OSはCentOSでやったけどInfluxDBとGrafanaのインストールと起動が違うだけだと思われる。 InfluxDB = 0.8.8(stable) Grafana = 2.0.1 Fabric = 1.10.1 infl
2013-09-01 Chef-soloとAnsibleとFabricを試してみたので感想をメモ。どれもそんなに深くは使い込んではいない。 このメモは自分の脳内の考えを整理するためのもので、人が使うことについてどうこう言うつもりはないです。 Chef-solo 書いてみたcookbookはこちら。hnakamur/chef-cookbooks hnakamur/chef-repo クックブックは手順を書くのではなくて結果を書くというのがどうも本質的に違うと私は思ってしまう。料理のレシピだって手順を書くし。書結果がこうあるべきというのはserverspecが出来た今となってはそちらに任せて、クックブックは本来手順を書くべきものだと思う。 RubyのDSLだけど結局上から順に評価されるので、実は手続きを書いていることになっている。でもファイル単位でしか再利用できないので、一部だけ使いたいと思っ
fabricでサーバーセットアップすんの、使い込めば使い込むほど愚策だったな— 沖縄スライス (@feiz) 2013, 7月 22 @everes @isoparametric (chefとかが台頭してきたからこその感想ではあるけど)冪等に書くのたいへんだし、冪等に書けないとfabricの@rolesがうまく働かないですね。— 沖縄スライス (@feiz) 2013, 7月 22 このへんの話。 結論はツイートの通り、冪等性の確保が大変すぎるというところ。んでサーバーセットアップ系のスクリプトは冪等に書けないといろいろ困るわけです。 rolesと冪等性 普通はサーバー構成はスケールアウト前提で設計するので、同一の役割をこなすサーバーが複数置かれることになります。こういうのの管理にはいわゆるrole機能が便利です。 env.roledefs = { 'app': [ '192.168.0.
ゴクロの大平と申します。はじめまして。 4月からjoinさせていただいた、特に特記事項の無い平凡なプログラマです。さだまさしが好きです。 SmartNews開発者ブログをご覧になる方々は、サービスの裏側で動作するクローラーや多種多様な機械学習のロジックであったり、フロントエンドのUIの話であったり、サービス固有の話に興味が有る方が多いと存じますが、都合上(原稿の担当順番の都合上)、今回は一般的な話をさせていただきます。 ※先掲の話題については次回以降取り上げられますので、お楽しみに。 一般的な話題とはいえ、大企業とスタートアップでは取り巻く環境や解決すべき課題も異なっていますので、その辺もあわせてお伝え出来ればなと思います。 なお、今回のテーマは、サーバー/ミドルウェアの構成管理ツールとして最近有名になってきた「chef」と「fabric」です。 かなり長文のエントリーになってしまい
by @dekokun on 2013/05/21 23:46 Tagged as: Capistrano, Fabric. 最近、Fabric, Capistranoと立て続けに2種類のデプロイツールを使ってデプロイ環境を構築する機会がありましたので、その際に感じた両者の利点を書いてみたいと思います。 両者の簡単な解説 そもそもCapistrano, Fabricについて、「片方は知っているけど片方は知らないよ」という人がいるかと思いますので、簡単な説明をします。 両方とも何かを知らない人は…「自動デプロイ」とかそのあたりで検索してみるといいんじゃないですかね。 Capistranoとは Ruby製のFabricみたいなものです Fabricとは Python製のCapistranoみたいなものです Fabricは私の中ではデプロイツールという認識なのですが、最近Chefと比較されること
最近、Fabric関連のエントリが流行っているようなので、ネタかぶりしない範囲で小ネタをちょっと書いて見ます。 Fabricは、単純にタスクを実行するだけはなく、実行するタスクに引数を渡すことができます。 以下は引数の渡し方についてのPython製デプロイツール Fabricを初めて使う際に役立つTipsからの引用です。 タスクに引数を渡したい場合がありますよね。 解決策 $ fab hoge:fuga でhoge関数の第一引数に’fuga’を渡すことができます。 $ fab hello:name=Jeff とかね。 最初に提示したチュートリアル(Overview and Tutorial)に載っているから詳しくはそっち参考にしてね。この引数指定機能は非常に便利なのですが、時間が経つと各タスクにどういう引数があったのか忘れてしまい、都度ソースを確認してしまうことがしばしば…。 それでなんと
fabricのみに依存しています。cuisine, fabtoolsは実装の参考にしていますが、 依存はしていません。 使い方¶ fabfile.pyを以下のように書きます。 from fabric.api import env, task from envassert import file, process, package, user, group, port, cron, detect env.use_ssh_config = True @task def check(): env.platform_family = detect.detect() assert file.is_exists("/etc/hosts") assert file.is_file("/etc/hosts") assert file.is_dir("/tmp/") assert file.dir_exis
Windows7 (MinGW / MSYS) で Fabric の続きです。 Windows7 (MinGW / MSYS) に Python 2.7 + virtualenv + Fabric を入れたメモ Windows7 (MinGW / MSYS) に virtualenvwrapper を入れたメモ Fabricで接続情報を指定する方法いろいろ&FabricからPHPスクリプトを実行してみたメモ ファイルは作業ディレクトリに上げてからサーバ上でPHPスクリプトを実行すれば思いのままに…!とか考えてましたが、色々やるうちにまどろっこしく感じてしまい、結局Python/Fabricで何とかすることにしました。 同じことで迷わないためのメモです。環境は Windows7 / MSYS 1.0 / Python 2.7 / Fabric 1.6 です。 ローカルにカレントディレクトリ以
Posted by: Matt Mansour 7 years, 7 months ago (0 comments) After a hearing a great Gunicorn talk by Brian Riley of EdgeCast.com at the LADjango meetup I decided it was time to dive in to a modern server for Django. After getting around a few bumps I realized setting up Gunicorn with NGINX was easy. Even though I appreciate - and was blown away by - Graham Dumpleton's mod_wsgi for Apache, I feel it
# -*- coding: utf-8 -*- import cuisine from fabric.api import env env.use_ssh_config = True env.warn_only = True # IPアドレスは置き換えてください。 env.hosts = [ "192.0.2.1", "192.0.2.2", ] def task(): cuisine.file_exists("/etc/passwd") $ fab task [192.0.2.1] Executing task 'task' [192.0.2.1] run: test -e "/etc/passwd" && echo OK ; true [192.0.2.1] out: OK [192.0.2.2] Executing task 'task' [192.0.2.2] run: test
この記事では、Fabricの主要メソッドである run() と sudo() について解説します。 サンプルコードは https://github.com/shiumachi/fabric-sample にあります。 run() と sudo() の基本 読みやすくするため、以後は必要がない限り run() メソッドのみを取り上げます。run() で出来ることはほぼ全て sudo() でも出来ます。断りが無い限り、run() は sudo() と読み替えることができます。 from fabric.api import run でインポート可能 run([コマンド文字列]) で、任意のコマンド文字列を実行可能 sudo([コマンド文字列]) とすれば、任意のコマンド文字列を sudo できる エラーハンドリング run() で実行したコマンドが失敗した場合、fab コマンド自体がその場で中断
by @dekokun on 2013/04/07 19:30 Tagged as: Python, Fabric, デプロイツール. 2013/04/09 追記 意外と反響があるようなので、Tips追加しました。 2013/05/10 追記 並列実行について調べたのでついでに追記 「次のプロダクトはシンプルなデプロイツールだと噂のCinnamonでも使ってみるかー」と言っていたら、「Cinnamonは使ってるユーザ数が少なそうだし同様のことが行えるFabricのほうがいいんじゃないですかね。」というツッコミをいただき、今回はPerlのプロジェクトでもないためFabricを使用することにしました。 初めて触るFabric、やはり初学者にはいろいろとよくわからない部分があったため、はまって解決したことや便利なTipsなどをつらつらと列挙していきます。 なお、以下情報はPython2.7及びF
Fabric は、Python 製のデプロイ・システム管理ツールです。 最近、構築や運用を自動化するための様々なツールが出てきています。 構成管理ツールの Puppet や Chef が有名ですが、使うまでに覚えることが多いのが欠点です。 しかし、Fabric は非常にシンプルなツールで、今からすぐに使うことができます。 Fabric はデプロイ・システム管理ツールで、類似のツールとして Ruby 製の Capistrano があります。 Fabric の最大の特長は、シェルスクリプトを書き慣れた人がいきなり利用できるところです。 シェルスクリプトとしてまとめていたコマンドをそのまま run() メソッドや sudo() メソッドで囲むだけで、使うことができます。 シェルスクリプトを使っていていると、いくつもの問題に遭遇します。 名前空間の管理 変数の扱い 複雑なデータ構造がない(せいぜい
Ansible というサーバーの設定を管理するツールの説明。いわゆる構成管理 (CM: Configuration Management) にカテゴライズされるもので、Puppet や Chef の親戚みたいなものと考えてもらえればだいたいあってる。 概要 リード開発者は Michael DeHaan で、現職の AnsibleWorks の前は Redhat で Cobbler や Func に携わっていたり、Puppet labs でプロダクトマネージャーしたりしているという経歴の持ち主。 Ansible は Python で書かれている。同じジャンルで Python 製というと Salt が有名。Chef の場合、レシピを書くためには Ruby の知識が必要となってくるけど、Ansible はどんな言語でもモジュールが書けるようになっているので、運用にあたって Python の知識は
サーバ設定作業は面倒で間違いを犯しやすいため、Chef/Puppetなどのツールで自動化したいと考えている方は多いと思います。 私もそのような理由からChef(-solo)を習得しようと試行錯誤していました。 その結果、ある程度は動くようになったものの次のような問題があると思いました。 学習に時間がかかる 私は正直、今でもどのファイルに何を書くのかよく分かってないです。 幾分か簡単だと言われるchef-soloでも公式サイトのドキュメントだけではよく理解出来ませんでした。 また、バージョンによる差異なのか目的が異なるのか分かりませんが、ブログ記事を参考にしようとすると十人十色でどれが私に合った手順なのかわかりませんでした。 例え最終的に理解できたとしても、私やあなたが何日もかけて理解できないことはチームのメンバーも理解するのは難しいと思います。 対象サーバにインストールする必要がある Ch
fabfile.pyって、task数個までならまあ1ファイルでいいんですが、それ以上増えてくるとスクリプト自体がカオスになって収集がつかなくなります。 更に似たような、けど微妙に違うtaskをいっぱい定義したりすると名前まで酷くなってきます。こんなかんじに。 @roles('lb') def lbserver_deploy(): """ロードバランサーにデプロイする""" ... @roles('app') def appserver_deploy(): """アプリケーションサーバーにデプロイする""" ... @roles('batch') def batchserver_deploy(): """バッチサーバーにデプロイする""" ... こんなファイルメンテする気が起こらないので、なんとか綺麗にしたいと思って調べたところ、fabric1.1から付いたクラスベースのtaskというのを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く