Windowsマシンの初期設定を自動でババ〜ンっとやってみる
こんにちは、普段はネットワークエンジニアをやっています。しげるです。
先日の記事でAnsibleを使ってWindowsの構成管理をする場合に必要な設定と簡単なサンプル実行をやってみました。
最終的にはボタン一発で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のインストール