konchangakita

KPS IoT(旧Xi IoT)を一番楽しんでるブログ 会社の看板を背負いません 転載はご自由にどうぞ

VS Code で Azure CLI してみる

せっかく Azure のお勉強をしはじめたので、Azure Cloud Shell のコマンドを VS Code から実行できる環境を作ってみたいとみたいと思います

Azure Cloud Shell は、通常 Azure ポータル上で実行する CLI のやつです
f:id:konchangakita:20210730123854p:plain:w400

Windows に Azure CLI をインストールする(Windows版)

まずは VS Code を使う マシン に Azure CLI をインストールします

MS公式のココの手順に沿っていきます
Windows での Azure CLI のインストール | Microsoft Docs

1.まずはインストーラーをダウンロードして

f:id:konchangakita:20210729222746p:plain:w350

2.実行してインストール

今回のファイル名は 「azure-cli-2.26.1.msi
f:id:konchangakita:20210729223932p:plain:w200 f:id:konchangakita:20210729223944p:plain:w200

5分くらいでインストールは完了しました

3.Windows で Azure CLI の実行

これで Azure CLI が実行できる環境が整ったので、コマンド実行を試してみましょう

Windows Terminal(PowerShellでよい)から Azure ログイン

PS > az login

するとコマンドを実行すると、ブラウザが立ち上がって Azure のアカウントを求められます
f:id:konchangakita:20210729232609p:plain:w300 
    ↓   ↓   ↓
f:id:konchangakita:20210730124358p:plain:w300

ログインすると、Azure CLI ドキュメントページにリダイレクトされつつ
Azure コマンド ライン インターフェイス (CLI) - 概要 | Microsoft Docs

コマンドライン上でもログイン情報がつらつらと出てきます
f:id:konchangakita:20210729233017p:plain

サブスクリプションが複数ある場合、まず切り替えてみます
サブスクリプションを確認して

> az account list --output table

f:id:konchangakita:20210730130409p:plain

切り替える

az account set --subscription "サブスクリプション名"

これで、Windowsローカルマシンから Azure CLI が実行できる環境が準備できました
続いて、VS Code から Azure CLI していきましょ

VS Code で Azure CLI

VS Code拡張機能を追加していくことで、Azureアカウントと連携して、VS Code上から Azure CLI が実行できるようになります

Azure アカウント連携

まずは、VS Code に「Azure Account」の拡張機能をインストール
f:id:konchangakita:20210730142229p:plain


これで、Auzre へのログイン、サブスクリプションの切り替えはすべてGUIで行う事ができます

コマンドパレット [F1] - [Azure Sign in] すると PowerShell で az login を実行したのと同じ感じでブラウザが立ち上がりログインするアカウントを選択します
f:id:konchangakita:20210730142634p:plain


サブスクリプションの切り替えは、アカウント選択後、画面下の 「Azure: アカウント名」をクリックするとサブスクリプションを選択できます。楽チン!
f:id:konchangakita:20210730150840p:plain

Azure CLI拡張機能

VS Code 自体に PowerShell ターミナルがついているので、もちろんそこで「az ~~」って、コマンドを打ち込んでも良いわけですが、せっかくの高機能エディタなので便利に使ってみます

Azure CLI Tools拡張機能をインストールします
f:id:konchangakita:20210730202752p:plain

新しくファイルを開いて、何か Azure cli コマンドを記述して「Azure CLI scrapbook」形式で保存します
f:id:konchangakita:20210730214802p:plain:w500

そうするとコマンドパレットに Azure CLI メニューが 増えています
 ・Azure CLI: Run Line in Terminal - ターミナル内で実行して表示
 ・Azure CLI: Run Line in Editor - 別画面のエディタに実行結果を表示
 ・Azure CLI: Toggle Live Query - ちょっとよくわかんない
f:id:konchangakita:20210730204414p:plain

はじめは、コマンドラインで直打ちでええやんと思ってましたが、コピペとか考えたり、エディタに出力結果が出るのって結構良いです


さいごに

まだまだ Azure Cloud Shell はなんだかメンドクサイイメージあったのですが、これならいろいろ試しながら使えるので捗りそう

Azure Solutions Architect Expert(AZ-303/AZ-304)お勉強メモ

f:id:konchangakita:20210717011630p:plain:w180

これだけ覚えてたら、勝てる、、、わけもなく
こんだけ知らなかったってこと
裏を返すと、ここに書いてることは当然理解して周辺情報を説明できることは必須desu!

