Terraform Bootcampに参加しました

Azure Infrastructure as Code 隊 Terraform Bootcampに参加してきました。

(当日の資料はこちら

会場は渋谷のヒカリエの8階にあるAzure Antenna、こんな格好いいフロアの奥の方にあります。スケジュールが提示されているので見てみると、何と、通年でここのスペースを借りているようです。(成果が出るかどうかで続くかどうかが決まるそうなので、是非これからも色々と活用していきたいと思います)
  

4名掛けのテーブルが2つ。こんな感じの場所でMicrosoftの真壁さんのハンズオンという、何とも贅沢な内容でした。

さて、ここから本題。

私自身はTerraformはマルチクラウド対応のInfrastructure as Codeのツールとして、回りで使っている人がいるので、「概要くらいは知っているけど使った事は無い」という感じでした。自分的にもなかなかこういったハンズオンとか無いと触るきっかけがないので、今回のハンズオンは正に渡りに船という感じでしたので、案内を見た瞬間に申込みをさせて頂きました。

ハンズオン受講前はTerraformに対する印象として「便利そうだけど、本当に商用で本格的に使っていって大丈夫なのだろうか…」という漠然とした不安を頂いておりましたが、受講後の感想は…

絶対来る、間違いない。
AzureのIaaSのエンジニアとしては習得必須の技術。

まあ、理由はあの真壁さんが言っているのだから…という一言に尽きるのですが、少しだけ言うなら以下の理由により、今後Azure管理のデファクトになっていくだろうな、と感じました。

  • マルチクラウド環境実現できるOpen Sourceだが、AWSとAzureはかなり動きが活発
  • Cloud Shellを立ち上げるだけで認証が済んだ状態でTerraformが使える
  • HashiCorpの日本法人もできて、Microsoftとも協業を発表している
  • ARMからTerraformリソースプロバイダ経由でAzure外のリソースをいじれるなど連携している

ちなみに、「ファイルの分割規則」「ARMテンプレートとの使い分け」「認証方式は?」とか、色々選択肢がある中でどれを選択すれば良いのかという疑問に関しては、ほとんどがスライド中で述べられていました。

真壁さん自身も、日本語のまとまった情報が殆ど無く、この資料を作成していく中で自分の中でも色々と整理することができたというコメントが有ったのですが、本当にTerraformはまとまったドキュメントが少ないので、当日のスライドはとても有意義な内容でした。

Office 365の障害時にどうすべきか

年度明け最初の週末に向けた2018/4/6(金)の夕方、比較的広い範囲のOffice 365の一部テナントでログインに関連する障害が発生しました。

幸か不幸か、私の個人用のテナントや会社で使っているテナントは影響を受けていなかったのですが、色々と気づくことも有ったのでメモ代わりに記しておきたいと思います。

Continue reading

Exchange Onlineへのシステムメール送信

プリンターやシステムのアラートメールなど、社内ネットワークからExchange Online上にあるユーザーのメールボックスにメールを送信するにはいくつか方法があります。

その中で一番設定が簡単で利用されるシーンも多いのが、MXレコードの向け先と同じ contoso-com.mail.protection.outlook.com などのアドレスにSMTP(TCP/25)で直接送信をする方式となります。

Office 365 を使って、多機能デバイスやアプリケーションがメールを送信するように設定する方法

このケースにおいて、稀にメールが受信できないという事象が発生することがあり、調査してみるとSMTPで送信をしようとした際に4xx番台のエラーが出て失敗したという物です。

Continue reading

Office365のTLS1.2の強制が延期されました

メッセージセンターに通知が来たのでお気づきの方も多いかも知れませんが、Office 365によるTLS1.2暗号化の強制が2018/10/31に延期されました。

比較的急なアナウンスだったので、Office 365管理者の中には大急ぎで対応要否について調査されている方も多かったのでは無いかと思いますが、これで少し期間的な猶予ができましたね。

Exchange Online のアプリケーション偽装権限

Exchange Online と連携したアプリケーションを利用する際、アプリケーション偽装(ApplicationImpersonation)という特権(管理者権限)を利用するケースが多いです。

これを利用する事により、アプリケーションは自身の権限設定を利用して対象のユーザーになりすましてメールを取得したり、予定表を更新したりできます。

例えば、以下の様なことができます。

  1. モバイルアプリケーションがExchange Serverのメールを取得する
  2. 会議室有効利用のサービスが会議室の利用情報を取得、更新する
  3. メールの移行ツールが各ユーザーのメールボックスの中身を取得する

最近特にExchange Onlineと連携するアプリケーションやサービスが沢山出てきて、その中で利用されています。

Continue reading

クライアントアクセスルールによるIP制限

今までと同じポリシーで利用したいということで、Exchange Online で IP アドレス制限を掛けたいという話は良く聞きます。これまでは、AD FSを利用したクレームルールを構成するか、Azure AD Premiumの条件付きアクセスの機能を利用する、あるいはサードパーティのツールを利用するなどして制御するしかありませんでした。

いずれも新規でサーバを立てるなり、追加でライセンスを購入するということでコストの掛かるソリューションでしたが、Exchange Onlineに実装された(現在、まだ全てのテナントで利用可能ではありませんが)クライアントアクセスルールを利用する事により、標準機能としてこれを実装できるようになりました。

Exchange Online のクライアント アクセス規則

また、この機能は現在 AD FS などを利用してIPアドレス制限を掛けている環境においても、その不足する部分を補完する存在になり得ますので、是非この機能は注目して頂ければと思います。

Continue reading

ドメインとAzureADテナントの紐づけを調べる

今回はちょっとトリッキーなTipsです。

色々なテナントをテストで利用していて、ふと「あれ、この独自ドメイン紐づけていたのどのテナントだっけ」となったり、「あの会社確かOffice 365使っていると言っていたけどテナント(xxx.onmicrosoft.com)どこだろう」…と調べたくなることがあると思います。

こういったときには、Exchangeの管理シェルからGet-FederationInformationコマンドで調べられます。Exchange Onlineに接続し、以下のコマンドを実行してみます。

[PS] C:\>(Get-FederationInformation -DomainName mirogo-shoji.com -BypassAdditionalDomainValidation).DomainNames

Domain
------
mirogo.onmicrosoft.com
mirogo-shoji.com

この例では、mirogo-shoji.com のドメインが紐づけられているテナントは mirogo.onmicrosoft.com だということが分かります。逆の場合(特定の xxx.onmicrosoft.com に紐づけられているのはどんな独自ドメインか)も同様のコマンドで調べられます。

なお、この例では Autodiscover のDNSをきちんとOffice 365用に設定していないと調べられません。

その場合は、ちょっと面倒ですが、Exchange Server(バージョンはいくつでも良いです)を1台立てて、そのサーバ上のHostsファイルに autodiscover.[調べたいドメイン名] を autodiscover.outlook.com のどれかのIP(例えば40.100.154.56)に向けるように設定して、コマンドを実行すれば大丈夫です。

Office 365プロダクトのサービス一覧を調べる

この投稿はOffice 365 Advent Calendar 2017に参加しています。

Office 365ですが、どんどん日々進化しておりE3やE5のSuiteに含まれるサービスも増えていっています。また、今年はMicrosoft 365など、更なるバンドルライセンスも増えてきました。

6年以上前にblogのエントリーを書いた際と比較すると、例えばOffice 365 E3に含まれるパッケージは以下の様にサービス数でいうと3倍以上になりました。

今回は、現時点(2017.12.03)での各ライセンスとそれに含まれるサービスを調査してみました。

調査方法は、ライセンスプラン(SKUとも呼ばれます)と、それに含まれるライセンスプランをGet-MsolAccountコマンドレットを使って調査しました。また、対応する名前は管理者ポータルから確認しています。

結果、以下のリストの通りの出力となりました。

プラン一覧(50個/CSV)Download 2017/12/03更新
サービス一覧(85個/CSV)Download 2017/12/03更新

詳細は以下の通りです。

Continue reading

更新プログラム適用後EMSが起動しない

ある日Exchange Server管理シェルを起動しようとしたところ、見覚えの無いエラーで何のコマンドも実行できないようになってしまいました。

「Import-PSSession を使用して現在のセッションのエクスポート モジュールを生成できません。」

特に変更をした直後ではなく、エラーメッセージの内容も良く分かりません。原因が何かを悩んでいたのですが、色々検索をしたところ、2-3日前に実行したWindows Updateが原因であることが分かりました。

発生する条件は以下の通り。

  • Exchange Server 2013もしくはExchange Server 2016
  • KB3000850を未適用の環境
  • 2017年07月以降の月例累積更新プログラムを適用

これを満たしても、一定期間(2-3日?)についてはローカルキャッシュから利用されるために事象は発生しませんは、ふと気がつくと発生するようになります。

その環境ではKB3000850がSCCMから必須と表示されなくなっていたので気づかなかったのですが、後から手動でKBを適用したところ、解消しました。

なお、KB適用前に一時的にコマンドを実施したい場合などは、Exchange管理センター(EAC)からブラウザで実行をするか、以下のコマンドで手動でPowerShellスナップインを追加してコマンド実行が可能です。

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn

MegaRAIDのディスクのエラーカウントを取得する

サーバーのアレイコントローラでLSI社のMegaRAIDを採用しているメーカーって多いですよね。

富士通のPrimergyとかは自分でアレイ制御用のユーティリティを被せてますが、それ以外の通常の場合はLSI社標準のMegaRAID Storage Managerとか使ってディレクアレイの状態を取得します。

ただ、GUIだと開くのに時間は掛かりますし、ディスクの玉が多い場合など面倒なので、コマンドラインから一覧で出したい時とか有りますよね。

その場合の為に、コマンドラインツールとしてStorCLIが用意されているのですが、これまた一覧表示するというよりは情報をずらーっと出すだけの感じです。このままだとスクリプトでの条件付き処理をしたい場合などには利用ができない為、PowerShellを使って簡単に整形してみます。

まずは、StorCLIを適当なフォルダ(今回は C:\Program Files\StorCLI)に解凍して、winrm quickconfigでリモートからのコマンド受付を可能にした状態にして、以下のコマンドを実行します。

$status = @()
foreach ($hostname in @("server01","server02","server03")){
  $str = ""
  $i = 0
  $results = Invoke-Command -ComputerName $hostname -ScriptBlock { & "C:\Program Files\StorCLI\storcli64.exe" /c0/eall/sall show all | select-string -Pattern "State :","Media Error Count =","Predictive Failure Count =" }
  foreach ($result in $results) {
    $str += "${result} "
    if($i -gt 1){
      $str += "`n" ; $i=-1
    }
    $i++
  }
  foreach ($drive in $str -split "`n") {
    $data = -split $drive
    if($data -ne "") {
      $status += New-Object PSObject -Property @{Hostname = $hostname ;Drive = $data[1]; MediaError=$data[8]; PDFailure=$data[13]}
    }
  }
}
$status | ? {$_.MediaError -gt 0} | select Hostname,Drive,MediaError,PDFailure

すると、メディアエラーがカウントアップしているディスクのみ一覧が表示されます。

この情報を利用して、例えば単発のメディアエラーだったら無視するが、継続的に再発する場合はディスクの予防保全交換の手配をするなどの準備をすることができますね。