【IaCで作るselenium環境】04_Androidコンテナを構築する(Azure準備編)
直近の関連エントリ
――――――――――――――――――――――――――――――――――
こんにちは。SHIFTのスクラムマスター・テスト自動化エンジニアの石丸です。
前回記事からちょっと時間が経ってしまいました。世の中の流れは速いもので、エントリを書いていないこの2ヶ月弱の間に、コンテナ界隈でも面白いニュースがちょいちょい出回っています。
例えばdocker-composeでECS環境へのデプロイが可能になったり
kubernates1.20でdockershimが非推奨になる話題でざわついたり
このあたりは既に世間に良記事が出ていますので、そちらをご覧ください。
さて、前回はGgr環境構築まで話しました。
今回からSelenoidを使用したAndroidコンテナ構築の話を進めていきます。
■今回のテーマ
今回のテーマは「SelenoidでAndroidコンテナ」です。
Androidのテストですが、みなさんどのようにやっていますか?
自マシンにAndroidStudioを入れてAVDしたり、あと簡単なのはSauceLabsやBrowserStackなどのクラウドテスティングを使用する方法なんかがパっと思いつくかなと思います。
ですが実はSelenoidでもAndroidイメージが準備されていて、自力で準備することが可能です。
今回はこちらをチャレンジしてみましょう。
なお、今回の内容はクラウドサービスであるMicrosoft Azureの準備がメインタスクとなります。
結構手順が多くなると思いますが、なるべく最小手順でAzure準備までご説明します。
■前提
・windows環境での構築
・【重要】Azure環境
■前回のおさらい
前回の最後はこんな感じでした。
Ggrが複数のSelenoid環境をロードバランスしている状態です。
■Androidコンテナ構築時のハードル
SelenoidでAndroidコンテナを立てる手順自体は、実は特に難しくありません。他ブラウザと同様に
でおしまいです。が、これまで説明してきた環境では、普通に上記を実行しても起動しません。
理由はDockerDesktop環境の中に、スマートフォン仮想環境が立っている構成になってしまうからです。
上記図のAndroidコンテナの中に、AndroidVirtualDevice(AVD)というものが入っているのが確認できます。これが1つめのVMです。
次に、我々がDockerDesktopを使用するとき、実は知らず知らずのうちにVMのお世話になっています。
理由はDockerコンテナがLinuxカーネル上でしか動かないからなのですが、DockerDesktopユーザにはあまりこの辺り意識させない作りになっています。
これが2つめのVMです。
そしてSelenoidでは、DockerDesktop(windows、mac)でのAndroidコンテナを使用したVMの入れ子を許容していません。
ローカル環境で普通に構築しても動かない理由はこれになります。
================================================
【補足】
この状況はWSL2の出現でちょっと変わるかもしれません。
どこかのタイミングで改めて検証してみようと思います。
================================================
■AzureでNestedVMする
DockerDesktopを使わずに構築するには、選択肢がいくつかあります。
今回は拡張性とお手軽さの観点から、3.のクラウドサービスを使用して実現しようと思います。
クラウドサービスを使用する場合の判断として、mercariさんのこちらのエントリが大変参考になりました。感謝。
上記の記事ではAWSのメタルインスタンスを利用した手順でしたので、今回は敢えてAzureをチョイスします。
Azureは上記記事のとおりNestedVirtualizationに対応していることもありますが、12ヶ月の基本使用料無料とともに、初月の使用に関しては¥22,500の無料利用券がついてきます。大抵の試用は無料で試せてしまいます。
■無料枠でAzureを準備する
前置きが長くなりましたが、ここからが本題です。
今回は以下の手順を実施します。
Azureを利用する分、若干手間が増えますが、がんばって進めましょう!
最初に補足
無料アカウントの作成
※既にAzureのご契約がある方は、このセクションは飛ばして頂いて構いません。
以下を準備します。
1つ目に関しては¥22,500のバウチャーが受けられなくなるので、Azureの使用履歴がないクレカを使用しましょう。
2つ目は本人確認で2段階認証が発生します。
携帯電話での認証が手順に差し込まれるので(通話 or SMS)、こちらも必ず準備しましょう。
3つ目は以下を参考に作成してください。
Azure開通の手順ですがMicrosoft learnが準備されています。
こちらに沿って操作すれば無料試用版のアカウントが作成されます。
【注意】
Microsoftアカウントに関しては必ず2段階認証設定をしておくことを強くお勧めします。
Authenticatorアプリが出ているので、こちらを使用しましょう。
■Virtual Machinesをたてる
VirtualMachinesとは、AWSでいうところのEC2にあたるものです。
建て方は非常に簡単です。
手順1
まずAzure Portalにログインしてダッシュボードにアクセスしてください。
Azureサービス内に「Virtual Machines」という項目があるのでこちらを選択します。(見つからない場合はその他のサービスから遷移先画面で選択)
手順2
VirtualMachineの基本設定を入力します。
構築手順はMicrosoft Learnが参考になります。
こちらを踏まえて一部入力値を以下のように設定してください。
また管理者アカウントは、必ずSSHを選択してください。
キーペア名は仮想マシン名を入力すると自動的に命名されるため、こちらも初期値のままとします。
手順3
管理タブで自動シャットダウンを設定しておきます。
これでVirtualMachineを落とし忘れた!ということを防ぐことができます。
手順4
最後に画面下部にある「確認および作成」ボタンを押すと、仮想マシン作成の確認画面が出るので、そこで再度「作成」ボタンを押します。
このときSSHキーペアが自動的に作成され、ファイルのダウンロードを促されるので必ずダウンロードしてください。(後続の作業で必要となります)
ここまでで、無事Virtual Machineを作成できたと思います。
■DNS名の設定
今回作成したVMはDynamicIPアドレスが使用されているので、VMを立ち上げなおすとIPが変わってしまいます。VMにアクセスする際にいつも同じようにアクセスするためにもDNSを設定しておきましょう。
まずAzureポータルにアクセスして、Virtual Machinesを選択します。
先程作成したVM「selenoidVM」を選択します。
VMの概要が表示されるので、画面の右下の「DNS名」内の構成リンクを押します。
ここでDNS名ラベルに好きな名前を入れます。
下記例では「myselenoidvm」としましたが、この名前はURLになるので世界中で一意になります。
既に存在している名前でしたら残念ですが変えましょう。
重複が無い場合は入力欄右側に緑のレ点が付きます。
問題なければ画面上部の保存ボタンを押します。
これで次回からは
myselenoidvm.eastus.cloudapp.azure.com
としてVMにアクセス可能となります。
■SSH接続の確認
VMがたったので、SSHのアクセス確認をしましょう。
ここで先ほどダウンロードしたキーペアを使用します。
まずダウンロードしたキーペアファイルを自身のユーザフォルダ配下にある.sshフォルダ内に配置します。(ファイルの置き場は画像を参考にしてください)
次にPowerShellから以下のコマンドを実行します。
>ssh -i ~/.ssh/selenoidVM_key.pem azureuser@myselenoidvm.eastus.cloudapp.azure.com
SSH接続するサーバにアクセス履歴がない場合は必ず以下を聞かれます。
「yes」を選択します。
Are you sure you want to continue connecting (yes/no)? yes
正常にアクセスができたら以下のように出力されると思います。
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-1031-azure x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon Dec 14 13:31:28 JST 2020Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-1031-azure x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon Dec 14 13:31:28 JST 2020
(中略)
azureuser@myselenoid:~$
お疲れ様でした!
今回はこちらで終わりですので、VMは一旦落としてしまいましょう。
「停止」を選択します。
今回作成された構成
■まとめ
実際の構築手順
次回、やっと本題のAndroidコンテナを構築するために、今回準備した空っぽのVMにAnsibleでプロビジョニングをかけにいきます。
ではでは。
――――――――――――――――――――――――――――――――――
【ご案内】
テスト自動化のご相談は以下までお気軽にご連絡ください。
https://forms.office.com/Pages/ResponsePage.aspx?id=IkyjGtUOzUeqMMEbzjGdlSf__O4V1URMn-5BpGP8xd9UNE9ESkRPUEs1Wk9FM0REU1BXODFBSkI0MC4u
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/