では、いってみよー

自分の備忘録用 AZ-303 / AZ-304 対策ごちゃまぜメモ

■ログ/監視 関連
・アクティビティログ
保存期間 90日
リソースデプロイメントログ

・Azure Monitor
Insights: Application, Container, VM, Monitoring Solution
Visualize: Dashboards, Views, Power BI, Workbooks
Analyze: Metric Analytics, Log Analytics
Respond: Alerts, Auto scale
Integrate: Logic Apps, Export APIs

・Azure Performance Diagnostics
Azure Monitor エージェント
VM のメトリックとログを監視(Azure VMのみ、Log Analyticsだと他にもいろいろ)


■ポリシー
・Azure ポリシー
コンプライアンス評価
Azure RBAC は、さまざまなスコープでのユーザー操作の管理にあります。アクションの制御が必要な場合は、Azure RBAC が使用に適したツールになります。 あるユーザーがアクションを実行するためのアクセス権を持っていても、結果としてリソースが準拠していない場合、その作成や更新は Azure Policy によってブロックされます。


仮想マシン スケール セット
同じ VM のセットをデプロイして管理するために使用できる Azure コンピューティング リソース
水平スケーリング:VMの増減
垂直スケーリング:メモリ、CPU 電源、ディスク、VM を再起動する必要がある
スケジュールスケーリング、自動スケーリング(CPU、ネットワーク、ディスクIO/キュー)

・スケールセットの設定方法
1.sysprep
2.CLIで一般化
3.スケールセットを作成


■開発向け
・Azure Batch
何十、何百、何千もの VM にスケーリング
1.コンピューティング VM のプールを自動的に開始する。
2.アプリケーションとステージング データをインストールする。
3.必要なすべてのタスクが含まれるジョブを実行する。
4.エラーを識別する。
5.作業を再度キューに入れる。
6.作業が完了したらプールをスケールダウンする。

・App Service
エンタープライズ レベルの Web アプリ、モバイル アプリ、API アプリを、すばやくビルド、デプロイ、スケーリング
App Service プランによって、ホストに利用されるハードウェアの量が決まる。ハードウェアが専用か共有か、予約されるメモリ量

・Webjob
再試行可能、Web アプリケーション、モバイル バックエンド、RESTful API のためのクラウドベースのホスティング サービス
・Azure Functions
コード実行に特化
従量課金サービス プラン/Azure App Service プラン

・Azure Logic Apps(開発者向け)
ワークフロー、GUI、デザイン優先
トリガー(ポーリング、プッシュ、繰り返し、手動)
Azure ロジックアプリを作成できる権限・役割は?
- contributor, Logic App Contributor


・Power Automate(ユーザ向け)
GUI

・Azure Resource Manager
宣言型のオートメーション:必要なリソースが "何" かは定義するが、それを作成する "方法" は定義しない。
必須プロパティ:name type apiVersion location properties
依存リソースの定義 depends on

・Azure Data Factory パイプライン
1 つのタスクを連携して実行するアクティビティの論理的なグループ
マッピング データ フロー:GUIでデータ変換

・Azure Data Lake Analytics
オンデマンド分析ジョブ、ビッグデータの処理


■ネットワーク
VMのPerformance Diagnostics
ネットワークトレースキャプチャ

・ピアリング
Azure 仮想ネットワーク同士をシームレスに接続
接続において、見かけ上 1 つのネットワークとして機能

VPN
サイト間、ポイント対サイト、ネットワーク対ネットワーク" 間
ポリシーベースVPN:IKEv1、静的ルーティング
ルートベースの VPN:IKEv2、動的ルーティング、オンプレデバイス用の接続方法として推奨、仮想ネットワーク間、ポイント対サイト、マルチサイト接続、ExpressRoute ゲートウェイとの共存
必要なリソース:仮想ネットワーク、GatewaySubnet、仮想/ローカル ネットワークゲートウェイ、接続
Active/Standby(デフォルト)

・EXPRESS ROUTE
99.95%
レイヤ3接続(アドレスレベル)
BGP
プライベートピアリング/MSピアリング
帯域(50M - 10G 後で縮小できない)
仮想ネットワーク(MAX 10個)

- Microsoft Office 365
- Microsoft Dynamics 365
- Azure Virtual Machines などの Azure コンピューティング サービス
- Azure Cosmos DB や Azure Storage などの Azure クラウド サービス

