クラウドとマレーシアでぐだぐだする日記

いい感じのITエンジニアでいるためにアウトプットします

Active DirectoryサーバのP2V移行で地獄感のあるトラブルをやらかした話

f:id:shige_shigetan:20170914020448j:plain

こんにちはシゲルです。だいぶ前にあるお客さん先のActive DirectoryサーバーをP2Vで移行する案件で盛大にトラブる出来事がありまして、割りとヘコんだ事がありました。

この時、エンドユーザの環境にもバッチリ影響が出まして、変な汗出まくり、キモ冷やしまくりです。原因としては同じネットワークセグメントに同じ様な(複製した)プライマリーADサーバーがありコンフリクトしてアウト、といった感じです。復旧作業しようにもドメインコントローラが壊れてるおかげで認証関係が死んでおりサーバにログインすらも出来きないといった具合です。

とゆう訳で今回のエントリーではADサーバーのP2移行で派手にトラブった件を順を追って話ていきます。

これを聞いた瞬間 身の毛のよだつような恐怖の疼き(クレーム的な意味で)を味あわせることでしょう(ギャー)。あんまりトラブルの内容に関係ないですが仮想化環境はHyperVでした。

障害の有った案件の概要

ざっくりいうと物理で2台のADサーバがあって、その内の1台はファイルサーバを兼用していて、この1台のサーバをP2Vで仮想化環境(HyperV)に持っていくといった内容です。 f:id:shige_shigetan:20170914020448j:plain

Day00 移行の準備あれこれ

移行作業に割ける時間は週末の二日間(できれば土曜日のみの方が望ましい)だったのでファイルサーバで使用しているデータの容量が多かったので事前にファイルサーバで使っているデータドライブだけ先に移行するような処置をとりました。

実際のデータ移行、データ同期はRobocopyコマンドで実施していましたが「ViceVersa」というツールが有ったので途中からこちらを使っています。

自分「P2V移行したタイミングでADのプライマリーが2つになっちゃいますが、、、不味くないですか??」

上司「コピーした方のIPを変えとけば大丈夫っしょ?」

自分「ああ、そうっすか、、、なら大丈夫っすね!」

これが後にあんな事になるんて、、、、全然大丈夫じゃなかった。

Day01 ADサーバー P2V移行作業 当日の様子

当日、P2V移行作業はDisk2vhdを使っておこないました。前日までの作業でデータ用のドライブのディスクは前もって大部分を移行させておいたので データドライブについては停止点を作って最後のデータ同期を行い、システムドライブについてはDisk2vhdを使ってvhdファイルに変換しています。

実はここの仮想OSに変換したあとの起動の所でハマりました。移行したADサーバのOSはWindows2008だったのですが、通常通り仮想OSを作るとデフォルトで UEFIになってしまい、元の物理サーバがBIOSなので起動できなくなりました。ですので仮想OSはBIOSにしてつくりましょう。

Day02 不穏なネクストビジネスデー データ移行できてない??

まあ、そんなこんなで週末の移行作業を終えての月曜日、ネクストビジネスデーをむかえました。しかし、朝からお客様の所でスタンバイしていると

お客「何か、〇〇のフォルダのファイル足りないみたいなんだけど??データの移行ちゃんと出来てるんですかっ???」

自分「マジか、やばい、、、、、」

原因をしらべてみましたが、データ移行で最初に使った「robocopy」が不味かったようです。しかもこの不具合は仕様なんですと、、爆発してしまえ!!

参考:robocopy後のコピー先フォルダが隠しフォルダになってしまう

お客様と協議の末、とりあえず古い元のサーバのデータから戻せばOKということになりました。お腹の下の方に冷たいものを感じなから、旧サーバを立ち上げ新しいサーバへデータをコピーします。

めでたし、めでたし、、、、、の筈だった。

Day03 そして崩壊へ ADの認証関係が3割コケる

データのリカバリーを実施した翌日、そこにさらなる障害が起こりました。ドメイン環境のPCのログインとか、ファイルサーバへのアクセスとかADの認証の機能を使うものが全体の3割位が失敗するのです。エラーメッセージはこんな感じ。セキュアチャネルの破損というやつですね。

エラーメッセージ: The security database on the server does not have a computer account for this workstation trust relationsship

原因をしらべようと新しいサーバへ入ろうとしますが、上のエラーメッセージが出てデータADの認証が死んでいるのでサーバにログインしたくても出来ない。

Windows系OSでおなじみのこちらの裏技もつかって見ましたがコマンドプロンプトを立ち上げることはできますがAdministratorのパスワードが変更できませんでした。

Windowsでログインパスワードを忘れたときに無理やり書き換える方法

