Azure エキスパートへの道

Azure で、Azure Expert (AZ-400) の合格を目指して頑張るブログ

【Azure DevOps】Azure DevOps Demo Generator で、Django-based-python プロジェクトを作成

1. 初めに

最近 Azure を使うことが多い私ですが、いつも驚かされるのはそのスピードの速さです。

Azure DevOps, Microsoft が力を入れていることがうかがわされるサービスですね。

Microsoft Azure DevOpsがサービス開始されたのは、以下の記事にある通り、2018年9月10日のこと。

www.atmarkit.co.jp

当初触ったときには、まだできたばかりで足らないところも多い感じだったのが、今ではかなり充実していますね。

また、DevOps や CI/CDに慣れていない人向けの学習サイトも充実しているのにも驚かされます。

Azure learn, Azure DevOps Labs など、実際に触って、デモを作って、理解することができるサイトが数多く用意されています。今日は、Azure DevOps Labs の中の一つで、「Deploying a CD pipeline for a Django-based Python app」を実際に触ってみようと思います。

2. Azure DevOps Demoの事前準備

事前準備として、やらないといけないのが、

Azure Accountの準備と、 Azure DevOps Accountの準備。 

そのあたりは、こちらのサイトを見て実行。

www.azuredevopslabs.com

3. Azure Demo Generator でプロジェクト作成

まずは、Azure DevOps Demo Generatorで、 Python テンプレートを利用し、Django-based-python Project というのを作成します。

f:id:asato418:20191117232111p:plain

Demo用テンプレートもかなり充実しています。

f:id:asato418:20191117232600p:plain

しばらくすると、処理が完了し、自分の Azure DevOps アカウント上にプロジェクトが作成されます。 こちらにある、オレンジのDマークアイコンがついているプロジェクトが作成されました。

f:id:asato418:20191117233422p:plain

4. Project の設定。

4.1 用意されたテンプレートの確認

まずは、3. で作成したプロジェクトを開き、

f:id:asato418:20191117233550p:plain

左側の Repos をクリックすると、用意されたテンプレートのリポジトリが参照できます。

f:id:asato418:20191117233631p:plain

詳細なフォルダ構成は、こちら。

f:id:asato418:20191117233804p:plain

Application フォルダに、サンプルアプリケーションが展開されており、 Tests フォルダの下には、functional_tests , unit_tests の2つのテスト関連のフォルダも用意されているのがわかります。

4-2. ビルドパイプライン設定

次に、画面左の Pipeline → Builds をクリックすると、Python-CI のビルド画面になりますが、この段階では、ビルドの定義は何もない状態です。

f:id:asato418:20191117234217p:plain

なので、画面右上の Edit ボタンを押して、設定画面を開きます。

f:id:asato418:20191117234420p:plain

そして、画面左の Use Python 2.x を選択し、使用する Pythonのバージョンを設定します。

f:id:asato418:20191117234636p:plain

設定したら、次は、Install-dependencies を選択します。 (ここでは、右側に、コマンドで pip install -r ・・・・とありますが、これは、python のライブラリのインストールコマンド(pip install) で、pythonに必要なライブラリなどをインストールする設定をしています)

f:id:asato418:20191117234810p:plain

次に、画面左の pytest を選択。pytest というのは、pythonを使っている人であればご存知の、python用の単体テスト等の実行コマンドです。画面右に、pytest 自身のインストールと、pytest コマンドによるテストが設定されているのがわかります。

f:id:asato418:20191117235027p:plain

次に、画面左、Publish Test Resultsを選択します。 テスト結果をどういうフォーマットで出力するかが定義されています。

f:id:asato418:20191117235400p:plain

そして次、Archive application をクリックすると、ディレクトリ下のApplication を zip 圧縮する定義が設定されているのがわかります。

f:id:asato418:20191117235543p:plain

そしてその次、Archive Tests をクリックすると、ディレクトリ下のTestsをzip圧縮する定義がされているのがわかります。

f:id:asato418:20191117235903p:plain

その次、Publish Artifact をクリック。Artifacts を publish する定義がされています。

f:id:asato418:20191118000111p:plain

次に、Trigger タブをクリックし、Enable continuous integration のチェックボックスをチェックします。

f:id:asato418:20191118000349p:plain

ここまでを行ったら、画面上部の Save & queue → Save を押して、保存します。

4-3. リリースパイプライン設定。

