Fabricインストール

自分用にｃ⌒っﾟдﾟ)っφ　ﾒﾓﾒﾓ...

# document

* 日本語
[https://fabric_ja.readthedocs.org/en/latest/installation.html](https://fabric_ja.readthedocs.org/en/latest/installation.html)

# python バージョン確認

```
] python -V
```

小文字の-vオプションだとverboseになる。
versionオプションは大文字で-V

# setuptoolsインストール
https://pypi.python.org/pypi/setuptools#cygwin-mac-os-x-linux-other

```
] wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg#md5=fe1f997bc722265116870bc7919059ea

] sudo sh setuptools-0.6c11-py2.7.egg
```

# pipインストール
http://www.pip-installer.org/en/latest/installing.html#python-os-support


```
$ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ ] python get-pip.py
```

# fabric インストール

> In order for Fabric’s installation to succeed, you will need four primary pieces of software:

> * the Python programming language;
> * the setuptools packaging/installation library;
> * the Python paramiko SSH2 library;
> * and paramiko‘s dependency, the PyCrypto cryptography library.

> and, if using the parallel execution mode:

> * the multiprocessing library.

> Please read on for important details on each dependency – there are a few gotchas.

Fabricのインストールのために、4つのsoftwareが必要で、ついでに平行処理を行おうと思ったら 1つ平行処理ライブラリが必要らしい。
なので、順番に取得して行く。
まぁ、python自体はさすがにもう持ってるから要らんけどさ。
あと、setuptoolsもさっきインストールしたな。

# PyCrypto インストール
ここまでの流れで必要なSSH2のクライアント自体は入ってるっぽいんだけど、SSH2クライアントが利用する暗号ライブラリのPyCryptoが入ってないので、インストールする。

```
pip install pycrypto
```

https://www.dlitz.net/software/pycrypto/

エラー出る場合

```
# ubuntu 
sudo apt-get install python-dev
# cent
yum install python-devel
```


gccとかでエラーが出る場合はここを参照

* pycryptoのubuntuへのインストール
http://stackoverflow.com/questions/11596839/install-pycrypto-on-ubuntu

# Fabric インストール

> Fabric is best installed via pip (highly recommended) or easy_install (older, but still works fine)

pipを利用したインストールの方が推奨されているらしい

```
] pip install fabric
```

これでOK

## 動かしてみる

試しに、`ls`コマンドを実行してみる。

```fabfile.py
from fabric.api import local

def local_ls():
  local('ls /sbin')
```

```
] fab local_ls

[localhost] local: ls /sbin
acpi_available	 dumpe2fs      fstab-decode	  iptables	    lvmconf	 mkfs.ext3	   mount.ntfs-3g  pvck	      rpc.statd		 swapon			vgconvert
agetty		 e2fsck        fstrim		  iptables-restore  lvmdiskscan  mkfs.ext4	   mount.vboxsf   pvcreate    rtacct		 switch_root		vgcreate
apm_available	 e2image       getty		  iptables-save     lvmdump	 mkfs.ext4dev	   nameif	  pvdisplay   rtmon		 sysctl			vgdisplay

Done.
```

### 特定のホストに対して操作

```fabfile.py

from fabric.api import env,run

# ホスト設定 リスト型
env.hosts = [testhost]
# パスワード設定 ディクショナリ型で指定 {host : pass}
env.passwords = {'localhost': '{YOUR_PASSWORD}'}

def run_ls():
  run('ls /sbin')
```

```
] fab run_ls

[localhost] Executing task 'run_ls'
[localhost] run: ls /sbin
[localhost] out: acpi_available	 dumpe2fs      fstab-decode	  iptables	    lvmconf	 mkfs.ext3	   mount.ntfs-3g  pvck	      rpc.statd		 swapon			vgconvert
[localhost] out: agetty		 e2fsck        fstrim		  iptables-restore  lvmdiskscan  mkfs.ext4	   mount.vboxsf   pvcreate    rtacct		 switch_root		vgcreate
[localhost] out: apm_available	 e2image       getty		  iptables-save     lvmdump	 mkfs.ext4dev	   nameif	  pvdisplay   rtmon		 sysctl			vgdisplay


Done.
Disconnecting from localhost... done.
```

こんな感じで、`ls /sbin`の実行結果を吐き出してくれるはず。