[1] install PY2 PY3 Fabric & Invoke Quick Guide Invoke : Python で記述するタスクランナー Fabric : SSH を使うデプロイタスクランナー Fabric, Invoke 2018 Jeff Forcier. BSD 2-Claus

Similar documents
ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

クラウド内の Java - 動画スクリプト 皆さん こんにちは Steve Perry です 私たちが作成した人事アプリケーションを覚えていますか? 今回は そのアプリケーションをクラウド内で実行しましょう コードは GitHub の

Ansible

スピーカースライド作成前の確認シート例

プレポスト【解説】

スライド 1

本チュートリアルについて 14 部構成 比較的簡単なトピックから 各回 プログラミング言語 任意 チュートリアルで 新しい内容 宿題 プログラミング演習 次の週 結果について発表 もしくは話し合いをする スライドは Python で Python, C++, Java, Perl についての質問い答

+ Octopress + GitHubPages でブログを作成 Name: さりんじゃー

目次 1. はじめに 本書対象者 PALRO のアプリケーションについて Ubuntu 8.04LTS の入手について Linux 上での開発環境の構築 事前準備 Ubuntu のインストール..

7th CodeGear Developer Camp

Microsoft PowerPoint _2.プログラミングの基礎_final.pptx

appli_HPhi_install

7th CodeGear Developer Camp

bash on Ubuntu on Windows bash on Ubuntu on Windows bash on Ubuntu on Windows bash on Ubuntu on Windows bash on Ubuntu on Windows ˆ Windows10 64bit Wi

インテル(R) Visual Fortran コンパイラ 10.0

GitLab + Dokku で作る CI/ CD 環境 Kazuhiro NISHIYAMA 第 78 回 Ruby 関西勉強会 2017/07/29 Powered by Rabbit 2.2.0

利用者

Si 知識情報処理

Microsoft PowerPoint _2.プログラミングの基礎_final

ASP.NET 5 Web 開発 ~ フレームワーク編 ~

8. Windows の補足情報 コマンドの使用についての説明です Windows からのファイル直接印刷 Windows でコマンドを使用したファイル直接印刷の方法についての説明です この機能はネットワーク接続をしているときに使用できます この方法で印刷できるファイルは 本機が搭載しているエミュレ

Helix Swarm2018.1アップグレード手順

Python によるジオプロセシング スクリプト入門

デュアルウェア講習会課題 5 会津大学講習会 簡単な IoT を作成 2018 The University of Aizu

EV3 の初期設定

AWS Deck Template

PowerPoint Presentation

DocuPrint 4050 PostScript ユーザーズガイド

Taro-ラズパイのインストールと設定

PowerPoint Presentation

Red Hat Enterprise Linuxのcron(8)デーモンにデフォルト定義されたtmpwatch命令の動作による、WebOTXのトラブル対処方法

Anaconda x86_64 版バージョン の インストールとパッケージの追加 最終更新 : 2018 年 2 月 10 日 URL: Anaconda は,Py

slide5.pptx

Microsoft Word - USB60F_Raspi_ doc

Python によるジオプロセシング スクリプト入門

AWS Deck Template

Java Bridgeを利用した他言語によるデータロード&プロットデモ

CLAIM接続利用手順

GettingStartedTK2

HARTING Node.js Environment for HAIIC MICA 日本語 HARTING Node.js Environment for HAIIC MICA HARTING IT Software Development Marienwerder Str. 3, E

目次 1. Serverspec とは 1.1. Serverspecとは 1.2. Serverspecで出来る事 2. セットアップ 2.1. 必要なもの 2.2. インストール 3. デモ 3.1. デモ環境について 3.2. テスト対象サーバーの登録 3.3. サンプルテストの中身 3.4.

Helix Swarm2018.1インストール手順

CLI Python モジュール

Microsoft Word - CygwinでPython.docx

CLAIM接続利用手順

Anaconda (2019/7/3)