次は、ビルドパイプラインと同様に、リリースパイプラインの設定を行います。 画面左、Releases を選択し、画面右上の Edit を選択。

f:id:asato418:20191118000924p:plain

表示された、Devの下の、1job 7 tasks という場所をクリック。

f:id:asato418:20191118001227p:plain

次のように、タスクが表示されます

f:id:asato418:20191118001319p:plain

そして、 Azure CLI をクリックし、画面右で使用可能なサブスクリプションを選択後、Authorize ボタンを押します。

f:id:asato418:20191118001721p:plain

すると、Azure へのログイン認証が要求されるので、ログインを実行。

次に、Variables タブを開きます。

f:id:asato418:20191118001955p:plain

Location など、変更が必要な場所を変更。(リソースグループも、先にPythonというリソースグループをAzure上に作っておいた方が良いのかな。。と思い作成しました。)

Tasksに戻り、画面右でInstall Python Extensionsを開き、必要な設定を行います。

  1. サブスクリプションを設定
  2. Action は Install Extensions
  3. App Service Name は $(appservice-name)
  4. Install Extensions は、Python 3.5.4 x86 を選択

f:id:asato418:20191118002329p:plain

次、Azure App Service Deploy の設定。

こちらも、ほぼ同様。サブスクリプションの設定と、App Servce Name へ $(appservice-name) を設定します。

f:id:asato418:20191118002752p:plain

そして、画面左、Run functional tests を選択。

設定を確認後、Pipeline Tab に戻り、Python-CI のタスクの右上のイナズママーク(Continuous Deployment Trigger)を押します。

f:id:asato418:20191118003143p:plain

画面右、上部の Creates a release every time a new build is available. を Enable にした後、画面上部の Saveボタンを押してセーブ。・・・と手順には書いてあったんですが、セーブが押せませんね。

f:id:asato418:20191118003305p:plain

Agent Phase の所が設定できておらず、セーブができませんでした。

Agent Phaseの所を設定。ここの解説がなかったので、Agent specificationを適当に、Ubuntuとかにしたら、Pipeline が通りませんでした。正解はvs2017-win2016の模様。

f:id:asato418:20191118013121p:plain

で、セーブ。

f:id:asato418:20191118012942p:plain

4-4. ソース更新、パイプライン実行。

設定のセーブをしたら、ソースを更新して、パイプラインを実行してみます。

修正はまあどこでも良いのですが、アプリケーションには影響のない部分、index.html を修正します。 Repos → Application → templates/app の下にある、index.htmlを選択し、

f:id:asato418:20191118013403p:plain

画面上部のEditを押し、32行あたりにある、Continuous Delivery を Continuous Delivery for Pythonに変更し、画面上部のCommit を押します。

コメントなどは適当にいれ、commit を実行。

画面左のPipelinesを選択、画面右で、実行されているタスクを選択すると、 ビルド&Testフェーズが実行されている状況が見えます。

f:id:asato418:20191118013814p:plain

すべて正常終了した画面がこちら。

f:id:asato418:20191118013847p:plain

ビルド&Testが正常終了したので、画面左の Pipeline → Release を見てみると、同じようにリリースパイプラインが動いているのを見ることができます。

f:id:asato418:20191118014045p:plain

すべて正常終了した画面がこちら。

f:id:asato418:20191118014250p:plain

ちゃんとリリースした後の Functional Test では、Seleniumを使ったテストも実行されていますね。素晴らしい。

そして、リリースが終了したということは、Azure の Python リポジトリ上に、アプリケーションがデプロイされているということです。Azure の方を見てみましょう。

4-5. Azure で、デプロイされたアプリを確認

Pythonリポジトリを見てみると、ちゃんとアプリケーションがデプロイされていますね。

f:id:asato418:20191118014440p:plain

デプロイされた App Service をクリックし、

f:id:asato418:20191118014537p:plain

AppServiceの画面上の 'Browse’メニューをクリックしてみると、

デプロイされたアプリケーションが表示されます。

f:id:asato418:20191118014650p:plain

ちゃんと修正したた部分も、「Continuous Delivery for Python」と表示されていますね。

5. 感想

さて、今回 Azure DevOps Labo に載っている、Demoを実行しただけですが、サンプルが非常に良いですね。 PythonDjangoという Webフレームワークのアプリケーションを AppService にデプロイして実行しているんですが、ちゃんとビルド、ユニットテストを実行し、出来上がったものに関しても、デプロイし、Seleniumを使った 機能テストも行っています。