Day04 地獄感のあるのリカバリー 

サーバにログインすることすら絶望的な状況でしたが色々、調べてみると、以下のような状況に有ることがわかりました。図にするとこんな感じ。 f:id:shige_shigetan:20170914020457j:plain

P2Vして仮想環境に移したサーバ:自分自身をプライマリーサーバとして認識しているが認証関係が壊れてる、AD環境のPCとかは基本的にこのサーバを参照している。元の物理サーバ、プライマリー、セカンダリー:こちらのサーバ同士でドメイン・サーバのメンバーになっている。

はい、完全にこれはP2Vしてプライマリーサーバが2個にしてしまったのが原因ですね。データの移行ミスのリカバリー対応でサーバを古い物理サーバを立ち上げた所、同じセグメントにプライマリーのADサーバが2個ある状態にしてしまっていたのです。

最終的にWindows系OSでおなじみの裏技を使ってログイン無しにコマンドプロンプトから強制的にプライマリーのドメインサーバを降格させ(6回警告がでる例のアレです)、セカンダリサーバをプライマリーに無理やり昇格させ、もうサーバを一度ドメインサーバとして昇格させる手順で復旧する事ができました。

まとめ

以前にActive DirectoryP2V移行やらかしたトラブルについて、書いてみました。 随分と時間が経ちましたが今でも思い返すとお腹の下の方に冷たいものを感じます。

  • 上司のいうことはアテに出来ません、とまでは言いませんが最終的にツケは自分で払うことになります。
  • 同じセグメントにプライマリーADサーバ2つはトラブルの元です、移行が終わったらとっとと降格させてましょう。
  • できるならプライマリーADを別のサーバへ移転させてから、P2V移行しましょう。

クアラルンプールの空港から市内へ行く方法、市内から空港へ行く方法

こんにちは、クアラルンプールの空港にはいろいろあって10回以上行ったかなー、と振り返ってます。しげるです。

今回クアラルンプールの空港から市内までの移動方法、交通手段以下の3つがあるので詳しく紹介して行きます。

  • KLIAエクスプレス(特急電車)
  • 空港バス(スカイバス)
  • Grab・Uberなどのタクシー配車サービス

クアラルンプールの空港(KLIA, KLIA2)について

日本からクアラルンプール国際空港(KUL)に来る場合は大きく分けてKLIAとKLIA2の2つのターミナルがあります。

KLIA
KLIAは元々のクアラルンプールの空港ターミナルです。日本からだとJALANAでくる場合はこちらのターミナルになります。

KLIA2
KLIA2は2014年5月にできた格安航空会社(LCC)向けのターミナルです。日本からエラアジアで来るとこちらのターミナルとなります。

クアラルンプール国際空港から市内中心部まではおよそ60kmあり割りと距離があります。比較のためアジア各国の空港から中心部までの距離を調べてみるとマニラ 10km、ジャカルタ30km、シンガポール25kmとなっており空港から市内まで遠い分かります。ちなみに東京駅から成田空港は70㎞です。

空港(KLIA, KLIA2)からKLセントラル、市内まで

KLIAエクスプレス

  • 到着時間のブレなさ:★★★
  • 料金の安さ:★
  • 営業時間:空港発(KLIA、KLIA2)発の場合は始発が4:55、 終電が0:55 市内から(KLsentral駅)発は始発が5:00、終電が0:40 15分〜20分毎に出発します
  • 目的地までの乗り換えの手間:KLsentral駅から乗り換える必要があります

空港からKLセントラルまで28分と所要時間だけで考えるとナンバー1と言える交通手段です。しかし、この圧倒的に有利なポジションを知ってか知らずかKLIAエクスプレスの料金は2016年1月1日に35RM→55RMに一気に値上げされています。

なんだか割高な気がするのであんまり利用していませんが、「ほんまに時間あらへんねん!!マジでヤバイねん!!!!」時は、これ一択です!確実に最速・最短で空港からKLセントラル駅までたどり着けます。

※KLセントラル駅からホテルや目的地にGrab、Uberなどで移動する必要があります。

空港バス(スカイバス)

  • 到着時間のブレなさ:★
  • 料金の安さ:★★★
  • 営業時間:複数のバス会社があり、だいたい24時間バスが出ています(2017年6月現在 )
  • 目的地までの乗り換えの手間:KLsentral駅から乗り換える必要があります

空港からKLCentralのバスターミナルからおおよそ1時間から1時間10分ぐらいです。自分が乗ったバスではなぜか時計が15分ぐらい遅れているのがお約束した。  

