BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【Ansible】AnsibleでWindowsのレジストリキーを変更する

 こんにちは!
 BFT名古屋支店の、佐野です。

 今回も実際にAnsibleを使用する例および方法についてお送りしていきます。
 今回お送りするのは、Ansibleから管理対象となるWindowsレジストリキーの変更を行なう方法です。


はじめに:Windowsを管理する場合の前提

 AnsibleでWindowsの構成管理を行なう場合の前提については、こちらの記事を参照ください。

bftnagoya.hateblo.jp

 本記事は以上の記事の内容を行なった、ないしそれに相当する環境であることを前提としております。
 AnsibleによるWindowsの構成管理を行なう準備がまだという場合は、以上記事に沿って環境の準備をお願い致します。


Ansibleでレジストリキーの変更を行なう場合に使用するモジュール

 以前お送りしたAnsibleでWindowsUpdateを行なわせる記事にも同様のことを書いておりますが、Ansibleにおいて管理対象の構成を変更・管理する場合は、その変更処理の内容をPlaybookに記述する必要があります。
 その処理を実行するためのコードとなるのが、Ansibleの“モジュール”です。
 Playbookで行なわれる処理はすべてモジュールを組み合わせで成されているものであり、使用したモジュールによって処理内容が決まると言ってよいと思います。

 Ansibleでは汎用的に使用できるモジュールの他、Windowsの自動構成管理を行なうためのモジュールも多くサポートされており、今回使用するWindowsレジストリキーに変更を加えるモジュールもそのひとつです。

 今回使用するレジストリキー変更用のモジュールは以下になります。

使用モジュール 概要
win_regedit レジストリキーの値を追加、変更または削除します。

レジストリキー(の値)を変更するPlaybook

 例えば「ロック画面に通知を表示する」機能は(Windows10の場合)[設定] > [システム] > [通知と操作]から行なうことで可能ですが、レジストリキーを変更することでも無効にすることができます。
 そしてそのレジストリキーを変更することによってロック画面に通知を表示する機能を無効にする操作をPlaybookの処理とした場合、以下のようになります。

- hosts: all

  tasks:
  - name: Disable PushNotifications
    win_regedit:
      key: HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\PushNotifications
      value: ToastEnabled
      data: 0
      datatype: dword

 レジストリキーを変更するには、勿論そのレジストリキーがあるパスを指定する必要があります。
 win_regeditモジュールにおいてはそれをkey(またはpath)に記述しますが、ここではそのレジストリキーが存在するキーパスまでを指定し、レジストリの値に関してはvalue(またはname)にて指定を行ないます。

 そしてレジストリキーの値に関してはdataに入れることになります。  ToastEnabledの場合、通知を無効化する場合は0、有効にする場合は1と指定します。
 このdataの値に関してはレジストリキーそれぞれに指定すべき値がありますので、実施前に調べておく必要があります。

 またdatatype(またはtype)ではレジストリキーの値の種類を指定します。
 ToastEnabledの値の種類は「REG_DWORD」ですので、これに対応するdwordを指定しています。
 こちらについてもレジストリキーによって種類が違いますので、実施前に対応するものを把握しておく必要があります。
 win_regeditで指定できるtypeは以下の通りです。
 ※括弧内は対応しているレジストリの値の種類です。

  • none
  • binary (REG_BINARY)
  • dword (REG_DWORD)
  • expandstring (REG_EXPAND_SZ)
  • multistring (REG_MULTI_SZ)
  • string (REG_SZ)
  • qword (REG_QWORD)

さいごに

 以上が管理対象のレジストリキーの変更を行なう方法およびPlaybookの解説となります。
 今回上げた通知の無効化の他、初期設定としてレジストリキーで操作できるいくつかの項目を無効化したいことがあると思います。
 特に複数台に対して一気にこのような共通の設定をしたい場合には、やはりAnsibleによる自動化が役立つと言えます。
 使用頻度が高いモジュールであると思いますので、使用する場合は公式ドキュメントとともにこちらの記事を見返していただければ幸いです。