ExpressRoute Direct(100G)


・Traffic Manager
クライアントを特定のサービス エンドポイントの IP アドレスへ誘導
重み付けルーティング/パフォーマンス ルーティング/地理的ルーティング
可用性の向上

・Azure Load Balancer
分散モード[セッション永続化]
- 5タプルハッシュ(デフォルト):送信元IP/ポート、送信先IP/ポート、プロトコル
- 接続元 IP アフィニティ:送信元IP/ポートのみ(リモート デスクトップ ゲートウェイはこっちのみ対応)

可用性セット(99.95%):物理HWを分ける
可用性ゾーン(99.99%):DCを分ける(同一リージョン)


・Application Gateway
ラウンドロビン、WAF、L7 LB、SSLオフロード

API Management
仮想ネットワーク対応は Premium

■Azure SQL
可用性99.99%
・クエリパフォーマンスインサイト
時間のかかるクエリ特定
・エラスティックプール

ゾーン冗長:Premium サービス層の Availability Zones のサポート


■セキュリティ
・Key Vaultのアクセスポリシー
特定VMからのみシークレット登録させるには、アクセスポリシー


■ストレージ
・blob
クール:30日
アーカイブ:最低180日間保管

・Storage ATP(Advanced Threat Protection)

・Azure File sync
オンプレミスの Windows Server またはクラウド VM に多数の Azure ファイル共有をキャッシュできるサービスです

・AzCopy
Blogにup/down、ストレージアカウント間のBlob、Azure Files, AWS S3/GCP/Azure Stack
承認方法:Azure AD, SASトーク

・Azure Defender for Storage(Storage Advanced Threat Protection)
Blob と Files の脅威を検出

・Azure Import / Export
Azure データセンターにディスク ドライブを送付することで、Azure Blob Storage と Azure Files に大量のデータを安全にインポート


■Azureへの移行
評価、移行、最適化、監視
評価:検出、再ホスト、リファクタ、再設計、再構築、置換
移行:デプロイ、移行、オンプレ停止
最適化:運用コスト分析
監視:

・Azure Migrate
無償、評価
コレクターVM:検出、vCenter連携、オンプレVMの依存関係を知るにはAgentが必要
Azureポータルで評価を作成
レプリケートは100台づつ

・Azureハイブリッド特典(Azure Hybrid Benefit)
Windows Server 、 SQL ServerRedHatSUSE Linux
オンプレミスと Azure 間での 180 日間の二重使用権



■バックアップ・DR
・Azureバックアップ
オンプレはWindowsのみ、Azure VM/Files/SQL/SAP
Backupエージェント(MARS)

■Azure Site Recovery
VPN必須
Hyper-Vホストの登録
1.コンテナー登録キー(Vault registration key)ダウンロード
2.ASR Providerインストール
3.サーバ登録
4.レプリケーションポリシー設定
5.有効にする

オンプレミス Hyper-V VM から Azure へのディザスター リカバリーのサポート マトリックス
https://docs.microsoft.com/ja-jp/azure/site-recovery/hyper-v-azure-support-matrix
・OSディスク
第 1 世代の VM では最大 2,048 GB
第 2 世代の VM では最大 4,095 GB
データディスク:MAX 4TB

集中管理
オンプレミスの仮想マシンレプリケーション
Azure 仮想マシンレプリケーション
フェールオーバーの間のアプリの整合性

Recovery Services コンテナー:フェールオーバー実行時のVMが格納される
資格情報:仮想マシン共同作成者 ロールと Site Recovery 共同作成者 ロールが必要

・アプリケーション レプリケーション
ワンクリック フェールオーバー、スクリプト統合、ネットワーク マッピング

・Site Recovery を使ったVMの移行


■Azure AD
・Azure AD Connect Health
電子メール経由のアラート

・マネージドID
Azure AD認証をサポートするリソースに接続するときに使用する ID をアプリケーションに提供
開発者が安全に資格情報を格納できる Azure キー コンテナーなどのリソースにアクセスしたり、ストレージ アカウントにアクセスしたりできる
システム割当:サービス インスタンスに対して直接マネージド ID を有効、インスタンスと一緒に削除される
ユーザ割当:複数のインスタンスに適用することができる

・ハイブリッドID
パスワードハッシュ同期(PHS)、パススルー同期(PTA)、フェデレーション(AD FS)