ちょっと時間通りに付くのか心配になりますが、そんなバスでも大きく遅れることは今までありません。荷物に手持ちのダンボール箱などはなくスーツケースだけの場合だと、このスカイバスが使いやすいです。

※KLセントラルからホテルや目的地にGrab、Uberなどで移動する必要があります。

空港から市内からはKLIA2なら1Fの到着ロビーの出口の手前にあるチケットカウンターでチケットを買うことが出来ます。

Grab・Uberなどのタクシー配車サービス

  • 到着時間のブレなさ:★★
  • 料金の安さ:★ ただし複数人で乗るとお得です
  • 営業時間:深夜だろうといつでもOK
  • 目的地までの乗り換えの手間:タクシーなので直接行けます。

営業時間の所に深夜だろうと何時でもOK書きましたが、大体空港の周りにタクシーのドライバーはいるのでつかまります。待ち時間も5分から10分ぐらいしかかかりません。  

実はGrabやUberの空港から市内、また逆の市内から空港までの料金はプロモーションにより65RMで固定となっています(2017年6月時点)。実際には市内中心部までの高速道路の料金と合わせて75RM弱ぐらいになります。

※空港からの移動手段としてクーポンタクシーがありますが値段が割高(RM110ぐらいだったかな?)で車もボロい汚くて良いことがないので止めておきましょう。一度だけ使ったことがありますが悲しい気持ちになりました。

まとめと実際どの交通手段を使っているか??

まとめとして表にするとこんな感じです。

KLIAエクスプレス 空港バス Grab,Uber
到着時間のブレなさ ★★★ ★★
料金の安さ ★★★ ★★ 複数人だとお得
乗り換えの手間 ★★★

自分の場合は空港から市内へ向かう場合は夜遅くて荷物が多い場合が多いのでGrab、Uberで家まで直行の一択となります。市内から空港に行く場合はKLSentralまでGrab、Uberで行ってKLSentralから空港バスで空港へ行くことが多いです。

クアラルンプールの空港から市内までの移動手段についてまとめてみました。お役にててれば幸いです。

GNS3 Version2 Windows版をインストールするときに知っておきたいこと

f:id:shige_shigetan:20170603200806j:plain

こんにちは、ITインフラ系エンジニアのシゲルです。

先日、GNS3のバージョン2.02がリリースされました。ネットワークエンジニアの大切なおもちゃ大変便利なツールとして知られるGNS3ですがバージョンが新しくなるにつれて仮想マシンを作る必要があるようになりインストールが難しくなっているように感じます。

今回、GNS3バージョン2 をインストールしてみたのですが比較的新しいバージョンの情報がWeb上に無く割りとハマりました。実際にハマった点をふまえて実際の手順を紹介したいと思います。

インストールする構成

GNS3 version1.5 あたりからGNS3.VMをインストールしなければならなくなったようで、このためGNS3とGNS3.VMのネットワーク構成を頭に入れて置く必要があると感じました。図にするとこんな感じです。

f:id:shige_shigetan:20170603200714j:plain

ホストOSとゲストOS(GNS3VM)対応はこの通りとなっています。

  • HostOnly adapter: ホストOS側:VMnet1 GNS3VM:eth0
  • Nat adapter: ホストOS側:VMnet1 GNS3VM:eth1

インストールしたソフトウェアのバージョン

インストールしたソフトウェアのバージョンを書いておきます。 GNS3用のVMVirtualBox向けとVMWare player向けがありますが、VMWare player向けをオススメします。(自分は普段はVirtualBoxを使う事が多いです)というのもVirtualBox向けのVMネットワークアダプターの編集が必要となり難易度が高いです。

  • GNS3をインストールしたホスト:Windows10 64bit (Windows7以降であればOKなはず)
  • GNS3 バージョン2
  • GNS3.VM.2.0.1(VMware.Workstation向け)  GNS3本体のバージョンと揃える必要があります。
  • VMware Workstation 12 Player12.5.6
  • VMware-VIX-1.15  version 1.15以上が必須で、現時点(2017年6月)の最新版はversion 1.15です。

実際のインストール手順

実際のインストール手順を説明していきます。

VMware Workstation 12 Playerのインストール

VMware Workstation PlayerをVMwareのサイト(こちら)からダウンロードします。

exeファイルをクリックして基本的に「次へ」を順に押してインストールしていきます。

VMware VIX 1.15のインストール

VMware VIX 1.15をVMwareのサイト(こちら )からダウンロードします。GNS3との関連で必ずversion 1.15以上をダウンロードしてください。

exeファイルをクリックしてインストールします。

GNS3 version2 のインストール

GNS3をGNS3のサイト(こちら)からダウンロードします。※要登録

