AnsibleからSQL Serverをインストールする
会社でのPython布教活動の一環で、Ansibleの紹介をしてきました。
今の部署はSQL Serverを使うので、AnsibleでSQL Serverをセットアップするデモを準備しようとした所、
色々調べるのに手こずってしまったので、忘れないようにメモ。
検証環境
Ansibleを動かすのはCentOS7 + Python3。AnsibleはVer2.4を使用。
セットアップ対象はWindowsServer2012 R2 とSQL Server2012のStandard Edition。
(それぞれ評価版を使用)
結論
実際に動かすことの出来たPlaybook(抜粋)は以下
# ISOファイルのマウント - win_disk_image: image_path: C:\work\SQLServer2012SP1-FullSlipstream-JPN-x64.iso state: present register: disk_image_out_SQL # SqlServerのインストール実行 - win_psexec: command: '{{ disk_image_out_SQL.mount_path }}setup.exe /CONFIGURATIONFILE=C:\work\ConfigurationFile.ini /Q' priority: high executable: C:\work\PSTools\PsExec.exe system: yes
win_psexec
を使うので、以下のサイトから事前に取得。
(今回は予めISOファイル等と一緒に、必要なファイルをセットアップ対象サーバに配置しておいた)
- インストールを実行する際、
system: yes
の指定は必須。(実行時にエラーになる)
SQL Serverをコマンドからインストール
SQL Serverをコマンドからインストールする方法は、
- setup.exeに必要なパラメータを(大量に)与えて実行
- 必要なパラメータを記載したConfigurationファイルをsetup.exeに与えて実行
の選択肢があり、今回は後者を利用。
SQL ServerのStandard Editionなら、Configurationファイルは一度画面からのセットアップを実行してインストールを進め、
インストールの準備完了の画面を表示させると、入力した内容を記述したConfigurationファイルのパスが画面下部に表示されているので、それを利用するのが楽。
一部修正が必要だったパラメータは以下
UIMODE="Normal"
の記述をコメントアウト(行頭「;」でコメント)/Q
パラメータ(インストール時UI非表示)を指定する場合は上記をコメントアウトする必要あり。
IAcceptSQLServerLicenseTerms="True"
- インストール条項への同意。このパラメータはファイルに書き出されなかったので手動で追記。
SAPWD
- 混合認証モードを選択した場合のsaのパスワード。同じくファイルに書き出されなかったので手動で追記。
その他パラメータの詳細は以下を参照
コマンド プロンプトからの SQL Server 2012 のインストール
今回はAnsibleを使用して、
- ISOファイルマウント
- .Net Framework3.5のインストール
- SQL Serverインストール実行
- SQL Serverに必要なファイアウォールの受信設定
まで確認出来た。