generated at
fabric実行環境をdocker内に構築してローカルPCからリモートサーバにコマンドを投げる
fabric自体についてはfabric参照
ソース全体はこちら

fabricの基本的な使い方
python2系をインストール
pip installでfabric 2未満をインストール
fabric2系からはpython3でないと動かないため
fabfile.pyというソースに実行させたいタスクを記述
SSH設定をfabコマンドに指定してタスク関数を実行

上記の基本的な使い方をdocker内で完結させる

docker内で完結させる場合の手順
Dockerイメージのビルド
Dockerfile内で前述のpython環境構築
ソースコード配置先ディレクトリの作成
WORKDIRの変更
docker run
SSH設定ファイルのディレクトリをコンテナ内にボリューム
fabfile.pyのディレクトリをコンテナ内にボリューム
実行したいコマンドをdocker runに渡す

ということでいざ環境構築

環境構築
docker環境用意
Dockerfile
FROM python:2.7 RUN pip install 'fabric<2' RUN mkdir /root/fabric WORKDIR /root/fabric
fabfile.py準備
src/fabfile.py
#!/usr/bin/env python2 # -*- coding: utf-8 -*- from fabric.api import run, env env.use_ssh_config = True def local(): """ローカル環境""" pass def development(): """開発環境""" pass def production(): """本番環境""" pass def deploy(): """デプロイ""" run("uname")
Dockerコンテナのビルドとfabricの実行用スクリプト
fabctl.sh
#!/bin/bash set -eu docker build . -t fab docker run \ -v `pwd`/src:/root/fabric \ -v $HOME/.ssh:/root/.ssh \ -it fab "$@"
環境構築が完了すると下記のようになる
dir
. |-- Dockerfile |-- README.md |-- fabctl.sh `-- src `-- fabfile.py 1 directory, 4 files

fabric実行
./fabctl.sh fab -H {接続先} deploy
複数の環境に実行する場合は ./fabctl.sh fab -H {接続先1},{接続先2} deploy