ADempiere (3.5)

発環境を準備しよう2 章開Eclipseをインストールしようそれでは Eclipseをセットアップしましょう Eclipseは Eclipse Foundationのサイトからダウンロードできます ダウンロードのページを開くと いく

PowerPoint Presentation

目次 1. 本書の役割 Windows Agent サポート OS とエディション サポート言語 Agent 稼働前提条件 Azure SDK リリース済み Windows Agent のサポート

Elastic MapReduce bootcamp

Total View Debugger 利用の手引 東京工業大学学術国際情報センター version 1.0

9 rbenv rbenv ruby 9.1 rbenv rbenv rbenv ruby ruby-build ruby 9.2 rbenv macos.bash_profile ~/.bash_profile ~/.bash_profile.bak $ touch ~/.bash_profile

Intl WebStorm Google Chrome (64-bit) Node.js git for Windows 開発環境バージョンアップの影響 1 章変更なし 2 章変更なしソフトウェアのバージョン指定 3 章

ServerView ESXi CIM Provider / ServerView RAID Core Provider VMware vSphere ESXi 6.0 インストールガイド

0_テキストマイニング環境構築_mac

PowerPoint プレゼンテーション

目次 1. はじめに 本文書の目的 前提条件 略語 事前準備 ホスト名の名前解決 Linux 版パッケージ システム要件 ソフトウェア要件 パッケージ構成

ゲームプログラミング講習 第0章 導入

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse

演習に必要な

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

OpenAM 9.5 インストールガイド オープンソース ソリューション テクノロジ ( 株 ) 更新日 : 2013 年 7 月 19 日 リビジョン : 1.8

スライド 1

19 ステップで 2 大人気スクリプト言語を学ぶ GUI のあるアプリを作る STEP11 から STEP12 までまとめ 1.Python での GUI アプリ作成 Python は標準ではグラフィックスの機能を持ちませんが ライブラリを使うことで GUI のアプリを作成することができる そこで

スライド 1

An introduction and future of Ruby coverage library

intra-mart ワークフローデザイナ

Salesforce DX 設定ガイド

C#の基本

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

改訂履歴 初版 2004 年 1 月 23 日 新規作成 2 版 2004 年 2 月 3 日 フォントの設定 を追加 3 版 2004 年 7 月 13 日 リソースファイルのダウンロード を追加 バージョン番号表記を変更 4 版 2005 年 11 月 21 日 リソースファイルのダウンロード

IronPython による柔軟なゲーム開発 筑波大学 AmusementCreators

第5回 マインクラフト・プログラミング入門

KADIAS Mac OS X 用事前環境準備手順書

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

GSLetterNeo vol 年 7 月 形式手法コトハジメ TLA + Toolbox を使って (2)- 熊澤努 sra.co.jp はじめに GSLetterNeo Vol.130 で TLA + Toolbox を紹介しました 今回からより詳しく T

Microsoft PowerPoint - TwitterInsight edit.pptx

メソッドのまとめ

システムインテグレータのIPv6対応

Microsoft PowerPoint - A1-2_株式会社ネクスト_藤澤正通_S _005.pptx

2

はじめに

VPN 接続の設定

Raspberry Pi 3(Raspbian) での Actian Zen Edge 使用 株式会社エージーテック 2018 年 7 月 5 日

目次 1. 動作環境チェック 動作必要環境 Java のインストール Java のインストール Firebird のインストール Firebird のインストール Adobe Reader のインストール

PowerPoint プレゼンテーション

intra-mart Accel Platform — OData for SAP HANA セットアップガイド   初版  

McAfee Firewall for Linux リリース ノート

ServerView ESXi CIM Provider VMware vSphere ESXi 6.0 インストールガイド

PowerPoint プレゼンテーション

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft Word - PV-WAVE12 0_ReleaseNotes.docx

