gradle ssh plugin

13
Gradle SSH Plugin @int128 #jggug

Upload: hidetake-iwata

Post on 27-May-2015

2.240 views

Category:

Technology


10 download

DESCRIPTION

Introduction of Gradle SSH Plugin

TRANSCRIPT

Gradle SSH Plugin@int128#jggug

はじめに

5分ぐらいで

Gradle SSH Pluginを紹介します。

http://gradle-ssh-plugin.github.io

@int128Groovy and Scala ProgrammerCertified ScrumMaster

どうやってデプロイしてますか?

どうやってデプロイしてますか?

アプリをサーバにデプロイする方法

➔ 手順書➔ シェルスクリプト➔ Capistrano➔ Maven➔ Ant➔ Gradle

Gradleからデプロイできると便利ですよね

Gradleからデプロイするメリット

使い慣れたツールでビルドからデプロイまでをシームレスに記述できます

ビルドやデプロイの設定を一元管理することでメンテナンスの無駄がなくなります

JavaVMさえ入っていればすぐにデプロイできます(Gradle Wrapperのおかげ)

Gradle SSH Pluginとは

GradleでSSHを使うためのプラグイン

➔ Gradleとの統合➔ コマンド実行やファイル転送➔ 標準入出力とのインタラクション➔ パスワード、公開鍵、ssh-agentによる認証➔ 踏み台サーバやプロキシを経由した接続

使用例1: アプリのデプロイ

Gradleでビルドした成果物 (JARやWAR) をサーバに配置する例

1. ビルドしてWARファイルを生成2. WebサーバにWARファイルを配置3. プロセスを再起動

apply plugin: 'war'apply plugin: 'ssh'

remotes { webServer { host = '192.168.1.101' user = 'jenkins' }}

task deploy(type: SshTask, dependsOn: war) { session(remotes.webServer) { put war.archivePath, '/webapps' execute 'sudo service tomcat restart' }}

Webサーバを定義

WebサーバにWARをデプロイ

WARファイルを配置し、Tomcatサービスを再起動

プラグインを適用

warタスクの後にdeployタスクを実行

例2: SSHオペレーションの自動化

ネットワーク機器 (Cisco Catalyst) から設定を取得してファイルに保存する例

1. ネットワーク機器にSSHで接続2. 特権モードに移行3. パスワードを入力4. 現在の設定を取得5. 終了

task backupConfig(type: SshTask) { session(remotes.switch01) { file('config.txt').withWriter { writer -> shell { interaction { when(partial: ~/.*>/) { standardInput << 'terminal length 0\n' standardInput << 'enable\n'

when(partial: /Password: /) { standardInput << enablePassword << '\n'

when(partial: ~/.*#/) { standardInput << 'show run\n'

when(partial: ~/.*[#>]/) { standardInput << 'exit\n' } when(line: _) { line -> writer << line << '\n' } } }

パスワードを入力

プロンプトが出現したらコマンドを入力

show runコマンドを入力

プロンプトが出現したらexitコマンドを入力

プロンプト以外の標準出力をファイルに保存

ネットワーク機器の設定を取得

まとめ

Gradle SSH Pluginを使用することで、使い慣れたGradleでビルドからデプロイまでをシームレスに実現できます

デプロイだけでなく、SSHオペレーションの自動化全般に使用できます

おまけ:アーキテクチャ

プロダクト

➔ Groovy 1.8(Gradle 1.xに同梱)➔ JSchテスト

➔ Spock➔ Apache MINA SSHD server受け入れテスト

➔ Travis CI◆ localhostにSSH接続してテストを実行