Enviar pesquisa
Carregar
簡易デプロイツール(スクリプト)を作ってみた話
•
Transferir como PPTX, PDF
•
0 gostou
•
534 visualizações
yokoda_toshiaki
Seguir
yomitan.pm #6 LT
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 13
Baixar agora
Recomendados
Fn project爆誕
Fn project爆誕
Hiroshi Hayakawa
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
Mitsutoshi Nakano
OSC 2011 KeySnail
OSC 2011 KeySnail
Masafumi Oyamada
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
5mingame2
『こなへん』ができるまで ☆リリース直前編☆
『こなへん』ができるまで ☆リリース直前編☆
5mingame2
systemdでよく使うサブコマンド
systemdでよく使うサブコマンド
Kazuhiro Nishiyama
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話
Masataka Tsukamoto
覚えておきたい! zypper コマンドの使い方
覚えておきたい! zypper コマンドの使い方
Fuminobu Takeyama
Recomendados
Fn project爆誕
Fn project爆誕
Hiroshi Hayakawa
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
Mitsutoshi Nakano
OSC 2011 KeySnail
OSC 2011 KeySnail
Masafumi Oyamada
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
5mingame2
『こなへん』ができるまで ☆リリース直前編☆
『こなへん』ができるまで ☆リリース直前編☆
5mingame2
systemdでよく使うサブコマンド
systemdでよく使うサブコマンド
Kazuhiro Nishiyama
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話
Masataka Tsukamoto
覚えておきたい! zypper コマンドの使い方
覚えておきたい! zypper コマンドの使い方
Fuminobu Takeyama
自宅サーバ仮想化
自宅サーバ仮想化
anubis_369
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
Hirotaka Kawata
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
自作x86エミュレータの終焉
自作x86エミュレータの終焉
Daisuke Kamikawa
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
University of Tsukuba Linux User Group
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
bsdhack
Python02
Python02
XMLProJ2014
Open Design Computer Project - Tsukuba.pm
Open Design Computer Project - Tsukuba.pm
Hirotaka Kawata
シェル入門
シェル入門
ina job
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
Kenichiro MATOHARA
GUI何処行ったんDocker
GUI何処行ったんDocker
Kazuhito Miura
Kickstart, Puppet, Docker
Kickstart, Puppet, Docker
Hirokazu Tokuno
Rubyでバルクインサート
Rubyでバルクインサート
Fujimura Munehiko
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapy
Masashi Shibata
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
Hirotaka Kawata
Unixコマンド入門
Unixコマンド入門
Satosi Sakai
Unix architecture
Unix architecture
raw-hide
FPGAでmrubyを動かす
FPGAでmrubyを動かす
Shuta Kimura
意識の低い自動化
意識の低い自動化
greenasparagus
Symfony2 workshop-1
Symfony2 workshop-1
Hidenori Goto
入門 シェル実装
入門 シェル実装
Yusuke Sangenya
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
Mais conteúdo relacionado
Mais procurados
自宅サーバ仮想化
自宅サーバ仮想化
anubis_369
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
Hirotaka Kawata
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
icchy
自作x86エミュレータの終焉
自作x86エミュレータの終焉
Daisuke Kamikawa
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
University of Tsukuba Linux User Group
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
bsdhack
Python02
Python02
XMLProJ2014
Open Design Computer Project - Tsukuba.pm
Open Design Computer Project - Tsukuba.pm
Hirotaka Kawata
シェル入門
シェル入門
ina job
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
Kenichiro MATOHARA
GUI何処行ったんDocker
GUI何処行ったんDocker
Kazuhito Miura
Kickstart, Puppet, Docker
Kickstart, Puppet, Docker
Hirokazu Tokuno
Rubyでバルクインサート
Rubyでバルクインサート
Fujimura Munehiko
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapy
Masashi Shibata
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
Hirotaka Kawata
Unixコマンド入門
Unixコマンド入門
Satosi Sakai
Unix architecture
Unix architecture
raw-hide
FPGAでmrubyを動かす
FPGAでmrubyを動かす
Shuta Kimura
意識の低い自動化
意識の低い自動化
greenasparagus
Symfony2 workshop-1
Symfony2 workshop-1
Hidenori Goto
Mais procurados
(20)
自宅サーバ仮想化
自宅サーバ仮想化
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
自作x86エミュレータの終焉
自作x86エミュレータの終焉
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
Python02
Python02
Open Design Computer Project - Tsukuba.pm
Open Design Computer Project - Tsukuba.pm
シェル入門
シェル入門
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
GUI何処行ったんDocker
GUI何処行ったんDocker
Kickstart, Puppet, Docker
Kickstart, Puppet, Docker
Rubyでバルクインサート
Rubyでバルクインサート
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapy
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
自作コンピューターでなんかする - 第八回 カーネル/VM探検隊&懇親会
Unixコマンド入門
Unixコマンド入門
Unix architecture
Unix architecture
FPGAでmrubyを動かす
FPGAでmrubyを動かす
意識の低い自動化
意識の低い自動化
Symfony2 workshop-1
Symfony2 workshop-1
Semelhante a 簡易デプロイツール(スクリプト)を作ってみた話
入門 シェル実装
入門 シェル実装
Yusuke Sangenya
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
PowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまで
Kazuhiro Matsushima
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
Hideo Takahashi
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築
Hiroshi Yamato
Reproducebility 100倍 Dockerマン
Reproducebility 100倍 Dockerマン
Nagi Teramo
Power shellmemo
Power shellmemo
ytanno
PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話
侑弥 濱田
Osoljp201204
Osoljp201204
Masataka Tsukamoto
FOLIOのコードを動かしてみた
FOLIOのコードを動かしてみた
Futoshi Tanuma
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
Kazumi IWANAGA
つくっておぼえる!仮想マシン〜直前で実装編〜
つくっておぼえる!仮想マシン〜直前で実装編〜
Eric Sartre
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Kei IWASAKI
of_protocol_tremaday5
of_protocol_tremaday5
エイシュン コンドウ
Alluren of prototype-based OOP
Alluren of prototype-based OOP
azuma satoshi
非同期系統の基礎
非同期系統の基礎
segayuu
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料
Junichi Ishida
Ansible入門 20151226
Ansible入門 20151226
Kunihiro Morita
Write-Help
Write-Help
和紀 大鷲
Semelhante a 簡易デプロイツール(スクリプト)を作ってみた話
(20)
入門 シェル実装
入門 シェル実装
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
PowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまで
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築
Reproducebility 100倍 Dockerマン
Reproducebility 100倍 Dockerマン
Power shellmemo
Power shellmemo
PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話
Osoljp201204
Osoljp201204
FOLIOのコードを動かしてみた
FOLIOのコードを動かしてみた
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
つくっておぼえる!仮想マシン〜直前で実装編〜
つくっておぼえる!仮想マシン〜直前で実装編〜
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
of_protocol_tremaday5
of_protocol_tremaday5
Alluren of prototype-based OOP
Alluren of prototype-based OOP
非同期系統の基礎
非同期系統の基礎
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料
Ansible入門 20151226
Ansible入門 20151226
Write-Help
Write-Help
簡易デプロイツール(スクリプト)を作ってみた話
1.
簡易デプロイツール(スクリプト)を 作ってみた話 @adokoy0001 yomitan.pm #6
2.
自己紹介 横田 敏明 (Toshiaki
Yokoda) Twitter: @adokoy0001 宿泊施設向けシステムベンダー勤務 Perl使ってます!
3.
今日のお話 Net::OpenSSHとParallel::ForkManagerを使って、 「とにかく俺は複数リモートにコマンドを投げたいだけなんだ!」 という人向けの、 簡単なデプロイツールを作ってみました。というお話。 ここに公開: https://github.com/adokoy001/Perl-SSH-Task
4.
目的 • SSHで複数のリモートに同じコマンドを投げたい • 公開鍵認証を使わずにパスワードでやりたい(危ないけど) •
SSH初回接続時のフィンガープリント確認を無視したい(危ないけど) • sudoやりたい • 並列に実行したい • 処理が終了した順に結果が見れればOK • サーバ、サーバ群の指定を柔軟かつ簡単にしたい • サーバをグループ分けするのではなく、ラベル(タグ)を付ける。 • ラベルを指定してコマンドを実行するサーバ群を指定可能 • 記述を簡単にしたい • ※ただし、Perlに慣れている人にとって。
5.
作ったものの概要(1) • Perl-SSH-Taskという名前でGitHubに公開 • https://github.com/adokoy001/Perl-SSH-Task •
スクリプトファイル(ssh_task.pl)に引数を与えて実行 • $ perl ssh_task.pl <対象サーバorラベル> <タスク名> • $ perl ssh_task.pl <対象サーバorラベル> do <任意のコマンド> • $ perl ssh_task.pl <対象サーバorラベル> do_sudo <任意のコマンド> • $ perl ssh_task.pl --server-list • 登録設定したサーバの情報を一覧表示 • $ perl ssh_task.pl --task-list • 登録設定した共通タスクを一覧表示
6.
作ったものの概要(2) • コンフィグファイル • Perl形式で記述。設定ファイルを読んでevalして変数に格納(適当) •
servers.conf : リモートのIP・ユーザ・パスワード、ラベルなどを設定。 • tasks.conf : サーバに実行したいコマンドのテンプレート的なもの。 • config.conf : 最大並列実行数やフィンガープリント確認スキップの設定など。 • こんな人向け • 公開鍵認証とか使わずに手っ取り早くユーザ・パスワードで • 設定ファイルに直書きなのでアレですが・・・ • DSLとか覚えたくない • とにかくSSHでリモートにコマンドを実行させられるなら良い
7.
インストール $ git clone
https://github.com/adokoy001/Perl-SSH-Task.git ./my_ssh_task $ cd my_ssh_task $ cpanm --installdeps . 以上 ※ cpanm,Plenv環境推奨
8.
まずはservers.confの記述 { my_server_01 => { label
=> ['internal','development','my_favorite'], host => 'localhost', port => 22, user => 'myname', password => 'mypassword', general_task => { server_info => 'server_info', upgrade => 'upgrade_apt', reboot => 'reboot' }, specified_task => { test_1 => [["~/.plenv/shims/perl -v"]], test_2 => [["~/.plenv/shims/perl global"]] } }, (以下、サーバ設定が続く) サーバ名 ラベル(複数指定可能) 接続に必要な情報 tasks.conf で設定したタスクを登録 固有タスクを直接登録 Perlスタイルでサーバの設定を記述 同時に実行したい複数のサーバを 指定するために、ラベルを設定する。 ホスト、ポート、ユーザ、パスワード を設定する。 tasks.conf(後述)で設定した共通タス クのタスク名を指定する。 このホスト固有の処理があれば、タ スク名を付けてタスクを直接登録す る。
9.
共通タスクをtasks.confに記述 { server_info => [ ["hostname"], ["uname
-a"], ["ifconfig"], ["free"], ["cat /proc/cpuinfo | grep processor"], ["uptime"] ], upgrade_apt => [ [ {stdin_data => "$servers->{$server_name}->{password}n"} , "sudo -Sk -p '' "."apt-get update"], [ {stdin_data => "$servers->{$server_name}->{password}n"} , "sudo -Sk -p '' "."apt-get upgrade -y"] ], upgrade_yum => [ [ {stdin_data => "$servers->{$server_name}->{password}n"} , "sudo -Sk -p '' "."yum update"], [ {stdin_data => "$servers->{$server_name}->{password}n"} , "sudo -Sk -p '' "."yum upgrade -y"] ], upgrade_yum_tty => [ [ {tty => 1, stdin_data => "$servers->{$server_name}->{password}n"} , "sudo -Sk -p '' "."yum update"], [ {tty => 1, stdin_data => "$servers->{$server_name}->{password}n"} , "sudo -Sk -p '' "."yum upgrade -y"] ], reboot => [ [ {stdin_data => "$servers->{$server_name}->{password}n"} , "sudo -Sk -p '' "."reboot"], ], reboot_tty => [ [ {tty => 1, stdin_data => "$servers->{$server_name}->{password}n"} , "sudo -Sk -p '' "."reboot"], ], } Net::OpenSSHの記法 配列Refの配列Ref sudoするときのオマジナイ tty強制環境ではtty => 1を追加
10.
実行 ラベル名developmentが付けられた サーバ群にdateコマンドを実行した例 出力は以下の様な感じに [ 設定名 /
ホスト(IPなど) ]: 実行ステップ 実行結果 ・ ・ ・ COMPLETED! - - - [SUMMARY] - - - PROCEEDED SERVER: 実行対象サーバ数 IGNORED SERVERS : 非実行対象サーバ数
11.
こんな構成で使っています DB DB DB App
App App LB MGMT MGMTからサーバへコマンドを発行 ・Appサーバにアプリを展開 ・Appサーバ全部のアプリを更新 ・DBサーバのRedisキャッシュをクリア ・全サーバの状態を確認 などなど・・・ LAN
12.
感想 • 真っ当にansibleとか使ったほうが良い • 既に広まっている技術を覚えて使った方が普通に良い •
サーバのセットアップとか • 状態とか冪等性を気にするならなおさら • Shellで冪等性を保つのは大変だけども • 一括実行したいことがシンプルなら自前スクリプトもアリかも • 既存ツールの使い方を覚えるよりも、自作したシンプルなツールの方が他の メンバーにとっても覚えやすいことも・・・あるかも • Net::OpenSSHの使い方を覚えたらかなり楽しい
13.
おしまい
Baixar agora