exeファイルをクリックしてインストラーを起動します。

f:id:shige_shigetan:20170604093238j:plain

基本的に「次へ」を押して進めていきます。

f:id:shige_shigetan:20170604093430j:plain

f:id:shige_shigetan:20170604093715j:plain

自分のWindowsマシンにはWireSharkがインストールされていたので、もう一度インストールするか確認が出ました。 今回は再インストールする様に進めていきます。 f:id:shige_shigetan:20170604093913j:plain

次にWireSharkのダウンロードが始まりますがインターネット接続ができるにも関わらずダウンロードできなかったので「いいえ」を押してキャンセルして進めます。

f:id:shige_shigetan:20170604093923j:plain

f:id:shige_shigetan:20170604093946j:plain

f:id:shige_shigetan:20170604095454j:plain

続いてSolar Windsの登録を求められますが広告メールを避けたかったため自分の場合はキャンセルしてすすめました。

f:id:shige_shigetan:20170604095509j:plain

「No」を選択して「Next」をクリックします。

f:id:shige_shigetan:20170604095502j:plain

しばらく待つとインストールが進みこの画面が出たら完了です。

f:id:shige_shigetan:20170604095824j:plain

GNS3VM(VMWare player向け)のインストール

GNS3 VMをGNS3のサイト(こちら)からダウンロードします。ダウンロードを進めるとGNS3.VM.VMware.Workstation.2.0.1.zipといった名前のファイルが出来ますのでこちらを解凍すると「GNS3 VM.ova」のというファイルが出来ます。

VMware Workstation 12 Playerを実行してメニューから「仮想マシンを開く」を選び「GNS3 VM.ova」を選択します。

f:id:shige_shigetan:20170603203026j:plain

この時、フォルダのパスは変更せずにそのままにして下さい。仮想マシンのファイルをDドライブに置いていた所、GNS3から仮想マシン(GNS3.VM)が認識できず原因がわからずハマりました。

f:id:shige_shigetan:20170603202556j:plain

GNS3のインストールしたらはじめにやること

おめでとうございます。ソフトウェアのインストールが終わりましたので基本的な設定に進んでいきます。基本的に設定はGNS3を初回起動したときのセットアップ画面から設定していますが、あとからPreferenceから設定を行う事もできます。

GNS3のローカルサーバのIPアドレスの設定

GNS3を起動させるとこちらのセットアップ画面となります、一番上の「Run modern IOS(IOSv or IOU), ASA and appliances from non Cisco manufactures」を選択します。

f:id:shige_shigetan:20170604105051j:plain

次にローカルサーバの設定に進みます、「Host binding」からGNS3で使うIPアドレスを選択しますが、ここに設定するIPアドレスはGNS3VMと通信できる必要があるのでホストOS側のVMnet1に設定されているIPアドレスをプルダウンから選択し「次へ」をクリックします。ネットワークの構成が分からなくなった場合は一度、こちらの図を見直してみましょう。

f:id:shige_shigetan:20170604105141j:plain

VMnet1のIPアドレスの確認方法も貼っておきます。VMnet1のIPアドレスの確認方法はコマンドプロンプトでipconfig コマンドを実行して VMWare Network adapter VMnet1の項目から確認できます。

f:id:shige_shigetan:20170604110041j:plain

次へを押したタイミングで「Could not connect to [設定したIPアドレス] 対象のコンピュータによって拒否されたため、接続できませんでした」とエラーが出る場合がありますが、自分の場合はタスクマネージャから「gns3.exe」、「gns3server.exe」のプロセスを終了させてもう一度実行すると上手くできました。

f:id:shige_shigetan:20170604110142j:plain

ローカルサーバの設定のあとは連携させるGNS3VMの設定に進みます。このページの手順にそっていれば以下のように選択されているはずなのでNext」をクリックします。

f:id:shige_shigetan:20170604111453j:plain

少々、GNS3VMとの通信に時間がかかります。元の画面でServerSummaryのウィンドウでGNS3VMのステータスがグリーンになっていれば成功です。 ここでも「Could not connect to [設定したIPアドレス] 対象のコンピュータによって拒否されたため、接続できませんでした」とエラーが出る場合がありまタスクマネージャから「gns3.exe」、「gns3server.exe」のプロセスを終了させてもう一度実行するとOKでした。

f:id:shige_shigetan:20170604112609j:plain

Cisco IOSの設定

続いてCisco IOS templateの設定を行います。 Local Serverで動作させる方法とGNS3VMで動作させる方法がありますがGNS3VMを選択した方が安定的に動いたと感じましたので全てGNS3VMを選択しています。

