AnsibleでWindows VMの構成

今日は先日作ったTerraformファイルで作成したAzure上のVMに対して、先日作成したAnsibleが動作するコンテナ上でAnsibleのPlaybookを書いて、VMを構成してました。 - ドメインコントローラーに昇格(新規フォレスト作成) - 必要に応じて再起動 - StandAloneRootCAに構成 - 必要に応じて再起動 - サブジェクトの別名を利用可能に構成 - Azure Stackに必要な証明書のためのCSRを作成 というところまで自動化しました。 変な所で色々とハマりましたが、結局目的のところまではできたので良かったです。VMをAzure上にイチから作成するところから含めて全部やり直しても構築時間で15分もかからない感じに収まってます。 他にもDocker for WindowsをつかってLinuxコンテナを利用したり、実PCのファイルシステムをマウントしたり、Dockerfileを使ってのビルドをローカルPCとGitHub連携したDockerHub上でおこなったりというところもずいぶん慣れました。 ansibleでPSCredentialを渡す所でxxxx_username, xxxxx_passwordという形で表記しておけばよいだけとマニュアル上で読んだのですが、実はxxxxの部分に使う文字列によって挙動が異なるように見える部分があってかなり時間を無駄に消費しました。一部スペルミスもあったりなどもあり。よくわからないエラーが出たときには一度クリーンなところまで戻ってから文字をコピペせずに慎重に打ち直そう…と思ったのでした。 ansibleからPoweShellDSCを利用する部分も理解しましたし、昨日、今日で結構Terrafrom + ansible(+ PowerShell DSC)の組み合わせには慣れた気がします。 というわけで今日の成果はこちら。 - [https://github.com/ebibibi/hccjp/tree/master/VMConfigure](https://github.com/ebibibi/hccjp/tree/master/VMConfigure) 明日と明後日は贅沢に丸々2日間Puppetのトレーニングです!楽しみです。

July 18, 2018 · 1 min · 胡田昌彦

ansibleが使えるコンテナイメージ

TerraformでWindowsVMを展開した後はansibleで構成を自動化しようと考え中です。 Windowsからの管理は現実的に無理みたいなので、仕方なくDocker for Windows上のLinuxコンテナで管理しようとかんがえています。 ansibleの公式イメージをpullすれば瞬殺だろうと思ったのですが以下のあたりはもう公式ではイメージメンテナンスされてません、ということだったのでそのままの利用を躊躇してしまいました。 - [ansible/ubuntu14.04-ansible - Docker Hub](https://hub.docker.com/r/ansible/ubuntu14.04-ansible/) - [ansible/centos7-ansible - Docker Hub](https://hub.docker.com/r/ansible/centos7-ansible/) で、勉強も兼ねて自分でDockerfileを書きました。(あまり根本的解決になっていない気もしますが) - [ubuntu_ansible/Dockerfile at master · ebibibi/ubuntu_ansible](https://github.com/ebibibi/ubuntu_ansible/blob/master/Dockerfile) Dockerfile作成中には「pip install –upgrade pip」というコマンドも入れていたのですがこちらはpipの9と10のバージョン違いによるトラブルが発生してしまいうまく行かず。結局pipのアップグレードはやらないことにしました(逃げ)。 このあたりは下記ブログに解説されていました。 - [pip install --upgrade pip (10.0.0) 後の奇妙な挙動について - 雑記](http://icchy.hatenablog.jp/entry/2018/04/17/064443) 助かりました。ありがとうございます。 というわけで、Dockerイメージも準備できました。 - [ebibibi/ubuntu_ansible - Docker Hub](https://hub.docker.com/r/ebibibi/ubuntu_ansible/) 次は、このコンテナを利用して、Azure上に展開したWindowsVMを自動構成する予定です。明日時間取れる予定…! 業務時間にこうやって自分がやりたい領域のことを勉強しながら作業できるのは本当にありがたいです。(注意:遊んでいるわけではありません。仕事です。)

July 17, 2018 · 1 min · 胡田昌彦

TerraformでWindowsVMを作成する

今日はTerraformでWindows VMを作りました。 LinuxVMの作成サンプルとほぼ変わりませんが、一部展開後にAnsibleで管理される準備を自動実行させるぶぶんだけ工夫してみました。Terrafromでブートストラップしてから、ConfigurationはAnsibleで管理…、に自然に移行できるようにしているつもりです。 Ansibleでの構成はこれから試すので、できる想定…なのですが。 Terraformの作成サンプルはLinuxVMばかりでWindowsVMの例があまりないので少しは参考になる部分があるかもしれません。 - [https://github.com/ebibibi/AzureManagement/tree/master/Terraform/CreateWindowsVM](https://github.com/ebibibi/AzureManagement/tree/master/Terraform/CreateWindowsVM)

July 17, 2018 · 1 min · 胡田昌彦

TerraformをつかってAzureにLinuxVMを作成してみました。

先日に引き続きTerraformで遊んでみました。とはいえ、まだWebにあるチュートリアルをそのままやってみているだけですが。 - [Use Terraform to create a complete Linux VM in Azure | Microsoft Docs](https://docs.microsoft.com/en-us/azure/virtual-machines/linux/terraform-create-complete-vm) VSCode上で"Open Bash in Cloud Shell"を使って実行しています。 ほぼサンプルそのままで試したのですが、SSHの公開鍵の部分は自分のものにする必要がありました。 VSCode上のCloudShellでsshの鍵を生成する方法は以下を参照しました。 - [Azure での Linux VM 用の SSH キー ペアの作成と使用 | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/mac-create-ssh-keys) ssh-keygen -t rsa -b 2048 でキーペアを作成して、生成された公開鍵/home/mebisuda/.ssh/id_rsa.pubを指定しました。 あとは、いつものように、terraform init, plan, applyを実行すればOK。 今回は配置場所を東日本リージョンに変更していたのですが、編集を一部間違えて存在していないリージョン名を指定してしまいました。それでファイルを編集後にAzure Terraform: pushコマンドをVSCode上で実行しておらず、「なんで修正したのに反映されないんだろう?」とちょっと悩んでしまいました。 cloudshellの概念をきちんと抑えないといけないですね。 VSCode上で使っているCloudShellもAzureポータル上から使うcloudshellも同じものであり、リモートの環境である、ということを理解しました。(実装の理解としては間違ってるかもしれませんが、概念としてはあってると思います。) というわけで、仮想マシンを無事作成して、SSHで接続することができました。 最終的に利用したテンプレートは以下です。 - https://github.com/ebibibi/AzureManagement/blob/master/Terraform/Demos/CreateLinuxVM/createlinuxvm.tf とりあえずTerraform on Azure(っていう表現でいいのかな?)の基本は理解したと思います。あとは、ドキュメントを参照しながら試行錯誤でテンプレートを作成できるところまでは来ました。 次はいくつかサンプルを読み込んでみようと思います。 Terraform examples for Azure

May 23, 2018 · 1 min · 胡田昌彦

TerraformでAzureをいじってみました。

TerraformでAzureをいじってみたい、ということで超簡単なところから触ってみています。 - [Download Terraform - Terraform by HashiCorp](https://www.terraform.io/downloads.html) よりバイナリダウンロード。とりあえずWindows版の64bitのバイナリをダウンロードしました。 - パスの設定。exeファイル1つだけなので、どこからでも使えるようにDropbox上に格納してそこにPATHを通しました。 - 環境を整える際のサンプルスクリプトがAzure CLIなのでAzure CLIの環境を整えます。 - Install the Azure CLI for Windows | Microsoft Docs よりMSIでAzure CLIをインストール - Visual Studio Code上で色々やろうと思うので、Azure CLI系やTerraform系の拡張を言われるがままに入れる。 Azure CLI Tools - Azure Resource Manager Tools - Azure Terraform - Terraform - 単純にリソースグループを作成するだけのtest.tfで試してみる provider “azurerm” { } resource “azurerm_resource_group” “rg” { name = “testResourceGroup” location = “westus” } テキストファイルを用意しておいて terraform init, plan, applyコマンドをそれぞれ投入するだけできちんと意図した状態になることを確認できました。素敵ですね。コンフィグファイルが読みやすくわかりやすいのが素敵です。そして、Visual Studio Codeがずいぶん素敵ですね、言われるがままに操作するだけで勝手に環境が整ってしまいました。 mebisuda@Azure:/clouddrive/AzureManagement/Terraform/Demos$ az group list [] mebisuda@Azure:/clouddrive/AzureManagement/Terraform/Demos$ terraform init ...

May 22, 2018 · 3 min · 胡田昌彦