おはげようございます。
tl;dr
fabric で何がしたかったか?
- ssh の config ファイルに定義したホスト名を利用したい
- ついでに ssh の config ファイルのデフォルト
(.ssh/config)
以外を利用したい
参考
http://fabric-ja.readthedocs.org/ja/latest/usage/env.html#the-environment-dictionary-env
超ざっくり fabric とは…
- Python 製のデプロイツール
- Ruby 製で言うと Capistrano にあたると思っている
解
サンプル(1)
ssh の config ファイル(~/.ssh/config)を利用したい場合。
from fabric.api import local, run, put, env env.use_ssh_config = True def upload(): put('from/file', 'to/file')
env.use_ssh_config = True
を指定する
以下、雑なデモ。
# config ファイルを確認 $ cat ~/.ssh/config Host centos01 HostName 127.0.0.1 Port 32768 IdentityFile /path/to/key User ansible # fabric スクリプトを確認 $ cat test.py from fabric.api import local, run, put, env env.use_ssh_config = True def upload(): put('sample', 'sample') # デプロイ(ファイルをアップロード) $ fab -H centos01 -f test.py upload [centos01] Executing task 'upload' [centos01] put: sample -> sample Done. Disconnecting from ansible@127.0.0.1:32768... done. # 確認 $ ssh centos01 'ls' sample
サンプル(2)
ついでに config ファイルを別ファイルに指定する場合。
from fabric.api import local, run, put, env env.use_ssh_config = True env.ssh_config_path = "/path/to/other_ssh_config" def upload(): put('from/file', 'to/file')
env.use_ssh_config = True
を指定するenv.ssh_config_path = "/path/to/other_ssh_config"
で別ファイルを指定する
以下、雑なデモ。
# config ファイルを確認 $ cat ~/.ssh/sample_config Host centos01 HostName 127.0.0.1 Port 32768 IdentityFile /path/to/key User ansible # fabric スクリプトを確認 $ cat test.py from fabric.api import local, run, put, env env.use_ssh_config = True env.ssh_config_path = "~/.ssh/sample_config" def upload(): put('sample', 'sample') # デプロイ(ファイルをアップロード) $ fab -H centos01 -f test.py upload [centos01] Executing task 'upload' [centos01] put: sample -> sample Done. Disconnecting from ansible@127.0.0.1:32768... done.
以上。