とても良いと思うのは、こういったテンプレートを使ってアプリケーションを学んだ人は、ビルド時の Unit Test, リリース時の 機能テストは当然やるのが当たり前という習慣を持つことができそうな点です。

30年以上この業界で働いていますが、まだまだ自動Functional Test どころか、Unit Test すら当たり前に実施しているプロジェクトがどれだけあるかはちょっと疑問を持ったりしています。

(10年くらい前に、某プロジェクトに新しく入った時に、単体テストくらいはやった方が良くないですか?と言ったら、Unit Test を書くのであれば、コードが約2倍になりますから、2倍発注してくれないと仕事を受けられないという答えが返ってきて愕然としたのはまだ覚えてます(笑))

うちの会社の中でもこういったテンプレートを利用する人が増えて、単体テスト、機能テストは実施するのが当たり前になり、技術も品質も上がっていくのを期待しております。

【Azure資格】AZ-500 Microsoft Azure Security Technologies資格取得。

12/6 金曜日、3つ目のAzureの資格試験 AZ-500 Azure Security Technologies資格を受けてきました。

試験準備としては、mstep AZ-500試験対策講座が無料で受けられる案内が会社に来ておりまして、その講座を受講。  講座の中では、試験対策講座の内容をしっかり理解すれば合格すると聞いたので、その講座でいただいたドキュメントを2回ほど見直した状態で試験を受けました。

結果は、一応合格。

f:id:asato418:20191207234942p:plain

ですが、AZ-900, AZ-103徳レベルと点数も低く 736点。(合格点は 700点。)

感覚としては、結構難しくて終わったときはもしかしたら落ちたかも。。とちょっと心配になったくらいでした。  試験対策講座に似た問題は結構でたものの、講座で受講した内容よりは応用問題のようになっていた感じが多かったです。

 そして、講座で聞いた情報だと、来年2月くらいにはAZ-500にもLab問題が追加されるということで、そうするとまた難易度は少し上がるかと思うので、それまでに受験した方が資格は取りやすいかもしれません。

【Azure資格】AZ-103 Microsoft Azure Administrator 試験合格

AZ-900を合格した後は、AZ-103です。

こちらの試験は結構合格率が低いらしいという話を聞いてちょっと真面目に勉強しました。

試験としては、筆記試験に加えて、Lab試験という、実際に Azureを触って、VMの設定を変更したり、ネットワークの設定を追加したりという試験もあります。

Lab試験は、大きく2セクション分あり、合計で16問の問題がありました。

試験勉強だけで合格しようとしている人にとっては、Lab試験は結構難しいのかもしれませんが、仕事でいつもAzureを触っている人にとってはむしろサービス問題かもしれませんね。

私も Lab問題は特に苦も無く解けた感じ。

とはいえ、試験問題はさすがに Fundamentalsよりは難しく、点数も 824点。

合格が700点なので多少余裕はありましたが、結構間違った問題もあるということですね。

結果は↓

f:id:asato418:20191205214703p:plain

まあ、無事合格でき、無事2つのバッジを手に入れることができました。

f:id:asato418:20191205215034p:plain

次は、AZ-500を受験予定。

【Azure資格】11/1 AZ-900(Azure Fundamentals) 合格。

手始めに11月1日、AZ-900を受験してきました。

受験にあたっては、会社の同僚が受講した、AZ-900試験対策講座のテキストのを一通り学習し、同じ問題が出た場合にはとけるだろうって感じまでにはしておきました。

結果は、910点と結構余裕で合格。私の場合は実際に Azureは仕事でも結構触っているので、結構余裕でした。

f:id:asato418:20191205213931p:plain

とはいえ、スコアレポートを見るとクラウドの概念の理解が若干低いですね。。

そこは反省。

【ブログ開始】Azureの学習&経験&資格取得についてのブログを開始。

メインのブログとして、

www.asaton.club

を書いていた、Asatonです。ずっと自分の旅行記を書き続けていましたが、旅行ネタもなくなってきたことと、

最近 エンジニアとしての経験とかそういったものを書きたくなり、別ブログを立ち上げてみました。

このブログでは、 Azure の資格取得とか、 色々 Azure の実験とかそういった話を書いていこうかと思います。