object | detail |
---|---|
chage date | 2018/5/12 |
version | fabic 2.0.0 |
os | ubuntu 18.04 |
python | 3.6.5 |
順次まとめてく
fabric2はPython2.7/Python3.4+でうごく
https://pypi.org/project/fabric2/
$ pip install fabric2 # fabric2を指定する
$ pip freeze
asn1crypto==0.24.0
bcrypt==3.1.4
cffi==1.11.5
cryptography==2.2.2
fabric2==2.0.0
idna==2.6
invoke==1.0.0
paramiko==2.4.1
pyasn1==0.4.2
pycparser==2.18
PyNaCl==1.2.1
six==1.11.0
fabric/fabric#1740 どうやらwheelの作り方のもんだいっぽい
http://docs.fabfile.org/en/latest/upgrading.html
fab2
になったっぽい
from fabric.api import local
def hello():
local("uname -s")
$ fab2 hello
fab2 hello
Traceback (most recent call last):
File "/home/masahito/python-env/fabric2/bin/fab2", line 11, in <module>
load_entry_point('fabric2==2.0.0', 'console_scripts', 'fab2')()
File "/home/masahito/python-env/fabric2/lib/python3.6/site-packages/invoke/program.py", line 321, in run
self.parse_collection()
File "/home/masahito/python-env/fabric2/lib/python3.6/site-packages/invoke/program.py", line 399, in parse_collection
self.load_collection()
File "/home/masahito/python-env/fabric2/lib/python3.6/site-packages/fabric2/main.py", line 74, in load_collection
super(Fab, self).load_collection()
File "/home/masahito/python-env/fabric2/lib/python3.6/site-packages/invoke/program.py", line 588, in load_collection
module, parent = loader.load(coll_name)
File "/home/masahito/python-env/fabric2/lib/python3.6/site-packages/invoke/loader.py", line 75, in load
module = imp.load_module(name, fd, path, desc)
File "/home/masahito/python-env/fabric2/lib/python3.6/imp.py", line 235, in load_module
return load_source(name, filename, file)
File "/home/masahito/python-env/fabric2/lib/python3.6/imp.py", line 172, in load_source
module = _load(spec)
File "<frozen importlib._bootstrap>", line 684, in _load
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/masahito/src/python/try-fabric2/fabfile.py", line 1, in <module>
from fabric.api import local, run, put
ModuleNotFoundError: No module named 'fabric'
$ cat fabfile.py
from invoke import task
@task
def hello(c):
c.run("uname -s")
$ fab2 hello
Linux
invoke
だと tasks.py
に書くのだけど、これを fabfile.py
に名前をかえて fab2
から呼ぶことで ssh経由で呼べるようになる
fab2 -H 192.168.0.1 hello
ってやると
ssh経由で helloを実行することが可能