・Azure AD Connect
実装する権限:オンプレAD:Enterprise Admins、Azure AD:Global Admin

・fault domain x update domain = サーバ数

・Azure Active Directory シームレス シングル サインオン
Azure AD Connect サーバー
サポートされている Azure AD Connect トポロジ
ドメイン管理者の資格情報がセットアップ
発信 HTTP プロキシを使用している場合は、この URL (autologon.microsoftazuread-sso.com)書いとけ

・B2C
企業-カスタマー間(B2C)のIDが提供される
OpenID Connect、OAuth 2.0、SAMLなど

・アプリケーション登録(Azure AD app registration)
アプリケーション登録して、ユーザ認証

・条件付きアクセス(conditional access policy)
ユーザー、デバイス、アプリケーション
ネームド ロケーション:名前 と IP 範囲を指定する

AKS
Azure のマネージド Kubernetes
自動スケーリング、ストレージオプション
ノード使った分、お支払い
IPアドレスのオプション有り

・コンテナレジストリ作成
az acr create --resource-group myResourceGroup --name --sku Basic
コンテナレジストリのURLは、「.azurecr.io」
docker push .azurecr.io みたいな


■その他
・Azure ブループリント(試験では青写真)
リージョン間コピーされる、

・暗号化
決定論的(determine):等値のルックアップ、結合、グループ化を実行可能
ランダム化:できない

・HTTP を使用してトークンを取得する
使用するアドレス:169.254.169.254
https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/how-to-use-vm-token

・Azure Bastion
Azure Bastion は、ブラウザーと Azure portal を使用して仮想マシンに接続できるようにするサービス
仮想マシン IP の一般公開を制限する
共有外部IPアドレスを介してRDP

・Privileged Identity Management(特権ID管理)
アクセスレビユー作成ができる


最後に

繰り返しになるのですが、MS Learnは素晴らしいコンテンツなので、勉強の入り口としてはちょうどよいです
あとは、気になったワードは MS Docs を読んで、理解して、関連知識と、Azureポータルで操作マスターしてれば間違いない(はず)

Azure の資格試験にチャレンジ

f:id:konchangakita:20210717011630p:plain:w180

必要にせまられたわけでもなく、Azure を仕事で使っているわけでもないのですが、なんとなくブログにネタにしようってレベルでチャレンジ

これまでの Azure歴は、Jetson Nano からの Azure IoT で エッジAI/IoT 的なことやったり、Nutanix KPS で Blob になんか飛ばしたり、Cognitiveのハンズオンしたりくらいのニッチなとこしか触ったことない。。。
インスタンス立てたり、Azure ADなんてもってのほかってレベルからお勉強をスタートしてみました
そしたらあっさり一回目試験落ちてしまったので、改めて自戒の念もこめてアウトプット

Azureの資格試験の種類

とりあえず上級(Expert)といわれるものだけをピックアップしてみましょう
今年は E資格も取得したので調子のってみる

2021年7月時点では、Azure 関連の Expert はレベル 2つだけの模様
Azure Solutions Architect Expert
Azure Fundamentals や Azure Administrator Associate の上位になるみたいですね

DevOps Engineer Expert
こちらは Developer 系の上位資格です


ターゲットは Azure Solutions Architect Expert

Azure Solutions Architect Expert にむけて

この資格の認定をうけるには2つの試験をうける必要があります
各試験とも 21,103円、落ちるとまぁまぁなダメージ

AZ-303: Microsoft Azure Architect Technologies
試験範囲: Azure インフラストラクチャの実装と監視、管理およびセキュリティソリューションの実装、アプリケーションのソリューションの実装、およびデータプラットフォームの実装と管理

AZ-304: Microsoft Azure Architect Design
試験範囲: 監視の設計、 アイデンティティとセキュリティの設計、 データストレージの設計、 ビジネス継続性の設計、 インフラストラクチャの設計


違いとしては、テクノロジーとデザインということで、テクノロジーはより構築・設定、デザインは提案みたいな感じ?

受験方法は、ITベンダー資格でよくある Peason Vue の会場かオンラインから選択です


勉強方法どうするか

勉強方法としては、MS Learn のコースが用意されているので、一通りやっておきます