メニューから「Edit」->「Preferences」を選択し「Dynamips」「IOS router template」を選択します。

f:id:shige_shigetan:20170604120304j:plain

「New」を選択し「Run this IOS router on the GNS3 VM」を選んで「Next」をクリックします。

f:id:shige_shigetan:20170604120342j:plain

ローカルにあるIOSのファイルを選択するとIOSを解凍するかと聞かれますので「OK」を押します。

f:id:shige_shigetan:20170604120653j:plain

次にテンプレートにNetwork adaptersとWICmodulesを設定するかどうか聞かれますが、ココらへんはお好みでOKです。あとから変更する事もできます。

f:id:shige_shigetan:20170604121430j:plain

f:id:shige_shigetan:20170604121434j:plain

続いてdle-PCの設定に進みます。GNS3を動かすときにCPU使用を抑えるための設定になります。「Idle-PC finder」をクリックしてしばらくするとIdle-PCが計算されるので「OK」、「finish」を押して完了です。

f:id:shige_shigetan:20170604123422j:plain

お疲れ様でした!これで完了です。テンプレートの設定が完了しましたのでGNS3でRouterを配置出来るようになります。あとは自由にトポロジーを作ってネットワークの勉強を進めていきましょう。

海外拠点の立ち上げに必要なIT機器を規模別に考えてみる

こんにちは、海外にきて随分たったなーと感慨深いシゲルです。

仕事がらいろんな会社のオフィスに行ってIT機器の導入をやってきたので必要になってくるIT機器を一度まとめてみます。製造業で工場や倉庫を立ち上げる場合、最初から大規模になる場合が多く状況が変わってきますので分けて紹介します。

海外進出した時に必要なIT機器はコレだ!規模別に紹介

海外拠点の立ち上げに必要なIT機器を会社の規模別に紹介していきます。

現地法人立ち上げ時 メンバーは5名ぐらいまで

f:id:shige_shigetan:20170530085359j:plain
海外拠点立ち上げの一番最初の時期でレンタルオフィスに間借りしている場合も多いかと思います。メンバーとしてはアカウントとセールスの人間を雇って、さあ仕事するぜいぃ!!って感じのタイミングです。まあ5名ぐらいまでと書きましたが6名、7名になってもさして変わる訳ではありません。

日本だったら@XXXX.co.jp, マレーシアだったら@XXXX.com.myのような会社のアドレスが必要です。ドメインを確保したらOffice365やGoogleAppsなどのサービスを利用してメールアドレスを使えるようにしましょう。

  • ファイヤーウォール機器

レンタルオフィスの場合にもFWが必要となります。外側(レンタルオフィス側)と内側(自分たちのオフィス側)をネットワークとして区別
最近だとランサムウェアによる被害も流行っているようですので、ぜひ入れておきたい所です。

  • 無線アクセスポイント

 小さなオフィスで配線するのも面倒だと思うのでいっその事、パソコンは無線で接続してしまいましょう。最近ではノートパソコンだけではなくデスクトップでも無線LANが使えるタイプがあります。そもそもレンタルオフィスの場合、配線できないかもしれません。

  • NASサーバー

 ファイルを共有するための機器です。大きめのファイル(CADファイル、映像ファイル)を業務でメンバーとやり取りする必要がある場合、導入しておいたほうが良いでしょう。あるとかなり便利です。個人のPCはハードディスクは故障するとデータが飛びますがNASのハードディスクは複数で構成されていることが多く故障に強い仕組みとなっています。

  • プリンター

紙でのドッキュメン(経理書類など)の保存が必要な場合プリンターを買っておきましょう。この段階では人数も少ないので業務用の大きな複合機を用意する必要はありません。

  • 大事な事

現地でPCを買う場合は必ずオペレーションシステム(windows10, windows7とか)が英語表示のものにしましょう。
日本語バージョンと英語バージョンを比べると、おそらく値段は同じか日本語バージョンの方が割高になりますが 海外での入手のしやすさで考えると断然、英語バージョンです。また日本語バージョンを使うと日本人しかメンテナンスできないパソコンができあがります。購入元の会社がサポートしてくれたとしても、日本人が来なきゃいけない事をかんがえると対応までの時間が伸びる事を覚悟しなければなりません。


事業拡大期、メンバー10人以上

f:id:shige_shigetan:20170530085522j:plain
めでたく事業が拡大期に入りました、おめでとうございます。初期の立ち上げが完了しメンバー10人以上に増えていったところでしょうか。
おそらくパソコンも10台以上になってるとおもいます。

  • インターネット

