Enviar búsqueda
Cargar
Fabric Essentials
•
22 recomendaciones
•
7,180 vistas
Yoshinari Takaoka
Seguir
Fabric の基礎/入門/使い方 と現状の社内プラクティス
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 44
Descargar ahora
Descargar para leer sin conexión
Recomendados
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
max747
2日間Fabricを触った俺が 色々解説してみる
2日間Fabricを触った俺が 色々解説してみる
airtoxin Ishii
ChefとPuppetの比較
ChefとPuppetの比較
Sugawara Genki
Puppetのススメ
Puppetのススメ
Gosuke Miyashita
Ansible入門
Ansible入門
Daiki Hayakawa
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
Ansible入門...?
Ansible入門...?
shirou wakayama
Recomendados
Fabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
max747
2日間Fabricを触った俺が 色々解説してみる
2日間Fabricを触った俺が 色々解説してみる
airtoxin Ishii
ChefとPuppetの比較
ChefとPuppetの比較
Sugawara Genki
Puppetのススメ
Puppetのススメ
Gosuke Miyashita
Ansible入門
Ansible入門
Daiki Hayakawa
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
Ansible入門...?
Ansible入門...?
shirou wakayama
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
CLARA ONLINE, Inc.
Puppet on AWS
Puppet on AWS
Sugawara Genki
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
Yasutaka Hamada
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
Yasutaka Hamada
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
Yasutaka Hamada
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのこと
TrinityT _
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
atk1234
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
Apache Auroraの始めかた
Apache Auroraの始めかた
Masahito Zembutsu
クックパッドのスケーリング
クックパッドのスケーリング
Satoshi Takada
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
Masahiro NAKAYAMA
Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4
Ransui Iso
NDS#31
NDS#31
hayajo Imai
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
kumachang_LL
お手軽並列処理
お手軽並列処理
博文 斉藤
今日から使い始めるChef
今日から使い始めるChef
Masahiro NAKAYAMA
シンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnair
Naoya Inada
Ansible handson ood2016
Ansible handson ood2016
Hideki Saito
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
Shinya Okano
Fabric + Amazon EC2で快適サポート生活 #PyFes
Fabric + Amazon EC2で快適サポート生活 #PyFes
Sho Shimauchi
Más contenido relacionado
La actualidad más candente
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
CLARA ONLINE, Inc.
Puppet on AWS
Puppet on AWS
Sugawara Genki
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
Yasutaka Hamada
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
Yasutaka Hamada
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
Yasutaka Hamada
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのこと
TrinityT _
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
atk1234
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
Apache Auroraの始めかた
Apache Auroraの始めかた
Masahito Zembutsu
クックパッドのスケーリング
クックパッドのスケーリング
Satoshi Takada
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
Masahiro NAKAYAMA
Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4
Ransui Iso
NDS#31
NDS#31
hayajo Imai
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
kumachang_LL
お手軽並列処理
お手軽並列処理
博文 斉藤
今日から使い始めるChef
今日から使い始めるChef
Masahiro NAKAYAMA
シンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnair
Naoya Inada
Ansible handson ood2016
Ansible handson ood2016
Hideki Saito
La actualidad más candente
(20)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Puppet on AWS
Puppet on AWS
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
Webサーバ構築で心がけるべき二つのこと
Webサーバ構築で心がけるべき二つのこと
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Apache Auroraの始めかた
Apache Auroraの始めかた
クックパッドのスケーリング
クックパッドのスケーリング
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
20140828 #ssmjp 社内チューニンガソンで優勝したはなし
Lisp Tutorial for Pythonista : Day 4
Lisp Tutorial for Pythonista : Day 4
NDS#31
NDS#31
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
お手軽並列処理
お手軽並列処理
今日から使い始めるChef
今日から使い始めるChef
シンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnair
Ansible handson ood2016
Ansible handson ood2016
Similar a Fabric Essentials
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
Shinya Okano
Fabric + Amazon EC2で快適サポート生活 #PyFes
Fabric + Amazon EC2で快適サポート生活 #PyFes
Sho Shimauchi
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Emma Haruka Iwao
「Ansible on Azure入門」資料
「Ansible on Azure入門」資料
Hidetoshi Hirokawa
Open stack reference architecture v1 2
Open stack reference architecture v1 2
Dell TechCenter Japan
Chef
Chef
yaasita
LL言語でもHudsonを使おう!
LL言語でもHudsonを使おう!
KLab株式会社
コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのか
gree_tech
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
maebashi
最新版Hadoopクラスタを運用して得られたもの
最新版Hadoopクラスタを運用して得られたもの
cyberagent
静的サイトどこにする?
静的サイトどこにする?
ogawatti
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
infinite_loop
Eureka go 2015_12_12
Eureka go 2015_12_12
matsuo kenji
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
Kazuto Kusama
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi
昌桓 李
Capistrano in practice - WebCareer
Capistrano in practice - WebCareer
Kyosuke MOROHASHI
サーバ構築自動化 On aws sqaleの場合
サーバ構築自動化 On aws sqaleの場合
Ryo Kuroda
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
Kouhei Sutou
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
Similar a Fabric Essentials
(20)
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
Fabric + Amazon EC2で快適サポート生活 #PyFes
Fabric + Amazon EC2で快適サポート生活 #PyFes
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
Docker on RHEL & Project Atomic 入門 - #Dockerjp 4
「Ansible on Azure入門」資料
「Ansible on Azure入門」資料
Open stack reference architecture v1 2
Open stack reference architecture v1 2
Chef
Chef
LL言語でもHudsonを使おう!
LL言語でもHudsonを使おう!
コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのか
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
最新版Hadoopクラスタを運用して得られたもの
最新版Hadoopクラスタを運用して得られたもの
静的サイトどこにする?
静的サイトどこにする?
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
Eureka go 2015_12_12
Eureka go 2015_12_12
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi
Capistrano in practice - WebCareer
Capistrano in practice - WebCareer
サーバ構築自動化 On aws sqaleの場合
サーバ構築自動化 On aws sqaleの場合
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Fabric Essentials
1.
Fabric Essentials Yoshinari Takaoka Kauli.inc
2.
Agenda 目的:Capistrano から Fabric
に移行したので 基本的なプラクティスを共有したい ● Fabric の紹介 ● チュートリアル ● Kauli のプラクティス ● これからの展開 ● まとめ
3.
Fabric の紹介
4.
Fabric? ● ● ssh で繋がったサーバ群にコマンドを一気に実行 するツール それなりの台数が並んだサーバ群のシステム管理 やデプロイに使われる ● http://fabfile.org/ ● 同種のソフト - Ruby
の Capistrano や mina - Perl の Cinnamon など
5.
Fabric に移行した理由 ● Python で楽に書ける -
Kauli は Python の会社 ● Capistrano と出来ることにあまり差異はないようだ - Capistrano でも現在込み入ったことはしていない - Ruby なソフトウェアは バージョンアップ的な意味で 運用にあ まり優しくない Capistrano とやれることに差がないのであれば 移行してメンテできる人を増やした方がよい
6.
チュートリアル
7.
インストールは簡単(Ubuntu 12.04) $ apt-get
install build-essential python-dev python-virtualenv $ virtualenv fabrictest $ cd fabrictest $ source bin/activate $ pip install fabric 以下、この環境を前提に説明します。
8.
まずは Hello World ● ● public
な callableオブジェクト (関数やクラスな ど) を実行単位(タスク) として定義 local 関数は localhost でシェルコマンドを実行 ... 実は古いスタイルだけどね(後述)
9.
まずは Hello World(2) 実際に以下をやってみる ● fabfile.py
に保存 ● task を一覧する $ fab -l ● タスクを実行する $ fab hello ... デフォルト。変更可
10.
リモートでコマンドを実行 ● run と sudo
関数をタスクの中で呼び出せばよい。 これらはリモートでコマンドを実行するときの基本。 local と区別する
11.
リモートでコマンドを実行(2) ● ● ● 前のページのコードを実際に実行してみる ssh で接続できることが前提 実行先のホストをどこかで指定する必要がある - 指定する方法多数。Fabric
を使うにあたっての 肝なのでこの後詳述。
12.
実行先のホストを指定する方法(1) ● ● ホスト単位 - 個々のホストを指定する ロール(Role)単位 - 同じ役割の複数のホストをひとまとめにして 名前を付け、それを指定する -
fabfile.py 内で env.roledefs の定義が必須
13.
実行先のホストを指定する方法(2) ● env 変数でホストやロールを指定する
14.
実行先のホストを指定する方法(3) ● デコレータでホストやロールを指定する
15.
実行先のホストを指定する方法(4) ● コマンドラインからホストやロールを指定可 $ fab -H
host1 hello $ fab -R role1 hello
16.
ホスト指定の裏技 $ fab hello:hosts=”host1,host2” $
fab hello:roles=”role1” ● ● ● 上記はこれまで説明してきたどの指定方法よりも優 先される デコレータの指定などを無視して意図しない動作を させることが可能 事故の元なので使うべきではない。てか使うな。
17.
ホスト指定方法と優先順位 (優先順位高) ● ● ● ● ホスト指定の裏技 デコレータ env.hosts, env.roles 変数 コマンドライン (優先順位低) 優先順位を知った上でホスト指定を組み立てる ことが重要
18.
例題1: Q. どのホストが呼び出されるか? $ fab
hello def hello(): run(“echo 'hello world'”) デコレータや env.hosts, env.roles が指定されて いないと、どこも指定されていないのと同義
19.
例題2: Q. どのホストが呼び出されるか? $ fab
-H host1 hello def hello(): run(“echo 'hello world'”)
20.
例題3: Q. どのホストが呼び出されるか? $ fab
-H host1 hello @host('host2') def hello(): run(“echo 'hello world'”)
21.
例題4: Q. どのホストが呼び出されるか? $ fab
-H host1 hello env.hosts = ['host3','host4'] @host('host2') def hello(): run(“echo 'hello world'”)
22.
例題5: Q. どのホストが呼び出されるか? $ fab
hello env.roledefs = { 'role1': [ 'host1','host2','host3'] } @host('host2') @roles('role1') def hello(): run(“echo 'hello world'”)
23.
例題6: Q. どのホストが呼び出されるか? $ fab
hello:hosts=”host2, host3” @hosts('host1') def hello(): run(“echo 'hello world'”)
24.
ホスト指定まとめ(1) ● ホスト指定の裏技は使うな - デコレータや env
変数の設定を全て上書きでき るので意図しない動作を産む可能性大 ● ホスト指定の裏技を除けば、実質デコレータが一番 優先順位が高い ● ドキュメントちゃんと嫁 ● 素振り大事。実際に動かして挙動を押さえておく。
25.
ホスト指定まとめ(2) - ホストやロールについて http://docs.fabfile.org/en/1.8/usage/execution.html#defining-host-lists - ホスト指定の優先順位 http://docs.fabfile.org/en/1.8/usage/execution.html#order-of-precede nce
26.
Kauli でのプラクティス
27.
Kauli でのプラクティス ● 指定している設定値 ● Capistrano の
“on” や “with” の代替 ● 戻り値の検査 ● 複数のタスクを組み合わせて一度に実行
28.
指定している設定値(1) ● env 変数で指定 ● 直感的でわかりやすい env.colorize_errors =
True - エラーに色を付けて知らせる env.warn_only = True - エラーに警告出してスルー(デフォルトは即終了)
29.
指定している設定値(2) env.parallel = True -
multiprocessing モジュールによる並列実行 - @parallel デコレータによる指定が不要に env.pool_size = 5 - 同時に実行させるプロセス数 - CPU の数と相談しましょう
30.
指定している設定値(3) env.disable_known_hosts = True -
ssh の known_hosts を無視する - man in the middle attack に対して無防備になるので注意 - 多数のホストに対して実行する場合に速度的な問題が出た 場合は試すと良い env.timeout = 3 - ssh の接続タイムアウト(秒) - 子プロセスによる並列実行を前提にしているため 接続待ちのプロセスがたまると LA があがるため短めに。
31.
戻り値の検査 ● デフォルトでは、実行したコマンドの戻り値が 0 で あれば正常と見なし、それ以外ならエラー それに従わないコマンドもそれなりに存在する ● コマンドの戻り値が
undoc だと調べるのがたるい - git とか puppet とか - ソース読む羽目になったり
32.
Capistrano の “on”
や “with” の代替 cap> with role1 uname -a $ fab -R role1 cmd:'uname -a' cap> on host1 uname -a $ fab -H host1 cmd:'uname -a'
33.
Capistrano の “on”
や “with” の代替(2) ● 実装は簡単 ● コマンドラインからタスクには引数を渡せる - fab -H host1 cmd:'uname -a' ● 引数の部分にカンマが含まれている場合は要エスケープ - fab -H host1 cmd:'ls -d /path/{to,hoge}/'
34.
複数のタスクを組み合わせて一度に実行(1) ● ● ● ● ネストした関数で複数のタスクを実行 複数のホストを組み合わせたタスクを同時に実行 させたい場合に重宝 execute 関数を使う ホスト指定と組み合わせると意図しない動作になり がちなので注意
35.
複数のタスクを組み合わせて一度に実行(2) ● 以下のようにホスト指定をするとデプロイが3回行われる $ fab -H
host1,host2,host3 deploy
36.
複数のタスクを組み合わせて一度に実行(3) ● Kauli では、この手のタスクでは -R
と -H によるホ スト指定を禁止している
37.
これからの展開
38.
これからの展開 ● モジュール化 ● 新しいスタイルのタスク定義へ
39.
モジュール化(1) ● ● これまでは fabfile.py 1ファイルにタスクを書く前提で説明をしてきた が、Fabric
では Python 流にモジュールを区切ることが可能 fabfile.py からモジュールを import すればドット 区切りでタスクを呼び出せる
40.
モジュール化(2) ● いろいろなプロダクトのタスクを分割するのに 役立つ $ fab some_product.deploy $
fab infra.pull_some_file … みたいな感じ ● fabfile.py への一極集中を解消 ● 新しいスタイルのタスク定義が必須
41.
新しいスタイルのタスク定義(1) ● 既存の関数ベースのタスク定義に @task デコレー タを付ける ● または、Task
クラスを継承してクラスを作る ● 現在新スタイルのタスクは未使用 ● これまで説明してきた古いスタイルのタスク定義と は共存不可 - ひとつでも新しいスタイルのタスクがあると、古い スタイルのタスクはリストから外れ、使えなくなる
42.
新しいスタイルのタスク定義(2)
43.
まとめ ● ● ● Fabric は Python
で簡単に書ける ホストの指定方法が肝。これさえ把握すれば多分ど うとでもなる Kauli では特に凄いことをしてるわけではない 皆で良くしていくもの。 Patches welcome. ● モジュール化の方向に持って行きたい ● ドキュメントもよく読みましょう - http://docs.fabfile.org/
44.
ご清聴ありがとうございました。
Descargar ahora