f:id:konchangakita:20210718154112p:plain
Azure Solutions Architect Expert 用にラーニングパス(複数モジュールの塊)が 9個、約56時間分用意されています
MS Learn はめっちゃよくできたコンテンツで、試験にもでてきそうなサンプル構成例を用いながら、実際の Azure ポータルの環境を使ってハンズオンできたりもするので、理解に役立ちます
(ハンズオンするためには、無償版でいいのでAuzreアカウントを作っておきましょう)

この他にもちょっと分からない単語がでてきても、そこは天下のMSさん「Azure ○○○」とかでググったらすごく分かりやすい MS Docs が見つかります

AZ-303 / AZ-304 の試験対策

推奨されている MS Learn コースは AZ-303/AZ-304 は共通なので、まずはじっくりと MS Learn をこなしていきましょう
ただ、MS Learn はコンテンツがよく出来すぎていて、時間かけた分だけ理解したつもりになってしまいがちというがあります、、、、
単語の理解があやしいな、と思ったら何回でも繰り返しチャレンジしておくとよいです
Azure Solutions Architect Expert 用にラーニングパスでは、Azure AD に関するコースが全然入っていなかったので追加でやっておくとよいかも

こまったときの Udemy

ここのとこ新しいことにチャレンジする時にお世話になっているUdemyhttps://www.udemy.com/)で AZ-303 / AZ-304 を検索してみると、英語のコースが見つかりました
せっかくなので、がっつり勉強すべくコース内容が濃そうな(12.5時間分)AZ-303用のこちらのコースも購入してみました
AZ-303 Azure Architecture Technologies Exam Prep 2021 | Udemy

ひととおりやってみましたが、AZ-303用なので試験にでてきそうな操作方法等重点的な内容で試験向けポイント解説なんかもあったので時間が許す限りじっくり見てみてもよいかも、でも結局試験を日本語でうけるならばちょっとハードル高いかも。。。。

Udemy には他にも Azure 関連で日本語のはすくないっすね

試験に向けて

MS Learn は思った以上に時間を使いました。知らない(初心者すぎて)初めてコンテンツだと目安時間より、多く時間がかかりやってるうちに他の内容忘れてくという
MS Learn だけで、だいたい2週間分くらいがっつりやったかな

【おてがる開発環境をつくろう】VS Code あれもこれもエクステンション

f:id:konchangakita:20210614213524p:plain:w200

VS Codeは、初期状態からエクスプローラ機能、ターミナルが使えて便利ですが、拡張機能(エクステンション)を導入することで真価を発揮します
エクステンションは数多くあるので、奥が深いです
とりあえず自分が使った範囲で、Python、Jupyter、Dockerを扱う環境で便利だったエクステンションをご紹介


【おてがる開発環境をつくろう】
1.まずは Docker Desktop インストール
2.Docker であそぶ Python 入りのコンテナつくる
3.コンテナで Jupyter Lab 環境
4.さいきょうのえでぃた VS Code
5.VS Code はあれもこれもエクステンション ←今ココ


とにかく便利なエクステンション(とりあえず入れておけ)
indent-rainbow:インデントに色をつけて見やすくしれくれます
Trailing Spaces:空白に色をつけて余計な空白の見落としを防ぎます
Material Icon:アイコンをかわいく表示
python:コーディングが楽になる
Jupyter:JupyterをVSCodeで実行
Docker:Docker機能を可視化
Remote Development:VSCodeからSSHして、ローカルかのようにファイル管理できる

indent-rainbow

タブごとに色分けにしてくれて、ぱっと見がわかりやすくなります
f:id:konchangakita:20210606160405p:plain

Trailing Spaces

無駄な空白を赤くみせつけてくれます
f:id:konchangakita:20210606160833p:plain

Material Icon

アイコン表示をかわいくしてくれます
f:id:konchangakita:20210606161033p:plain

python

構文に合わせて色とか変えてくれる
予測変換的なこと(Lint)もしてくます
f:id:konchangakita:20210606161313p:plain

Docker

コンテナイメージのビルドやコンテナ内のファイルをGUIで扱える
でも実際にファイルをいじるのはこの後の Remote-container の方が便利
f:id:konchangakita:20210606163211p:plain

Remote Development とにかく超便利

Remote-WSL, Remote-Containers, Remote-SSHの3つセットになっています
これがあるから VS Code はやめられない!
Remote接続して、エクスプローラで操作が可能になり、Remote接続先のファイルを ローカルと同じように VS Code で編集
Teratermさようなら案件