もともとの事務所がレンタルオフィスだった場合、レンタルオフィスの共用のインターネットを使っていたかと思います。事業拡大を機会に別のオフィスに移る場合は忘れずインターネット回線の申込を行いましょう。

 パソコンが10台以上になってくると管理が面倒になってきます。またメンバーが増えスタッフ間でITスキル、リテラシーに差があることが分かってくる場合もあると思います。そんな時にPCの設定、各メンバーのアカウント情報を一括で管理できるようにしてくれるのがこのAD(Active directory)サーバーです。

  • バックアックのためにNASを使う

以前に購入したNASをサーバーのデータバックアップ用に使います。NASにあったデータはサーバーへ移します、これでバックアップが担保された構成となりました。

  • アクセスポイント(AP)

もし立ち上げ期の段階で家庭用の無線アクセスポイントを使っている場合、家庭用の場合、接続台数(PCとスマフォ)が10台 ぐらいが上限です、業務用に買い替えましょう。

  • ドアセキュリティー、監視カメラ

レンタルオフィスではなく新たにオフィスを借りた場合、ドアセキュリティーと監視カメラを設置しておきましょう。

工場や倉庫の場合

f:id:shige_shigetan:20170530085538j:plain
製造業、運輸業で工場、倉庫がある場合は事務所のみの場合と大きく必要なIT機器が変わってきます。最近では工場、倉庫のエリアにパソコンだったりハンディーターミナル、バーコードリーダを置いて現場でデータ入力を出来るようにしている所も多いです。特に工場の場合そうなのですが、遮蔽物が多く自由にLANケーブルを配線するといったことが難しいです、そこで必要となってくるのが無線のアクセスポイントとなります。

  • 無線アクセスポイント(たくさん)

広い工場エリアを全てカバーできるように配置を考える必要があります。またアクセスポイントまでの配線も気にする必要があります。実際に配置を考えるときはパズルの様に制約の有る条件をいろいろ考慮して考えるわけでなかなか面白いです。

  • 無線アクセスポイントコントローラー

こちらのコントローラがあると無線アクセスポイントの電波の強さ(機器によっては向きも)自動でコントロールしてくれるようになります。アクセスポイントが4個以上になってくると、設置前に調整して設置する、後はそれぞれのアクセスポイントが自律的に動作するということが難しくなります。そこでこのコントローラで集中管理する必要になってきます。


以上、海外の現地法人で必要なIT機器をまとめてみました。もう一回、クラウドを利用したバージョンも書いてみたいと思います。

Windowsマシンの初期設定を自動でババ〜ンっとやってみる

こんにちは、普段はネットワークエンジニアをやっています。しげるです。

先日の記事でAnsibleを使ってWindowsの構成管理をする場合に必要な設定と簡単なサンプル実行をやってみました。

shigeluma-tech.hatenablog.com


最終的にはボタン一発でAzureにActiveDirecrotoyを立ててなんなら冗長化構成にして1台壊れた場合に自動で検知してサーバー生成するぐらいにしてみたいと思います。(できるかな、、、、)

今回はWindowsマシンをセットアップする場合の初期に行う設定をAnsibleを使って自動でやっていきます。

実施したOSのバージョン、インストールした各ソフトウェアのバージョン

構成管理の対象のWindowsマシン、構成管理、Ansibleを実行する側のWindowsマシン、両方のWindows Firewallは切ってあります。

構成管理の対象のWindowsマシン

 Windows2012R2
 Powershell4

構成管理、Ansibleを実行する側

 Windows10上でLinux環境「Virtual box」+「vagrant」(CentOS)
 Ansible 2.3
 Python 2.7.5

初期設定をする前のWindowsマシンの状態

インストールメディアからインストールを行いadministratorアカウント、パスワードが設定されており、ネットワーク関連の設定(固定IPアドレス、サブネット、ゲートウェイを設定)がされている状態です。Windows Remote Management(WinRM)とパッケージ管理ツール「Chocolatery」についても事前に手動でインストールしております。(ココらへんはもう少し手間を減らしたい。。)
確認のためにリモートデスクトップも接続できる状態にしました。

Ansibleで初期設定、セットアップする項目はこんな感じ

だいたいサーバーを手動でセットアップする時の項目を思い浮かべて並べてみました。

設定項目については公式ドキュメントのWindowsの部分に詳細がのっています。
http://docs.ansible.com/ansible/list_of_windows_modules.html

今回、YAMLファイルをWindows Update関連のものとそれ以外のものに分けました。

タイムゾーンDNSサーバー、アプリケーションのインストールのためのYAMLファイル
アプリケーションはGitクライアント、PDFビューア、Firefoxを入れています。

