Python学習【365日チャレンジ!】250日目のマスターU(@Udemy11)です。
思い切って、ハウズオブフレーバーズのチョコレートケーキを購入しました。
ハウスオブフレーバーズは知る人ぞ知る日本一高いチーズケーキを販売する鎌倉のお店なのですが、チーズケーキはホールで1万5千円ほどします。
チョコレートケーキは少しリーズナブルですが、私にとっては、ちょっと贅沢な買い物でした。
なんとも言えない濃厚でしっとりした味わいでかなり満足したので、、また何かの機会に注文しようと思います。
それでは今日もPython学習を始めましょう。
昨日の復習
昨日は、Fabricの操作で処理を一度だけ行うruns_once
の使い方を学習しました。
一度だけ処理されるのですが、複数のサーバーで処理するコードだとしても、最初に読み込まれるサーバーのみでコードが実行されました。
それぞれのサーバーで初期化を行う作業では使えないので注意が必要です。
詳細については、昨日の記事を参考にしてみてください。
今日は、*(アスタリスク)を使ってFabricのメソッドをまとめて読み込んでコードを記述してみます。
*アスタリスク
これまでFabricについてfabric.api
からいくつかのモジュールを読み込みましたが、*(アスタリスク)を使うことで、ここにインポートすることなくモジュールを使うことができます。
from fabric.api import *
このコードでこれまでに学習してきたrun
やenv
、roles
、task
やparallel
などを使うことができるようになります。
local,put,cd,exists
実際に*
でモジュールをインポートして、local
とput
を使ってみます。
from fabric.api import *
from fabric.contrib.files import *
env.hosts = ['root@172.16.200.101:22']
env.passwords = {
'root@172.16.200.101:22': 'root',
}
def files():
run('ls -al')
@task
def clean_upload():
local('ls -a')
put('fabfile.py', '/tmp/fabfile.py')
with cd('/tmp'):
run('pwd')
run('ls -a')
print(exists('/tmp/fabfile.py'))
最初にfabric.api
とfabric.contrib.files
から*
でメソッドをインポートします。
今回は、4行目から7行目のenv
でserver1
だけを指定しています。
12行目で@task
を使っているので、10行目と11行目のfiles()
は読み込まれません。
13行目の関数clean_upload()
では、
- ローカルでコマンド
ls -a
を実行 - ローカルの
fabfile.py
をserver1
の/tmp/
にコピー server1
の/tmp
に移動- コマンド
pwd
で作業ディレクトリの絶対パスを表示 - コマンド
ls -a
でファイル一覧を取得 /tmp/fabfile.py
が存在するかどうかを出力
という作業を実行しています。
ターミナルでfab clean_upload
を実行すると、次のような実行結果が表示されます。
まとめ
fabric.api
には、これまでに学習したメソッド以外もあるので、ネットで調べて試してみてください。
今日で、Python学習も250日になりましたが、結構頑張って継続してこれたな〜と思っていますが、まだまだ学習しないといけないことはたくさんあります。
Fabricだけでも使い方はたくさんありすぎて、全てを理解するのは至難の技なので、全てを理解するのではなく、公式ドキュメントなどで、自分が作りたいプログラムに必要なコードを調べて使うことで、徐々に必要なコードを覚えていきましょう。
慌てず、焦らず、一つづつ学んでいきましょう。
それでは明日もGood Python!