「Ctrl+Shift+P」でコマンドパレットを開き「remote」と入力
接続したい環境を選ぶ
 ・SSH
 ・Container
 ・WSL(使ったことない)
f:id:konchangakita:20210606165119p:plain

SSH 接続

初めて接続するホストの場合は「Add New SSH Host」
f:id:konchangakita:20210606165203p:plain

ホスト側の ~/.ssh/authorized_keys にkey設置しておけば、次回からサクッと接続
f:id:konchangakita:20210606165213p:plain

Container 接続

f:id:konchangakita:20210606165303p:plain

接続後は

作業フォルダを登録する
あとはファイルを選べば、後は VSCode上でコーディング
vi も FTP ももう不要!
f:id:konchangakita:20210606165402p:plain

再接続は

一度接続した接続先情報は覚えている 便利!
f:id:konchangakita:20210606182336p:plain

さいごに

これでおてがるにどんなところ(新しいPCとかWindowsMAC選ばず)でもちょっとした開発環境が作れるです
ローカルで作ったファイルをFTPでアップロードしたり、SSHして vi で編集するというのはもうやらないんだなぁ、と実感してしまいました
次はなにをつくろうか!

【おてがる開発環境をつくろう】さいきょうのえでぃた VS Code

ルーキー開発者が最強のえでぃたを装備した
おてがる開発環境シリーズの最後は、「VS Code」です
今までの、DockerPythonJupyter 全てにおいて、VS Code で便利に使うことができます

【おてがる開発環境をつくろう】
1.まずは Docker Desktop インストール
2.Docker であそぶ Python 入りのコンテナつくる
3.コンテナで Jupyter Lab 環境
4.さいきょうのえでぃた VS Code ←今ココ
5.VS Code はあれもこれもエクステンション!!


VS Code のオススメな理由
・エディタなので、当然ながら Python との相性は抜群
・ターミナルがついてる
・リモートSSH/コンテナがかなり便利
 - パスワードでも、鍵認証でも
 - ssh先のファイルを VSCodeエディタで開けるだとっっ!!!
 - コンテナ内のエクスプローラも楽ちん
・gitを GUI でも CLI でも
・Azure 機能との連携も豊富

VS Code をインストールしよう

ここからダウンロード
azure.microsoft.com

MS製ですが、もちろん MAC版も用意されています
f:id:konchangakita:20210605153937p:plain

インストールしたら、VS Code 画面配置でよく使うところをみてみましょう
f:id:konchangakita:20210605153429p:plain

VS Code の設定は初期のままでも結構いける

昔のエディタは、デフォルトのままでは使い物にならなくて、初期設定から結構いじる必要がありましたが
(主に文字サイズとかショートカットとか)

ちなみに固有のセッティングはここから変更できますが、ほとんどさわったことないです
f:id:konchangakita:20210605154501p:plain


設定やプラグインなど導入した場合に、自宅用のデスクトップとノートPC、WindowsMAC 間で設定を同期することもできます
プラグイン設定も同期できるのは、超便利
f:id:konchangakita:20210605155211p:plain


Githubアカウント経由で同期される
この辺はさすが MSさん
f:id:konchangakita:20210605155216p:plain

ワークスペースを作る

ワークスペースはおおざっぱにいうと、作業フォルダのショートカット集をつくるみたいな感じです
VS Codeエクスプローラをより便利に使いこなす為には、まずはじめにワークスペースを作っておくべき

プロジェクトごとや、やりたいこと別にワークスペースごとに作ってくようなイメージです

f:id:konchangakita:20210605164934p:plain

ターミナルを開く

「Ctrl + @」でターミナルをトグルできます
また、VS Code超便利な機能(パート2)として、指定のディレクトリでターミナルを開くってのがあります
プログラミングしていて、このファイルを実行したいって時に
ターミナル開いて、ディレクトリ移動して、実行ってメンドウな経験したことないでしょうか
開きたいファイルやディレクトリを右クリックして、「Open in integrated Terminal」

f:id:konchangakita:20210605165845p:plain


よく使うショートカットコマンド

Ctrl+@:ターミナルをトグル
Ctrl+Shift+p:コマンドパレットを開く

拡張機能をいれよう

VS Code拡張機能(エクステンション)を用途ごとに導入することで化けます
f:id:konchangakita:20210605170042p:plain

特に汎用性の高いリモート系のものとか紹介したいのですが、
プラグインは長くなりそうなので、次回へ続きます

