macOS Catalinaで起動できなくなった話
ネットワーク不調でインターネットに繋がらなくなり、再起動をかけたら起動できず、再インストールをしようとしたらエラーとなり、さらにクリーンインストールしようとするとディスクのフォーマットに失敗するという、何か久々に引いてしまった感のある状況になったので備忘録的に記します。
まず、フォーマット失敗した時点であー。。。な感じでしたが、一度電源をオフして再度フォーマットをかけると成功。
再インストールを実行して再起動がかかる。
そうするとセットアップ用のイメージが壊れていたのかQuestion mark付きのフォルダが表示された。
意味としては起動できるディスクがないとのことで、再度電源を停止。
command+Rで起動させるとInternet Recoveryが始まり地球儀のような画面が出た。
で、ここで問題が発生。
apple.com/support -1008F
と表示される。
原因はiCloudでmacを探すが有効になっているために起きるエラーらしい。
別の端末からiCloudへログインし、対象のデバイスを削除してから再度トライ。
無事インストールが進み、クリーンインストール完了。
不調が嘘のように動きが良くなった。
やはり定期的にクリーンインストールはしたほうが無難なのかもしれない。
macOS CatalinaでAppに未署名のアプリケーションを開く方法
macOS Catalinaでセキュリティ関係が強化されています。
そのため、開発元がAppに署名をしていないものについてはデフォルトの設定では開くことができません。
設定からセキュリティとプライバシーを開いても以下のようになっており、以前のように「すべてのアプリケーションを許可」の項目すら表示されていません。
で、どうすればいいかというと、「すべてのアプリケーションを許可」に設定変更するコマンドを発行します。
これはCatalinaからのコマンドではなく、Sierra辺りからあったと思います。
以下のようにターミナルで実行します。
sudo spctl --master-disable
これを実行することで「すべてのアプリケーションを許可」が有効になり、未署名のアプリケーションも起動できるようになります。
セキュリティとプライバシーは以下のような状態になっていると思います。
他にはx64以外は動作しないなど色々と制限が入ってきていますので、使うアプリケーションの見直しやアップデートを待つというのも選択肢の一つでしょうね。
Azure BastionがGAされました
Azure BastionがMicrosoft IgniteでGA (General Availability)の発表がありました。
VMを使っている方は嬉しい発表ではないでしょうか?
Azure Bastion
利用している仮想ネットワーク内でプロビジョニングするフルマネージドなbastion serviceで、Azure portal内で直接SSLを経由して仮想マシンへのシームレスな接続を提供されます。
サポートプロトコルはRDP、SSHで、Azure Bastion経由で接続する場合、仮想マシンにパブリックIPアドレスは不要となります。
追加のクライアント、エージェント、ソフトウェアも不要といったサービスです。
ブラウザとAzureアカウントさえあれば使えるので、作業用のPCがないとアクセスできない!とかいうことから開放されますね。
デプロイ方法
AzureのMarketplaceからBastionを検索して追加します。
作成を押します。
必要事項を入力していきます。
名称等を入れるブレードのところで注意が必要です。
まず、専用サブネットが必要になります。
デプロイ先の仮想ネットワークのアドレス空間の空きを確認し、AzureBastionSubnetという名称でサブネットを追加します。
サブネットの範囲は27ビットマスク以上の範囲が必要になります。
出来上がったら仮想マシンの接続からBastionを選択してアクセスします。
2019/11/05現在は以下リージョンのみで使用可能です。
- Australia East
- East US
- Japan East
- South Central US
- West Europe
- West US
難しいことはあまりありませんが、サブネット名等の注意は必要ですね。
良い踏み台ライフを。
IoT Algyan ReButton+IoT Central体験ハンズオンへ参加してきました
10/26(土)午後から熊本は未来会議室にてIoT ALGYAN主催の「ReButton+IoT Central体験ハンズオン」へ参加してきました。
同じ会社の同僚が福岡の主幹をやっているということと、熊本の主幹の方がお知り合いだったということもありの潜入でした。
まずオープニングは小暮さんからのご挨拶で始まり、Microsoft社の太田さんからのAzure IoT Centralの紹介、そして(忘れていたような)会場スポンサーの宮本さんからのLTがあり、熊本の主幹である及川さんから軽い説明の後のハンズオン開始となりました。
Seeed社製のReButtonを配布され、まずは初期化から。
いただいたのは限定カラーとのことでAzureカラーでした。
(当日写真を失念したので後日撮りました。。。)
次にIoT Centralのポータルでアプリケーションを作成。
ReButtonをWifiに接続してIoT Centralへ接続する設定をしていきます。
設定が終わったらボタンを押して通知のテストをします。
シングルクリックは問題なくできたので、ダブルクリック、トリプルクリック、ロングプレス、スーパーロングプレス、ウルトラロングプレスの設定をしていきます。
ここでプチ問題が発生。
普通にダブルクリック(トリプルも)しても反応しません。
少し長押ししてからの操作で実行可能になるようで、最初3〜4秒押した上でのダブルクリックで反応してくれました。
SMSへのアラート通知も問題なく設定が終わったので、Functionsの作成です。
コードを作成し、Function AppをデプロイしてIoT CentralのポータルからFunctionsへWebhookを投げるよう設定します。
ボタンを押すとFunctionsが実行されますね。
自分はやらなかったですが、FunctionsからREST APIを叩いてパトランプを回すというところまでが今回の最終目標でした。
自分はFunctionsが終わった後、IoT Centralからデータのエクスポートができると松岡さんから聞いてしまったのでボタンの操作したデータをJSONデータとしてBLOBストレージへ出力し、どのようなデータが出力されているかなどを見ていました。
自分自身IoT Centralは初めて触ったので触るいい機会となりました。
途中から脱線してJSONデータのエクスポートとかやってましたが他の参加された方へのサポートもしつつ楽しめました。
皆さん気さくで楽しい会でした。
また2月に開催予定とのことで、都合が合えば参加したいと思います!
KEDA+AKSでk8s上にFaaSを構築する
5月に発表されたKEDA(Kubernetes-based Event-driven Autoscaling)ですが、AKS(Azure Kubernetes Service)の上でサーバーレス のイベントドリブンコンテナーをサポートするものとしてオープンソースでMicrosoftとRedHatが共同で発表しました。
KubernetesのスケーリングはコンテナのCPUとメモリ消費率に関連付けされていますが、KEDAを使う事でAzure FunctionsなどのFaaSと同様にイベントに応じたリソースのプロビジョニングやスケーリングをする事が可能になります。
現状(2019/9/30現在)サポートされているイベントソースとスケーラーは以下になります。
- AWS CloudWatch
- AWS Simple Queue Service
- Azure Event Hub†
- Azure Service Bus Queues and Topics
- Azure Storage Queues
- GCP PubSub
- Kafka
- Liiklus
- Prometheus
- RabbitMQ
- Redis Lists
詳細などはGitHubや発表時のブログを参照してください。
実際に動かしてみる
AKSの構築
いずれかの方法でAKSを構築します。
KEDAのインストール
Kubernetesクラスターにhelmをインストール
helm init
Helm repoの作成
helm repo add kedacore https://kedacore.azureedge.net/helm
Helm repoの更新
helm repo update
keda-edge chartのインストール
helm install kedacore/keda-edge --devel --set logLevel=debug --namespace keda --name keda
Azure Functions Core Toolsのインストール
func kubernetes install --namespace keda
ストレージの作成
キュートリガーで動くよう作るのでストレージアカウントとキューを作成
アプリケーションの作成
作業ディレクトリの作成
mkdir kedaapp & cd kedaapp
ディレクトリの初期化
optionはnode→javascriptを選択
func init . --docker
Queueトリガーの作成
Azure Queue Storage triggerを選択
名称は適宜変更
func new
function.jsonの「queueName」をStorage Queueのキュー名と合わせる
{
"bindings": [
{
"name": "myQueueItem",
"type": "queueTrigger",
"direction": "in",
"queueName": "js-queue-items",
"connection": "AzureWebJobsStorage"
}
]
}
local.settings.jsonのAzureWebJobsStorageへ作成したStorage accountのAccess keysよりConnection stringをコピーする(key1,key2どちらでもよい)
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "node",
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=mystorageaccount;AccountKey=keykey==="
}
}
KEDAへアプリケーションのデプロイ
コマンドにてdocker hubへプッシュし、Kubernetesへデプロイする
func kubernetes deploy --name kedaqueue --registry <docker-user-id>
動作確認
リソースが作成されていることを確認する
キューをポータルより作成し、Podが自動的に起動するのを確認する
上記のように処理が完了してしばらくするとTerminatingされます
最後に
まだベータ版で開発中です。
今後CosmosDBやAzure Monitor、IoT Hubなどの連携も予定されているので今後がたのしみなプロダクトですね!
macからAzure Cache for Redisへredis-cliにて接続する
やろうとしてちょっと困ったので備忘録的に。
Azure Cache for RedisはデフォルトでNon-SSL portがdisabledになっており、本番運用としてもNon-SSL portをenableにして使うことはないと思います。
でも格納されているデータをAzure PortalのConsoleから利用しようとすると使い勝手が悪い。。。手元のterminalで操作してデータを取りたい。ということでmacから接続する方法です。
Windowsで接続する方法は以下ドキュメントがありますのでそちらを参照してください。
redis-cliはssl対応されていないためstunnelでSSLトンネリングして接続します。
homebreのインストール
まずhomebrewをインストールします。
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
redisのインストール
次にredisのインストール
$ brew install redis
stunnelのインストールとstunnel.confの編集
stunnelをインストールし、コンフィグを作成する。
$ brew install stunnel $ vi /usr/local/etc/stunnel/stunnel.conf
stunnel.confの内容は以下のようにする。(example部分は自リソースで置き換える)
[redis-cli] client = yes accept = 127.0.0.1:6379 connect = example.redis.cache.windows.net:6380
接続
準備が終わったら接続です。
$ redis-server & $ stunnel $ redis-cli -h localhost --raw 127.0.0.1:6379> auth {access key} OK
rawオプションをつけているのは2バイト文字の文字化け対応です。
Microsoft MVP アワードを再受賞しました
2019-2020 Microsoft MVP for Microsoft Azureを受賞しました。
ブログ投稿が前回と同じ。。。ということは1年投稿していないという。。。
ありがたいことに3期目となります。
今後とも頑張っていきたいと思います。