awsに接続してssh_configを生成するec2sshというツールがあるのだけど、awsやazコマンドで得たjsonをjqで加工して似たようなことができそうだなと思ったのでやってみた。 awsの場合は、以下のようにaws-cliでec2の情報を取得してjqに渡してやればいい。ユーザ名は取得できないので、必要であればjqの処理のとこに(決め打ちになってしまうが)追記してやればいい。

aws ec2 describe-instances | jq -r '.Reservations[].Instances[]|(.Tags[]|select(.Key == "Name")|.Value...

Azure上に、WindowsのVMを用いた環境を構築する必要があったので、Ansibleで構築を一気にやってしまうことにした。今回は、リソースグループから作成して、VMの作成とWinRMの有効化、各VMへの接続、設定までをまとめてみる。 Playbookのサンプルはこちらに置いてあるが、Azure上にAD環境を構築する内容になっているのでそのまま流す場合は注意。また、この情報は2018年6月時点のもので、以後変わっていく可能性が高い点についても注意してもらいたい。

1. Azure-CLIの設定

まず、AnsibleをキックするマシンでAzure-CLIを利用できるようにする必要...


Microsoft Azure上で鍵認証でLinuxを使っているのだが、諸事情によりログイン用の秘密鍵を紛失してしまうといったことがあった。 流石に何処かにはあるだろうと色々と探したのだけど、どうしても見つからない。 どうすりゃいいかなぁ…と調べていたところ、Azureポータルの対象VMを選択すると「パスワードのリセット」なる項目が。 藁にもすがる思いでそこから公開鍵を登録してみることにした。


Azureの新ポータル上で鍵認証方式のLinuxサーバを立てる際に、前にちょっと引っかかった(+他に特に書くことが無かった)ので、残すほどのことでも無いかと思ったが備忘として残しておく。 Azure上で使用するサーバの鍵を作成する場合、「---- BEGIN SSH2 PUBLIC KEY ----」から始まる形式(SECSH形式)で登録してやる必要があるので、以下のようにコマンドを実行して鍵を作成してやる。


Azureの昨日までの各サービスの利用料金をSlackに通知させる

前に、AWSでの各サービス利用料金通知Botを作ってたので、Azureについても作成してみた。 ソースはとりあえずこちらに配置している。

…正直、AWSに比べてえらい作りにくかった。 AWSの場合だと一発でJSONでデータとれるのだが、Azureは各サービスの利用データとその利用データごとのレート金額で分かれているので、データを取ってきたあとにマージしてやる必要があった。 あと、どうも日本リージョンのデータを取得する際にドルで取ってこれないようで、日本円で計算する必要があった。 為替の変動とかに影響受けそうなんだけど、どうなんだろう…?

この辺の情報はソースに直書きになっている...


Azureはサブスクリプションだったりアカウントの種類が多くて、混乱することが多い。 そもそもの前提としてAzureではアカウントの種類が大別して2つに分かれてて、microsoftアカウントと組織アカウントというのがあるようだ。 ざっくり言ってしまうと、Office365と連携していない個人アカウントがmicrosoftアカウントで、Office365のADで管理されているのが組織アカウントらしい。

そのほか、いろいろな面で組織アカウントにしかできないこと(microsoftアカウントではローカルADとAzureADの連携ができなかったり、AzureCLIやPowerShellで自動ログ...


Microsoft Azureに構築した環境で負荷試験を行った際、インフラ回りでひっかかったことについて念のため記述しておく。
一応、サポートから正式に回答いただいた(電話で聞いたとき聞き間違いかな?と思ったのでメールで詳細についてももらって確認している)ことなので、事実…ではあるようだ。

なお、この情報は2016年06月時点のものなので、仕様が変更される可能性もある。
設計前に一度MSに問い合わせたほうが良いだろう。

OS側で要求するIOPSがディスクの制限値を上回ると、ディスクの応答を数秒間停止させる

…らしい。
規定のIOPS(プレミアムストレージ以外だと500が上限)...


仕事でAzure Blob Storageをいじってるのだけど、ポータル画面からだとスナップショットの取得ができなそうなので、PowerShellから取ってみる事にした。

残念ながら、コンテナ単位でSnapshotを取得する事は出来ないようで、オブジェクト単位での取得をする必要があるようだ。

# Blob Storageに関する情報
# StorageAccountName: Blobアカウント名
# StorageAccountKey : Blobアクセスキー
# ContainerName : Blobコンテナ名
# BlobName : Blob名
$StorageAccount...

仕事で、バックアップファイルをAzure Blob Storageにアップロードさせるスクリプトを作成する必要が出てきた。
Azure Blob StorageはRest APIに対応しているので、それで上げれば良さそうだ。

というわけで、こちらの内容を参考にPythonに書き直してスクリプトを作成してみた。
運用時にアップロード・ダウンロード・削除と使い分けするのが面倒だったので、サブコマンドを指定する方式にしている。

azure_blob_backup.py

#!/bin/python
# -*- coding: utf-8 -*-
# +---------------...

先ほど、AWSでのPublicIP一覧取得について記述したので、今度はAzure。
Azureでは管理ツールが2つ(Windowsで用いるPowerShellと、UNIX系OSで用いるAzureCLI)あるのだけど、そのどちらでもPublicに関しては取得可能だ。

PowerShell

Get-AzureRmPublicIpAddress | Select-Object Name,IpAddress

Azur

...
Microsoft Azureで仮想マシンの起動ログを取得する

先日、Azure上のLinuxサーバがssh接続できず、そもそもOSが上がっているのかどうなのかわからない、という事があった。
AWSしかり、Azureしかり、こういったクラウドサービスの場合だと仮想マシンのコンソールに接続できず、こういった事が発生すると非常に困る事になる。
で、こういったOSが起動しているのかどうかもわからない状態の場合、基本的にはOSの起動ログを取得して起動していないのか、起動中なのか切り分けを行ったり、もし起動していない場合は対象の仮想マシンのHDDイメージを取得して手元で仮想マシン作って確認したり…といった対応が必要になってくるようだ(後はサポートかな?)。

A...