さいごに

個人的にエディタとしては、秀丸サクラエディタ、vi、HTML開発用のエディタ(名前わすれた)とか使ってきましたが、初期設定のまま使えて Terminal との連携とかまさにさいきょう

【おてがる開発環境をつくろう】Jupyter Labで Python してみる

機械学習ではド定番というか、大前提?な Jupyter notebook の環境をDocker コンテナ上に Python と一緒に作ってしまいましょう

f:id:konchangakita:20210529152941p:plain:w300

【おてがる開発環境をつくろう】
1.まずは Docker Desktop インストール
2.Docker であそぶ Python 入りのコンテナつくる
3.コンテナで Jupyter Lab 環境 ←今ココ
4.さいきょうのえでぃた VS Code

Jupyter Lab の使いみち

jupyter.org
AI/MLはド定番というか、必須な代物ですが、それ以外の Python コーディングでも有用だと思います

プログラム全体を実行しないで、セルといわれる任意の行単位ごとに実行して即結果を出力できます
プログラム全体を実行しなくてよいので、Python初心者がコードの出力結果を確認できるのが便利、それでいて変数の結果などを使い回せる
 ・REST APIや、DBへのデータ出し入れなど
 ・ちょっとした変更をすぐその場で確認!
 ・最終的には、.py の実行ファイルを作る


Jupyter Lab 入りのコンテナを作る(Python 3.9.4)

Jupyter Lab は Python モジュールとして提供されていて、pip install jupyterlab でインストールできます
jupyterlabモジュール込みのコンテナを作ってみましょう

# Python 3.9.4-slimをベースに
FROM python:3.9.4-slim

# おまじない
RUN apt update -y
RUN pip install -U pip

# Jupyterモジュール
RUN pip install jupyterlab

WORKDIR /home

# デフォルトの jupyterlab 実行コマンド
CMD ["jupyter", "lab", "--ip=0.0.0.0", "--allow-root", "--LabApp.token=''"]
コンテナイメージ作成とコンテナの起動
  • v で指定している ホスト側のマウントポイントは任意に変更しましょう
$ docker build . -t python:3.9.4-jupyter
$ docker run --rm -it -p 1234:8888 -v "D:\work\sample\app:/home/app"   --name python-jupyter python:3.9.4-jupyter



Jupyter Lab にアクセス

コンテナ内で起動している Jupyter Lab へブラウザで接続します
ブラウザからlocalhost:1234」
マウントしたディレクトリを選んで、Notebook を開く!
f:id:konchangakita:20210529154521p:plain

notebook でコマンド結果を確認するだけでなく、いろいろな機能があるようですが、まだそこには手を付けれていない。。。

python 実行してみる

こんな感じで各セルごとに区切って、Pythonコードを実行していくことができます
こんなイメージ
f:id:konchangakita:20210529221728p:plain

通常の Python のコーディングそのままに書いていけば良いです
もちろん、関数やクラスも好きに使えます


さいごに

Python の新しいモジュール導入した時や、一部部分の実行結果を確認するのにすごく重宝しています
REST API の実行とか Web Scraping とか Elasticsearch の連携とか相性がよいので、楽しく開発ができるようになるんじゃないかなぁ

【おてがる開発環境をつくろう】Docker であそぶ Python 入りのコンテナつくる

f:id:konchangakita:20210517222702p:plain:w200   f:id:konchangakita:20210517222849p:plain:w180


【おてがる開発環境をつくろう】
1.まずは Docker Desktop インストール
2.Docker であそぶ Python 入りのコンテナつくる ←今ココ
3.コンテナで Jupyter Lab 環境
4.さいきょうのえでぃた VS Code


あくまで今回の目的は、マイクロサービスを作るとかではなく
「開発環境をつくる!」です
Dockerコンテナがなんなのか、とか、アーキテクチャみたいなことは
他のサイトにおまかせして、あくまで使い方に終始していきます

コンテナをダウンロード

まずは、Dockerhub のアカウントを用意しておいて
https://hub.docker.com/

Docker ログインする

$ docker login


Dockerhub上のコンテナを、Powershell などで docker pull コマンドでダウンロードする

$ docker pull <container名>:<tag>

最近はだいたいアプリは公式が Dockerhub上にコンテナを用意していたりするので、Dockerhub をググるクセをつけておくと何かと便利、「dockerhub “ほしいもの”」でググると良いでしょう
例)docker ubuntu, docker splunkなどなど

