Ansible로 영어 버전의 WindowsOS를 일본어화하여 SQLServer 설치

소개



Ansible을 사용해, 영어판 WindowsServer2016의 ComputeEngineImage를 일본어화해, SQLServerExpress를 인스톨 하는데 성대하게 빠졌다. . .
그리고 구구도 같은 일로 빠져 있는 기사를 찾을 수 없어, 어딘가의 누군가의 도움이 된다고 생각했다.

Ansible에서 대상 VM에 접속하는 곳까지는 어디에나 실려 있고 할애.

Ansible 환경


  • CentOS 7
  • Ansible 2.6.1

  • 설치 대상 VM


  • WindowsServer2016

  • WindowsServer 일본어



    windows firewall 끄기



    이것은 공식 문서
    - name: Enable firewall for Domain, Public and Private profiles
      win_firewall:
        state: disabled
        profiles:
        - Private
        - Public
      tags: disable_firewall
    

    언어 팩 설치



    언어 팩이 들어 있지 않으면 설치하고 다시 시작.
    ※언어 팩은 CloudStorage에 업로드됨
    - name: create temp directory
      win_file:
        path: C:\temp
        state: directory
    - name: download language pack
      win_shell: gsutil cp "{{ language_pack }}" c:\temp\
    - name: install language pack
      win_shell: |
        $LangPacks = DISM.exe /Online /Get-Intl /English |
        Select-String -SimpleMatch 'Installed language(s)'|
            ForEach-Object {
                if($_ -match ':\s*(.*)'){$Matches[1]}
            }
    
        if($LangPacks -notcontains 'ja-JP'){
          Dism /online /Add-Package /PackagePath:c:\temp\lp.cab
        }
    
    - name: reboot
      win_reboot:
    

    시간대 및 로케일 설정



    시간대, 로케일 및 UI를 일본으로 설정
    - name: Set timezone to 'Japan' 
      win_timezone:
        timezone: Tokyo Standard Time
    
    - name: Region設定
      win_region:
        copy_settings: "true"
        location: "122"
        format: ja-JP
        unicode_language: ja-JP
      register: result
    
    - name: 日本語UIの明示
      win_shell: Set-WinUILanguageOverride -Language ja-JP
    
    - name: 日付・時刻の[形式]を表示言語と同一にする
      win_shell: Set-WinCultureFromLanguageListOptOut -OptOut $False
    
    - name: setLanguagelist
      win_shell: Set-WinUserLanguageList -LanguageList ja-JP,en-US -Force
    
    - name: キーボード設定を日本語化
      win_shell: Set-ItemProperty 'registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters' -Name 'LayerDriver JPN' -Value 'kbd106.dll'
    
    - name: 既定の入力方式を上書き
      win_shell: Set-WinDefaultInputMethodOverride -InputTip "0411:00000411"
    
    - name: Change Region - Reboot
      win_reboot: 
      when: result.restart_required
    

    .Net framework 설치


    - name: Install NET-Framework-Core from file
      win_feature:
        name: NET-Framework-Core
        state: present
    

    환영 화면 및 새 사용자 계정 설정



    이것을 설정하지 않았기 때문에 매우 빠졌습니다.
    GUI로 이것을 설정한다(PowerShell등으로 하는 방법이 발견되지 않았다...)



    SQLServer 설치


    - name: create installer directory
      win_file:
        path: C:\temp\sqlserver_installer
        state: directory
    
    - name: download SQLServer installer
      win_shell: gsutil cp -r "{{ sqlserver_installer }}" C:\temp\sqlserver_installer\
    
    - name: download PsExec
      win_shell: gsutil cp -r "{{ PsExec_installer }}" c:\temp\
    
    - name: SQLServerインストール
      win_psexec:
    #コマンドは適宜要変更
        command: C:\temp\sqlserver_installer\setup.exe /Q /CONFIGURATIONFILE=C:\temp\sqlserver2008R2\ConfigurationFile.ini" /IAcceptSQLServerLicenseTerms="True"
        priority: high
        executable: C:\temp\PSTools\PsExec64.exe
        username: "{{ ansible_user }}"
        password: "{{ ansible_password }}"
        system: yes
    

    덤: 오류가 발생했을 때의 로그



    이런 식으로 영어로 인식되고 있었다.
      OS region:                     United States
      OS language:                   English (United States)
    
    Exception summary:
    The following is an exception stack listing the exceptions in outermost to innermost order
    Inner exceptions are being indented
    
    Exception type: Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngineRuleFailureException
        Message: 
            The language of the original SQL Server 2008 R2 media and the language of the service pack do not match. To continue, match the language of the service pack with the original SQL Server 2008 R2 media.
        Data: 
          SQL.Setup.FailureCategory = RuleViolationFailure
          DisableWatson = true
        Stack: 
            at Microsoft.SqlServer.Configuration.RulesEngineExtension.RunRulesAction.ExecuteAction(String actionId)
            at Microsoft.SqlServer.Chainer.Infrastructure.Action.Execute(String actionId, TextWriter errorStream)
            at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionHelper(TextWriter statusStream, ISequencedAction actionToRun)
    

    좋은 웹페이지 즐겨찾기