Submit Search
Upload
3分でサーバオペレーションコマンドを作る技術
•
16 likes
•
12,891 views
Kei IWASAKI
Follow
#pyconjp 2015 の LTで発表した際に利用した資料です https://pycon.jp/2015/ja/schedule/presentation/93/
Read less
Read more
Technology
Report
Share
Report
Share
1 of 52
Download now
Download to read offline
Recommended
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
Atsuo Ishimoto
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Kei IWASAKI
Sphinx HTML Theme Hacks
Sphinx HTML Theme Hacks
Shoji KUMAGAI
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
Atsuo Ishimoto
第1回python勉強会
第1回python勉強会
Yoshio Shimomura
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
aoshiman
PowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまで
Kazuhiro Matsushima
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Takanori Suzuki
Recommended
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
Atsuo Ishimoto
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Kei IWASAKI
Sphinx HTML Theme Hacks
Sphinx HTML Theme Hacks
Shoji KUMAGAI
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
Atsuo Ishimoto
第1回python勉強会
第1回python勉強会
Yoshio Shimomura
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
aoshiman
PowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまで
Kazuhiro Matsushima
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Takanori Suzuki
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
Daisuke Miyakawa
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
dcubeio
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
Sphinx customization for OGP support at SphinxCon JP 2018
Sphinx customization for OGP support at SphinxCon JP 2018
Takayuki Shimizukawa
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
Takanori Suzuki
Python入門
Python入門
Shohei Okada
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
Hiro Yoshioka
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
AromaBlack
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso
doctest を書こう @ pycon kansai
doctest を書こう @ pycon kansai
YosukeHojo
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
SaitoTsutomu
シェルスクリプトを極める
シェルスクリプトを極める
bsdhack
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
Yuya Takeyama
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
bsdhack
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
Yoshiki Shibukawa
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
R を起動するその前に
R を起動するその前に
Kosei ABE
Introduction of Python
Introduction of Python
Tomoya Nakayama
Hubotをはじめる
Hubotをはじめる
nasa9084
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話
Yusuke Miyazaki
sqldf for pandas
sqldf for pandas
airtoxin Ishii
More Related Content
What's hot
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
Daisuke Miyakawa
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
dcubeio
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
Sphinx customization for OGP support at SphinxCon JP 2018
Sphinx customization for OGP support at SphinxCon JP 2018
Takayuki Shimizukawa
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
Takanori Suzuki
Python入門
Python入門
Shohei Okada
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
Hiro Yoshioka
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
AromaBlack
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso
doctest を書こう @ pycon kansai
doctest を書こう @ pycon kansai
YosukeHojo
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
SaitoTsutomu
シェルスクリプトを極める
シェルスクリプトを極める
bsdhack
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
Yuya Takeyama
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
bsdhack
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
Yoshiki Shibukawa
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
R を起動するその前に
R を起動するその前に
Kosei ABE
Introduction of Python
Introduction of Python
Tomoya Nakayama
Hubotをはじめる
Hubotをはじめる
nasa9084
What's hot
(20)
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
Sphinx customization for OGP support at SphinxCon JP 2018
Sphinx customization for OGP support at SphinxCon JP 2018
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
Python入門
Python入門
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
doctest を書こう @ pycon kansai
doctest を書こう @ pycon kansai
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
シェルスクリプトを極める
シェルスクリプトを極める
Good Parts of PHP and the UNIX Philosophy
Good Parts of PHP and the UNIX Philosophy
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
R を起動するその前に
R を起動するその前に
Introduction of Python
Introduction of Python
Hubotをはじめる
Hubotをはじめる
Viewers also liked
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話
Yusuke Miyazaki
sqldf for pandas
sqldf for pandas
airtoxin Ishii
pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話
Masashi Shibata
SekainoKAO by TeamKAO
SekainoKAO by TeamKAO
Hideki
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
Katayanagi Nobuko
Sphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組み
Takayuki Shimizukawa
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaoke
Renyuan Lyu
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
Tetsuya Morimoto
アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術
hagino 3000
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
Shinya Takamaeda-Y
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
cocodrips
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
Shinichi Nakagawa
日本のオープンデータプラットフォームをPythonでつくる
日本のオープンデータプラットフォームをPythonでつくる
Yuta Kashino
営業・運用を支える "気付ける" 管理画面
営業・運用を支える "気付ける" 管理画面
Masao Maeda
フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!
zaki4649
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
癒し系ネットワーク機器をPingで起こす
癒し系ネットワーク機器をPingで起こす
Shinichi Hirauchi
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
Masayuki Ishikawa
クラウドハニーポットを運用しよう!
クラウドハニーポットを運用しよう!
Mizutani Masayoshi
初心者のためのWeb標準技術
初心者のためのWeb標準技術
Shogo Sensui
Viewers also liked
(20)
Django から各種チャットツールに通知するライブラリを作った話
Django から各種チャットツールに通知するライブラリを作った話
sqldf for pandas
sqldf for pandas
pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話
SekainoKAO by TeamKAO
SekainoKAO by TeamKAO
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
Sphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組み
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaoke
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
アドネットワークのデータ解析チームを支える技術
アドネットワークのデータ解析チームを支える技術
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
日本のオープンデータプラットフォームをPythonでつくる
日本のオープンデータプラットフォームをPythonでつくる
営業・運用を支える "気付ける" 管理画面
営業・運用を支える "気付ける" 管理画面
フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
癒し系ネットワーク機器をPingで起こす
癒し系ネットワーク機器をPingで起こす
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
クラウドハニーポットを運用しよう!
クラウドハニーポットを運用しよう!
初心者のためのWeb標準技術
初心者のためのWeb標準技術
Similar to 3分でサーバオペレーションコマンドを作る技術
Open Source System Administration Framework - Func
Open Source System Administration Framework - Func
Gosuke Miyashita
キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐
Kei Nakazawa
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
shigeya
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Kohei Nishikawa
BBBBB
BBBBB
arase_utagoe
1MB
1MB
arase_utagoe
Haikara
Haikara
jewel12
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
seiichi arai
Drone.io のご紹介
Drone.io のご紹介
Uchio Kondo
Chrome DevTools.next
Chrome DevTools.next
yoshikawa_t
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Tetsuyuki Kobayashi
Windows Azure PHP Tips
Windows Azure PHP Tips
Microsoft Openness Japan
Programming camp Codereading
Programming camp Codereading
Hiro Yoshioka
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperleger Tokyo Meetup
ゆるかわPhp
ゆるかわPhp
Ryota Mochizuki
捕鯨!詳解docker
捕鯨!詳解docker
雄哉 吉田
LinAction Theme Docker
LinAction Theme Docker
cyberblack28 Ichikawa
Similar to 3分でサーバオペレーションコマンドを作る技術
(20)
Open Source System Administration Framework - Func
Open Source System Administration Framework - Func
キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
BBBBB
BBBBB
1MB
1MB
Haikara
Haikara
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
AWS Glueを使った Serverless ETL の実装パターン
AWS Glueを使った Serverless ETL の実装パターン
Drone.io のご紹介
Drone.io のご紹介
Chrome DevTools.next
Chrome DevTools.next
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Windows Azure PHP Tips
Windows Azure PHP Tips
Programming camp Codereading
Programming camp Codereading
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
ゆるかわPhp
ゆるかわPhp
捕鯨!詳解docker
捕鯨!詳解docker
LinAction Theme Docker
LinAction Theme Docker
More from Kei IWASAKI
コロナ渦とキャリアの話 / my carrier and covid-19
コロナ渦とキャリアの話 / my carrier and covid-19
Kei IWASAKI
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
Kei IWASAKI
Elasticbeanstalk で Ansible を使っている話
Elasticbeanstalk で Ansible を使っている話
Kei IWASAKI
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
Kei IWASAKI
Pelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 Tokyo
Kei IWASAKI
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
Kei IWASAKI
Vagrant+virtualboxを使ってみよう
Vagrant+virtualboxを使ってみよう
Kei IWASAKI
障害発生時に抑えておきたい基礎知識
障害発生時に抑えておきたい基礎知識
Kei IWASAKI
監視のススメ
監視のススメ
Kei IWASAKI
More from Kei IWASAKI
(9)
コロナ渦とキャリアの話 / my carrier and covid-19
コロナ渦とキャリアの話 / my carrier and covid-19
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
Elasticbeanstalk で Ansible を使っている話
Elasticbeanstalk で Ansible を使っている話
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
Pelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 Tokyo
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
Vagrant+virtualboxを使ってみよう
Vagrant+virtualboxを使ってみよう
障害発生時に抑えておきたい基礎知識
障害発生時に抑えておきたい基礎知識
監視のススメ
監視のススメ
Recently uploaded
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Recently uploaded
(9)
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
3分でサーバオペレーションコマンドを作る技術
1.
GMO Pepabo, Inc. Kei
IWASAKI 2015/10/10 PyConJP 2015 Lightning Talks 3分で サーバオペレーションコマンドを作る技術
2.
お前誰?
3.
お前誰? > Kei IWASAKI >
twitter: @laugh_k > Github: laughk > GMO Pepabo, Inc. > 技術部インフラグループ > System Administrator > PyConJP 初参加!
4.
3分で
5.
サーバオペレーション コマンドを作る技術
6.
サーバオペレーションコマンド is 何?
7.
Web系インフラエンジニアが 日々のサーバオペレーションを 楽にするためのコマンドラインツール
8.
とりわけ
9.
SSHで1台ずつログインをして 複数サーバに同様のコマンドを叩く たんぽぽワークを楽にする コマンドラインツール
10.
という前提で お話させていただきます
11.
紹介するライブラリ
12.
fabric と Click
13.
ライブラリとしての fabric
14.
ライブラリとしてのfabric > fabric とは >
python製デプロイツールでお馴染み > pythonでデプロイに必要なSSH越しのジョ ブを定義できる
15.
ライブラリとしてのfabric > こんな感じで fabfile.py
を用意して from fabric.api import run def ping(): run('uname -n')
16.
ライブラリとしてのfabric > fabコマンド経由でジョブを実行できる $ fab
-f fabfile.py ping -H hoge1.example.com,hoge2.example.com [hoge1.example.com] Executing task 'ping' [hoge1.example.com] run: uname -n [hoge1.example.com] Login password for 'vagrant': [hoge1.example.com] out: hoge1.example.com [hoge1.example.com] out: [hoge2.example.com] Executing task 'ping' [hoge2.example.com] run: uname -n [hoge2.example.com] out: hoge2.example.com [hoge2.example.com] out: Done. Disconnecting from hoge1.example.com... done. Disconnecting from hoge2.example.com... done.
17.
ライブラリとしてのfabric > 便利なAPI > run
... シェルコマンド実行 > sudo ... sudo 付きでシェルコマンド実行 > put ... リモートホストにファイルを置く > get ... リモートホストからファイルを取ってくる > put, get には use_sudo オプションあり > などなど
18.
便利ですね!
19.
ライブラリとして利用すると 作り込む時にすごく ります
20.
ライブラリ としての利用で使うもの
21.
fabric.api.execute
22.
ライブラリとしてのfabric > executeを使うと何ができるか? > ざっくり言うと >
python のコードから > と同じことができるよ! $ fab -f fabfile.py <jobname> -H <hostname>
23.
ライブラリとしてのfabric > こんな感じ > sample.py from
fabric.api import run, execute def ping(): run('uname -n’) if __name__ == ‘__main__': execute(ping, hosts=[ 'hoge1.example.com', 'hoeg2.example.com' ])
24.
ライブラリとしてのfabric > 実行 $ python
sample.py [hoge1.example.com] Executing task 'ping' [hoge1.example.com] run: uname -n [hoge1.example.com] Login password for 'vagrant': [hoge1.example.com] out: hoge1.example.com [hoge1.example.com] out: [hoge2.example.com] Executing task 'ping' [hoge2.example.com] run: uname -n [hoge2.example.com] out: hoge2.example.com [hoge2.example.com] out:
25.
python スクリプトとして 完結させられる
26.
ということは
27.
fabコマンドを意識しない 自分の業務に特化した スクリプトも作れる
28.
ライブラリとしてのfabric > 例えばこんな fabfile.py from
fabric.api import sudo def show_httpd_log(): sudo('tail -10000 /var/log/httpd/access_log') def show_db_slowlog_count(): sudo('tail -100000 /var/lib/mysql/slow.log > /tmp/fab-slow.log') sudo('mysqldumpslow -c /tmp/fab-slow.log') sudo('rm -fv /tmp/fab-slow.log')
29.
ライブラリとしてのfabric > 例えばこんな感じでスクリプト化 import argparse from
fabric.api import run, sudo, execute def show_httpd_log(): sudo('tail -10000 /var/log/httpd/access_log’) def show_db_slowlog_count(): sudo('tail -100000 /var/lib/mysql/slow.log > /tmp/fab-slow.log') sudo('mysqldumpslow -c /tmp/fab-slow.log') sudo('rm /tmp/fab-slow.log') if __name__ == '__main__': parser = argparse.ArgumentParser() ...
30.
pythonで コマンドラインツールを作るなら
31.
argparse の出番!
32.
ではあるけれど なかなか扱いが大変
33.
34.
つらい
35.
オプションが増えたり サブコマンドを生やすと コードの可読性を保つのがしんどい
36.
Python mini hack-a-thon にて
37.
“–Thanks!! @shimizukawa 「ClickっていうCLIのフレームワークがあるよ」
38.
Click
39.
Click > CLIツールを作るためのフレームワーク > デコレータでオプションやパラメータと実際に処理を行う 関数をいい感じに紐付けられる >
いい感じにhelpメッセージを出してくれる > bash-completion の自動生成が可能 > オプションやサブコマンドと関数の関係がわかりやすい > などなど
40.
Click > 例. サブコマンド import
click @click.group() def main(): pass @click.command() @click.argument('name') def sub1(name): click.echo('sub1: Hello {0}'.format(name)) @click.command() @click.option('-N','--name') def sub2(name): click.echo('sub2: Hello {0}'.format(name)) main.add_command(sub1) main.add_command(sub2) if __name__ == '__main__': main()
41.
Click > 例. サブコマンド
実行結果 $ python cli.py sub1 laughk sub1: Hello laughk $ python cli.py sub2 -N laughk sub2: Hello laughk
42.
Click > 例. サブコマンド
実行結果 $ python cli.py Usage: cli.py [OPTIONS] COMMAND [ARGS]... Options: --help Show this message and exit. Commands: sub1 sub2 $ python cli.py sub1 --help Usage: cli.py sub1 [OPTIONS] NAME Options: --help Show this message and exit. $ python cli.py sub2 --help Usage: cli.py sub2 [OPTIONS] Options: -N, --name TEXT --help Show this message and exit.
43.
便利ですね!!
44.
fabric と Click
を 組み合わせてみる
45.
fabricとClick > コードはこんな感じ (nginx.py
として作成 ) import click from fabric.api import sudo, execute, env def _show_access_log(): sudo('tail -10 /var/log/nginx/munin-access.log') @click.group() def main(): pass @click.command('access_log') def show_access_log(): execute(_show_access_log) main.add_command(show_access_log) if __name__ == '__main__': env.hosts = [ 'hoge1.example.com', 'hoge2.example.com' ] main()
46.
fabricとClick > 結果 $ python
nginx.py access_log [hoge1.example.com] Executing task '_show_access_log' [hoge1.example.com] sudo: tail -10 /var/log/nginx/munin-access.log [hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET / HTTP/1.1" 200 2006 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/style-new.css HTTP/1.1" 200 4049 "http://10.0.12.23/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/logo-h.png HTTP/1.1" 200 1399 "http://10.0.12.23/static/style- new.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/ 32.0.1948.69" [hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/favicon.ico HTTP/1.1" 200 2046 "http://10.0.12.23/" "Mozilla/ 5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge1.example.com] out: [hoge2.example.com] Executing task '_show_access_log' [hoge2.example.com] sudo: tail -10 /var/log/nginx/munin-access.log [hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET / HTTP/1.1" 200 2006 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/style-new.css HTTP/1.1" 200 4049 "http://10.0.12.23/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/logo-h.png HTTP/1.1" 200 1399 "http://10.0.12.23/static/style- new.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/ 32.0.1948.69" [hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/favicon.ico HTTP/1.1" 200 2046 "http://10.0.12.23/" "Mozilla/ 5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge2.example.com] out:
47.
便利ですね!!1
48.
補足
49.
fabricとClick > 補足 > click
は先に setup.py を書いておくと開発しやすいし 各種環境への配布も楽 > 業務に便利なコマンドは踏み台サーバにインストールし ておくと布教しやすいのでオススメ > 詳細な使い方はそれぞれの公式ドキュメントが情報豊富 > fabric http://docs.fabfile.org/ > Click http://click.pocoo.org
50.
まとめ
51.
まとめ > SSH 経由のオペレーションは
fabric > コマンドラインツールとしての機能は Click > fabric Click の組み合わせはお手軽で非常にオススメ
52.
Let's Try! pip install
fabric pip install Click
Download now