NEC Express5800 シリーズ COBOL Enterprise Edition クライアントライセンス V1 COBOL Enterprise Edition クライアントライセンス V1 (1 年間保守付き ) COBOL Enterprise Edition クライアントライセンス

IBM Bluemix で WordPress 無料の WordPress 環境を構築する 1

AWS Deck Template

Red Hat OpenShift上でのInterstage Application Serverの動作手順(Java EE 7編)

CONTEC DIOプロバイダ ユーザーズガイド

Red Hat OpenShift上でのInterstage Application Serverの動作手順(Java EE 6編)

PowerPoint プレゼンテーション

Transcription:

[1] install PY2 PY3 Fabric & Invoke Quick Guide Invoke : Python で記述するタスクランナー Fabric : SSH を使うデプロイタスクランナー Fabric, Invoke 2018 Jeff Forcier. BSD 2-Clause "Simplified" License $ pip install invoke fabric $ pip3 install invoke fabric [2] Invoke のタスクの定義 from invoke import * ファイル名は "tasks.py" タスク関数に を付ける def install(c): c.run("pip install -r requirements.txt") [3] タスクの実行 $ invoke -e install $ invoke -e build_lint_package $ invoke -l [4] 繰り返し操作 tasks.py のあるディレクトリで実行タスク名をスペースで区切る "-e" で実行するコマンドを表示 "-l" でタスクの一覧を表示 packages = ["Client", "Server", "Tester"] for 文で書くだけ! for name in packages: c.run(f"go build cmd/{name} -o out/{name}") 1

[5] タスクの依存関係 c.run("go build -o out") (build) def test(c): c.run("go test") 依存している関数を の引数に指定する (test) c.run("zip out.zip out/") 依存順序 build test release $ invoke -e release go build -o out go test zip out.zip out/ 最終成果物のタスクを指定依存順序どおりに実行 [6] 終了コードでの分岐 if c.run("test -e./node_modules", warn=true).failed: c.run("npm install") if c.run("test -e out", warn=true).ok: c.run("rm -rf out") c.run("tsc") 通常は異常終了すると停止 warn=true を付けると処理続行 bool 型 ok failed プロパティを元に if 文で記述できる 2

[7] ディレクトリ移動 with c.cd("client"): c.run("go build") c.run("go test") with c.cd("server"): c.run("go build") c.run("go test") with 句のコンテキストのみディレクトリを移動する $ invoke -e build cd client && go build cd client && go test cd server && go build cd server && go test [8] パラメータを与える def release(c, gs_path, force=false): if force: c.run("git push -f") else: c.run("git push") r = c.run(f"gsutil rsync. {gs_path}") $ invoke -e release --gs-path gs://release-gcs/ git push gsutil rsync. gs://release-gcs/ $ invoke -e release --gs-path gs://release-gcs/ --force git push -f gsutil rsync. gs://release-gcs/ 関数の引数がそのままタスク実行時の引数に初期値も設定できるなお "_" が "-" に置き換えられる 3

[9] sed の代わりに使う r = c.run("cat deployment.yaml") yaml = r.stdout.replace(" IP ", "3.4.5.6") # まだ標準入力をそのまま渡せないのでファイルに出力 with os.open("_deployment.yaml") as f: f.write(yaml) c.run("kubectl apply -f _deployment.yaml") [10] jq の代わりに使う import json 戻り値に stdout stderr があり Python の文字列として処理できる Python のライブラリを使えば json は辞書型で扱える r = c.run("gcloud output=json compute instances list") l = json.loads(r.stdout) for ins in l: name = ins["name"] c.run("gcloud compute instances delete {name}") 4 #!/bin/bash 一方 Shell Script なら gcloud --format=json compute instances list jq.[].name -r while read name do gcloud compute instances delete $name done

