fabric実行環境をdocker内に構築してローカルPCからリモートサーバにコマンドを投げる
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環境用意
code:Dockerfile
FROM python:2.7
RUN pip install 'fabric<2'
RUN mkdir /root/fabric
WORKDIR /root/fabric
fabfile.py準備
code:src/fabfile.py
# -*- 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の実行用スクリプト
code:fabctl.sh
set -eu
docker build . -t fab
docker run \
-v pwd/src:/root/fabric \
-v $HOME/.ssh:/root/.ssh \
-it fab "$@"
環境構築が完了すると下記のようになる
code: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