---
- hosts: all

  tasks:
    - name: タイムゾーンの設定
      win_timezone:
        timezone: "Tokyo Standard Time"
    
    - name: DNSサーバーの設定
      win_dns_client:
        adapter_names: "*"
        ipv4_addresses:
          - 8.8.8.8
          - 8.8.4.4     
        log_path: c:\dns_log.txt

    - name: パッケージのインストール(Chocolatery)
      win_chocolatey: name={{ item }} state=latest
      with_items:
        - git
        - PDFXChangeViewer
        - Firefox

Windows Updateと再起動のためのYAMLファイル

---
- hosts: all

  tasks:
    - name: Windows updateの実施
      win_updates:
        category_names: 
          - SecurityUpdates
          - CriticalUpdates
          - UpdateRollups
     
    - name: Windows 再起動の実施
      win_reboot:
        when: update_result.reboot_required
        shutdown_timeout_sec: 3600
        reboot_timeout_sec: 3600

Ansibleで操作できなかった項目

Ansibleで操作できなかった項目についても正直に書いておきたいと思います。こちらはのちほどPowerShellあたりで実現できそうな方法を探してみます。

  • Windows Updateの有効化
  • 表示言語の設定
  • ファイルの拡張子を表示させる
  • chocolateryのインストー

Ansibleでのwindowsマシンの構成管理の始め方を解説するよ

f:id:shige_shigetan:20170510180733j:plain

こんにちは、Ansibleを使うのは6ヶ月ぶりぐらいです、シゲルです。

企業内の基幹システムもクラウドファーストと言われている昨今ですが一般の企業ですとWindowsサーバをたくさん使ってたりします。

基幹系のエンタープライズシステムもクラウドも合うよねーと思いますが、特にActive Directoryについてはクラウド上にポコポコっとADサーバーと並べて立ててネットワーク越しに使って、壊れたらパパっと再構成というような考え方は有りなんじゃないかと思っています。
そこで「ansible 」と「windows」の組み合わせについて調べて見ることにしました。

最終的にはコマンド一発でAzure上でADサーバーを立てれるぐらいを目指してみます。(無理かもしれない、、)。今回はAnsibleを使ってwindowsマシンを構成管理する場合に必要な準備と簡単なサンプルを実行する方法を紹介していきます。

実施した環境のOSのバージョン、インストールした各ソフトウェアのバージョン

構成管理の対象のWindowsマシン、構成管理、Ansibleを実行する側のWindowsマシン、両方のWindows Firewallは切ってあります。

構成管理の対象のWindowsマシン

  • Windows2012R2
  • Powershell4 (標準でインストールされています。)


構成管理、Ansibleを実行する側

自分の環境で一番手軽だった「Virtual box」+「vagrant」(CentOS)で実施しました。
vagrant(Ubuntu)やMacでも実施できると思います。ただ、Windows Subsystem for Linuxについては一度やってみたのですがansible 1.5.4しかapt-getでインストールできず、apt lineの変更方法がすぐわからなかったので断念しています。本当であれば操作する側も素のWindowsマシンだけで出来たらもう少し簡単だったかな~と思っています。

Ansibleを使ってできるwindows内の設定項目

Ansibleを使ってできるwindows内の設定項目については以下の通りです。

公式ドキュメント
https://www.ansible.com/windows

  • Windowsマシンの情報を集める事ができる
  • Windows MSI ファイルを使ってのインストール、アンインストー
  • Windowsの機能の有効化または無効化
  • サービスの起動停止、管理
  • ローカルユーザ、グループの作成
  • パッケージマネージャ「Chocolatey」をつかったWindowsアプリの管理
  • Windowsアップデートのインストール、管理
  • ファイルのリモートサイトへの送付
  • PowerShell scriptsの実行

こうやって見てみると色々できそうですね。わーい。今回はサンプルとしてサービスの起動停止、管理としてWindows Updateのサービスを起動状態にする様にしていきます。

構成管理の対象のWindowsマシン側の準備

Ansibleを使ってWindowsを操作する場合は操作対象のWindowsマシンにWindows Remote Management(WinRM)のインストールが必要となります。
PowerShellを通じてインストールを行いますが、PowerShellの実行ポリシーを変更しておきます。

こちらが公式のインストールスクリプになります。
ansible/ConfigureRemotingForAnsible.ps1 at devel · ansible/ansible · GitHub

#Powershellの実行ポリシーの変更
PS C:> Get-ExecutionPolicy
Restricted
PS C:>Set-ExecutionPolicy RemoteSigned
Execution Policy Chang

PS C:> Get-ExecutionPolicy
RemoteSigned

#Ansible用WinRMモジュールのインストール
PS C:\> mkdir C:\work
PS C:\> cd .\work