[11] サーバに接続する Fabric のタスク from fabric import * c.put("dist.zip", "app/") ファイル名は "fabfile.py" タスク関数に を付けるだいたい Invoke と同じ put get sudo などが使える with c.cd("dist"): c.run("unzip dist.zip") c.sudo("systemctl restart serverapp") $ fab -e release -H ec2-users@xxx.amazonaws.com "-H" でホスト名を指定する [12] Invoke タスクの中で Fabric でデプロイする from invoke import task from fabric import Connection fabric.connection を使う c.run("go build -o out/server") (build) conn = Connection("release -H ec2@xxxxxxx") conn.put("out/server", "app/") conn.sudo("systemctl restart serverapp") $ invoke -e release 5

[13] 設定ファイルを使う project: "nnyn-dev" zone: "asia-northeast1-b" 開発環境用 dev.yaml project: "nnyn-prod" zone: "nnyn-prod-bucket-a" 本番環境用 prod.yaml from invoke import task invoke.context.config で設定にアクセスする def delete_instance(c): l = c.run(f"gcloud --project {c.config.project} compute instances list --zones={c.config.zone}").stdout for i in l.split("\n") c.run(f"gcloud compute insances delete {i}") $ invoke -e -f dev.yaml delete-instance gcloud --project nnyn-dev compute instances list --zones=asia-northeast1-b $ invoke -e -f prod.yaml delete-instance gcloud --project nnyn-prod compute instances list --zones=asia-northeast1-a [14] 一次情報 6 Invoke main http://www.pyinvoke.org/ Invoke doc http://docs.pyinvoke.org/en/latest/ Fabric main http://www.fabfile.org/ Fabric doc http://docs.fabfile.org/en/latest/

[15] 使い分け Maven Gradle npm Gulp msbuild その言語 プラットフォームに依存したビルドのタスクランナー Make Make 汎用ビルドタスクランナー依存関係が記述できるファイル単位の成果物管理のため 合わないケースもある ShellScript Shellscript Unix 環境で必ず動作できる汎用スクリプト環境構築が不要ちょっとした文字列操作にも sed など Unix ツールが必要 Windows では基本動かない (Cygwin WSL が必要 ) Invoke Invoke Python で動く汎用タスクランナー Python 言語のため文字列操作等が豊富パッケージのインストールが必要依存関係が記述できる MacOS Linux Windows で同じように扱えるプログラミング言語のため 好きなレベルの抽象化ができる単純なため習得が楽小さい用途でも使い始められる Ansible, Chef... Chef サーバの構成管理ツールサーバの状態の定義を記述するちょっとしたリリース用途にはオーバースペックなことも Fabric SSHを用いて リモートサーバへのデプロイ及び タスクを実行したい場合に使う特定のポートを繋げてコマンドを実行することもできる Fabric3 Fabric v1のpython3 対応 folkの名前今のv2からpython3 対応済みなので無視すること 7

Visual Studio Code デバッグ技術 技術書典 3 で頒布した本を 2018 年秋現在の状況に改定して出版! Ruby React など多くを追加! Golang AppEngine(Go) Python C# NodeJS TypeScript Chrome Electron React Ruby C/C++ Java PHP Bash NOW PRINTING 出版社 : インプレス R&D 出版形式 :Amazon プリントオンデマンド Kindle 他 Amazon 他で近日発刊! ShellScript の代わりに Fabric & Invoke Python タスクランナーを活用する技術 技術書典 5 にて頒布 80P まるごと全部 Fabric&Invoke だいたいこの Paper で紹介したけど 他に 入力が要るコマンド /NameSpace/ ポート接続 構造化と性能の間を Golang で攻める技術 (+WebWorker 活用技術 ) 技術書典 4 にて頒布 Golang を選ぶからには信頼できる性能がほしい Golang で 性能を取りつつ構造化を図るとどの程度のコストがかかるのかを 実測して見極めて考える本 +WebWorker でのタスク並列化の有効性の検証記事 この Paper を書いた人 74th ( ななよん ) twitter github : @74th 下 2 つは Booth にて販売中! https://74th.booth.pm/ 8