number09のblog

Pythonとバイクが好きな人のブログ

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ファイル等と一緒に、必要なファイルをセットアップ対象サーバに配置しておいた)

PsExec

  • インストールを実行する際、system: yesの指定は必須。(実行時にエラーになる)

SQL Serverをコマンドからインストール

SQL Serverをコマンドからインストールする方法は、

  1. setup.exeに必要なパラメータを(大量に)与えて実行
  2. 必要なパラメータを記載したConfigurationファイルをsetup.exeに与えて実行

の選択肢があり、今回は後者を利用。

SQL ServerのStandard Editionなら、Configurationファイルは一度画面からのセットアップを実行してインストールを進め、
インストールの準備完了の画面を表示させると、入力した内容を記述したConfigurationファイルのパスが画面下部に表示されているので、それを利用するのが楽。

一部修正が必要だったパラメータは以下

  • UIMODE="Normal"の記述をコメントアウト(行頭「;」でコメント)
    • /Qパラメータ(インストール時UI非表示)を指定する場合は上記をコメントアウトする必要あり。
  • IAcceptSQLServerLicenseTerms="True"
    • インストール条項への同意。このパラメータはファイルに書き出されなかったので手動で追記。
  • SAPWD
    • 混合認証モードを選択した場合のsaのパスワード。同じくファイルに書き出されなかったので手動で追記。

その他パラメータの詳細は以下を参照
コマンド プロンプトからの SQL Server 2012 のインストール

今回はAnsibleを使用して、

まで確認出来た。