PS C:\work> Invoke-WebRequest -Uri https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRem
otingForAnsible.ps1 -OutFile ConfigureRemotingForAnsible.ps1

PS C:\work> powershell.exe .\ConfigureRemotingForAnsible.ps1

Ansibleを実行するマシンでの必要なパッケージのインストー

pythonとansiblleのインストー

 #パッケージのインストール
sudo yum -y install epee-release   ※ansibleは標準リポジトリに無かったのでこちらを追加します。
sudo yum -y install python
sudo yum -y install ansible
sudo yum -y install python-pip

sudo yum -y install git
sudo pip install --upgrade pip
sudo pip install pywinrm

#バージョンの確認
$ ansible --version
ansible 2.3.0.0

$ python -V
Python 2.7.5

構成管理の対象サーバーを示すhostsファイルの作成

続いて、Ansibleで構成管理する対象の情報を示すhostsファイルを作ってきます。
対象のWindowsマシンをIPもしくはFQDNで記載します。次にansible_ssh_use、ansible_ssh_passにwindowsのユーザー名とパスワードを下記の様に書きます。

[windows]
192.168.0.221

[windows:vars]
ansible_ssh_user=administrator
ansible_ssh_pass=XXXXXXXXXX
ansible_ssh_port=5986
ansible_connection=winrm

ansible_winrm_server_cert_validation=ignore

続いてここまでの動作確認です。pingを打つとpongが帰ってくるいう、プログラミングでいうと「Hello, world!!」的なアレです。インベントリファイルは同じディレクトリに入っているhostsファイルを使っています。

$ ansible windows -i hosts -m win_ping192.168.0.221 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

インターネットが雨の日に遅い理由を考えてみる

こんにちは、天気予報は降水確率40%なら傘を持っていかないシゲルです。大体ずぶ濡れです。ハイ。

日本で過ごしていたときはそうでも無かったんですが、マレーシアに住んで以来、雨が降ってたりスコールで土砂降りになってたりすると、「あれっ???ネット遅いんちゃうん??」と思う機会が多くなりました。

以前の仕事でたまたまインターネットの会社の人と話す機会がありまして、その時に話してた内容から雨の日にネットが遅くなる原因をまとめたので紹介してみます。

雨の日にネットの速度が遅い原因は??

インターネットプロバイダーの通信設備の故障や漏電?

インターネットの光回線のなどの物理的な回線があなたのお家からインターネットサービスを行う会社の通信設備まで敷設されているわけですが、ずーっと一直線にケーブルが引かれている訳ではなく網目の様に近くの通信設備で周囲一体の回線を集約して上位の通信設備につながっています。雨の日になると、どこかの通信設備が漏電し動かなくなる事があります(住んでるマンションの所かもしれませんし、ちょっと先の基地局かもしれません。)


インターネット回線の経路はバックアップの経路があったりするのですが普段使う経路が故障している分、バックアップ回線の負荷が多くなり、これが原因であなたのインターネットのスピードが遅くなる、といった塩梅のようです。他にもネズミなんかが雨のせいで建物の中に避難してきて、部屋の中の通信設備をかじったりして故障、、、みたいなコンボも有りそうですね。

雨でインターネットを使う人が多くなる?

二つ目の理由は雨の日は外出する人が減り、家にいる人が増えるのでインターネットを使う人が増える。そして、インターネット回線の能力がひっぱくして遅くなるというものでした。確かに雨が降るとタクシーは捕まらない、Grab、Uberは割増料金になる、道路は渋滞する、電車もめっちゃ混むなど出かける気を削がれる事が多くなります。


またマレーシアのような途上国では通信キャリアの設備も日本よりショボかったりします。(それでもマレーシアのインターネット速度は速い方だけど)ついでに言うと、故障を検知するシステムもショボかったりするします。つまり、サービスプロバイダーの人も故障があっても即座に気づくことができません。

モバイル通信、インターネットも雨の日は調子が悪い?

Wimaxなんかのモバイル・インターネットも雨のはスピードが遅くなる場合があります。
これは電波の波の大きさからすると雨粒ってめちゃくちゃ大きいので雨粒があると迂回は出来るけど勢いが弱くなるかんじですかね。海で波が岩場で勢いが弱まるけど、波は進んでくイメージです。

まえの2つと別々に発生するわけではなく、悪条件さらに一個追加!!といった所です。


まとめ

まとめと言うか、ココまで書いておいてごめんなさい。

コレを読んでも雨の日にインターネットが遅いのは解決できません。

インターネットプロバイダーのエンジニア頑張れっ!!と祈っておきましょう。