Python であれば、Python 各バージョンのコンテナが公式で用意されています

自作コンテナを作ろう

dockerfile 作成

用途によってベースのコンテナを決めて、モジュールを加えてカスタマイズしていきます

例えば Python なら Dockerhub に用意されている tag ごとにインストールされているモジュールが違うので、ベースのコンテナを決めて追加の Pythonモジュールやパッケージインストール、設定ファイルなどをコピーしたりしてをコンテナを作っていきます
その設計図が dockerfile です
dockerfile という名前(拡張子なし)のファイルになります

dockerfile のサンプル(Dateコマンドが出力されるだけ)

# From: ベースになるコンテナを指定、tagなしだとlatestが自動的に選択される(ちゃんと指定しよう)
FROM python:3.9.4-slim

# WORKDIR ディレクトリ作って、そこに移動して以降のコマンド実行
WORKDIR /oreore

# RUN:の後にOS上で実行するコマンド
RUN apt update -y

# CMD: コンテナ起動時に実行されるコマンド
CMD ["date"]


コンテナイメージのビルド

dockerfile と同じ場所にて
 docker build . -t <container名>
を実行して dockerfile を元にコンテナイメージを作ります

(例)

$ docker build . –t test_container


コンテナイメージの確認

$ docker images
REPOSITORY                     TAG       IMAGE ID       CREATED          SIZE
test_container                 latest    80afafe350ea   55 seconds ago   132MB



コンテナの起動

コンテナを起動は
docker run
(場所はどこでもよい)

上で作った test_container を実行してみます
date コマンド出力結果だけが表示されます

$ docker run test_container
....
Sat May 22 13:16:33 UTC 2021
よく使うオプション

 --rm:コンテナ終了とともにコンテナを消す
 -it:コンテナの入出力に接続
 -p:外部からアクセスされるポート番号:コンテナ側のポート番号を指定
 -v:ディレクトリのマウント設定、ローカルのディレクトリ:マウントポイント
 -name :コンテナ名を指定

コンテナの状況を確認

docker ps コマンドで

起動中のコンテナ確認

$ docker ps

起動していないコンテナも含めて確認

$ docker ps -a
CONTAINER ID   IMAGE            COMMAND   CREATED             STATUS                         PORTS     NAMES
361bf7a7ffb9   test_container   "date"    About an hour ago   Exited (0) About an hour ago             ecstatic_solomon


検証するときや、開発環境用には、 “--rm” オプションをつけよう
作り始めはバンバン修正しながら作っていくのでコンテナ終了してもゴミが残らないように
コンテナ実行

$ docker run --rm <コンテナイメージ名>

コンテナ実行と同時にコンテナに入る(bashがある場合)
画面表示のオプション-it と、実行シェル /bin/bash を指定

$ docker run --rm –it <コンテナイメージ名> /bin/bash



ローカルの Pythonファイルを編集

おてがる開発環境を作る上での目玉の手法です
Docker のホストマウントを使います

Pythonファイルはローカルのエディタで編集しつつ
実行するのは、コンテナの中で実行
こうすることで、開発環境を作っては、FTPやSCPでファイルを送ったりSSHして vi みたいな手間が全部無くなります

コンテナからローカルフォルダをマウント方法
オプション -v "ローカルフォルダ : コンテナ内のマウントポイント"
(例)

$ docker run --rm -it  -v “C:\work\sample\app\:/home/app" --name python394 test_container /bin/sh

これで準備完了
あとは、
 ・ローカルのエディタで python ファイルを編集
 ・Docker コンテナは好きなバージョンの Python 環境を用意して、実行して確認
開発環境をいつでも潰して、作りなおしたり、持ち運びができます

コンテナイメージの更新

コンテナでは基本的に起動後はコンテナ内のファイルは固定(変更しない)、いつ起動しても同じ環境を再現できるイミュータブル性を確保します
なので、コンテナにパッケージやモジュールを追加したい場合は、dockerfile を修正してコンテナを再作成しよう


おまけ

本番環境でコンテナを作るのときのセキュリティについて

#ベースコンテナのtag(バージョン)はちゃんと指定することFROM python:x.x.x
# 設定ファイルの書き込み権限をなくすRUN chmod a-w /etc
# シェルを実行させないRUN rm –rf /bin/*
# ユーザ指定する(デフォルトは root になる)USER appuser