gradle ssh plugin
DESCRIPTION
Introduction of Gradle SSH PluginTRANSCRIPT
はじめに
5分ぐらいで
Gradle SSH Pluginを紹介します。
http://gradle-ssh-plugin.github.io
@int128Groovy and Scala ProgrammerCertified ScrumMaster
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オペレーションの自動化全般に使用できます