エンジニア

FabricでWindows Server 2012を簡単操作

投稿日:2014年11月21日 更新日:

サーバー担当の山内です。
今回は、Fabricを使ってWindows Server 2012に対する管理作業を自動化します。

自動化するといっても下にある3つの単純な作業です。

  • 再起動
  • SFTP転送
  • ファイルを開く

1. Fabricについて

Fabricはサーバーの遠隔管理やアプリケーションのデプロイを自動化するシンプルなツールです。
すべてpythonで記述します。
Linuxサーバーに対して使うケースがほとんどだと思いますが、今回はWindowsに対してです。

2. Fabricのインストール

Welcome to Fabric! - http://www.fabfile.org/

オフィシャルサイトにもあるようにpipによるインストールが推奨されています。

$ pip install fabric
※あらかじめWindows Serverで動作するsshサーバーをインストールしておくことと、
スタートアップ時にsshサーバーを起動させておく必要がありますが、本エントリーでは説明を割愛させていただきます。

3. fabfile.pyのソース

3台のマシンに対して並列処理を走らせる例です。

# -*- coding: utf-8 -*-  
from fabric.api import *
from fabric.colors import *
from fabric.decorators import runs_once, roles
from fabric.contrib.console import confirm

import datetime
import locale
import os
import sys

# 1  
env.roledefs = {'clients':
        [
            "192.168.15.1",
            "192.168.15.2",
            "192.168.15.3",
        ],
    }
env.user = 'wonder'
env.password = 'pass'
env.ftproot_path = 'c:\\ftproot\\'
env.shell='cmd.exe /c'
env.port = 22
env.parallel = True

# 2  
@task
def help():
    print(yellow("fab deploy"))
    print(yellow("fab start"))
    print(yellow("fab stop"))
    print(yellow("fab reboot"))

# 3  
def _run_shell_command(command):
    return run(command, pty=False)

# 4  
@roles('clients')
@task
def reboot():
    _run_shell_command("shutdown -r -d p:0:0")

# 5  
@roles('clients')
@task
def deploy():
    with cd(env.ftproot_path):
        put("./hoge.zip")
        _run_shell_command("{0}UnZipper.exe {0}hoge.zip".format(env.ftproot_path))

# 6  
@roles('clients')
@task
def start():
    _run_shell_command("{0}start.bat".format(env.ftproot_path))

# 7  
@roles('clients')
@task
def stop():
    _run_shell_command("{0}stop.bat".format(env.ftproot_path))
# 1

操作するWindows ServerのIP、sshの接続情報、ftpサーバーのルートパスを設定します。
Cドライブ直下にFTPサーバーのルートディレクトリ、ftprootがあるという仮定です。

今回はWindowsなのでcmd.exeをシェルに指定します。(デフォルトはbashです。)
env.parallel = Trueとすることですべてのタスクを並列実行することができます。

# 2

ヘルプ情報です。実行方法を忘れないために。

# 3

渡されたコマンドを実行します。

# 4

Windowsを再起動(計画済)します。

Fabricではrolesデコレータで各タスクにロールを紐付けられます。
これによってタスクごとに実行するマシンを指定することができます。

# 5

Windows Serverに架空のzip解凍ソフトUnZipper.exeがあるとして、
SFTP転送したhoge.zipをUnZipper.exeで解凍する作業です

# 6

あらかじめ用意したstart.batを開きます。

# 7

6と同様です。

採用情報

ワンダープラネットでは、一緒に働く仲間を幅広い職種で募集しております。

-エンジニア
-

© WonderPlanet Inc.