ライトウェルブログ

2020/07/31PC展開を自動化!Ansible便利モジュール編②

こんにちは、ライトウェルAnsibleチームの増田です。

前回のブログではファイルをコピーするwin_copyモジュールを紹介しました。
今回は前回紹介したwin_copyモジュールとwin_packageモジュールを組み合わせて
アプリケーションのインストールまで自動化していきたいと思います。

自動インストールするアプリケーションはOffice2010です!
Office製品を利用されている方も多いと思いますので、
参考にしていただければと思います!

Playbookを書き始める前に…

Playbookを書き始める前に次の2つを確認しておきましょう。

  1. インストールしたいアプリケーションにサイレントインストールのオプションがあるか
  2. アプリケーションのプロダクトID

それぞれ確認方法は以下の通りです。
そんなの知ってる!!という方は読み飛ばしてくださいネ。

  • サイレントインストールオプションの確認方法

サイレントインストールオプションの確認方法はググるという方法と
コマンドプロンプトからhelpオプションをつけてアプリケーションを実行するという方法があります。

Officeでもhelpオプションを付けてsetup.exeを実行すると
コマンドラインパラメータを確認することができましたので、これを参考にPlaybookを作成します!

  • アプリケーションのプロダクトIDの確認方法

PowerShellより「Get-WmiObject Win32_Product」コマンドを実行し、
該当製品の「IdentifyingNumber」を確認してください。
「IdentifyingNumber」の値が、ここで確認したかったアプリケーションのプロダクトIDになります!

 

Officeサイレントインストールの下ごしらえ

Officeのサイレントインストールをする場合は、さらにもう一つ準備が必要です!
それは何かというと、config.xmlの編集です。
インストールフォルダの中の「ProPlus.WW」にあるはずですので確認してみましょう。
※Officeのエディションによってフォルダ名が異なります。
※Office365/Office2016/Office2019ではconfiguration.xmlとなっているため注意してください。

先程確認したOfficeのコマンドラインヘルプにもありましたが、
setup.exeを実行する際のオプションで、このconfig.xmlを一緒に指定すると
config.xmlに書かれている内容をもとにインストールが行われます。
なので、config.xmlを駆使することによってインストールのカスタマイズができるというわけです!

今回はサイレントインストールが可能となるようにconfig.xmlの
以下のパラメータを編集して保存しましょう。
各パラメータの意味合いは以下のようにご認識いただければと思います。

  • Display Level…ユーザインターフェースを表示するか…noneに変更
  • CompletionNotice…インストール完了通知を表示するか…noに変更
  • SuppressModal…エラーメッセージやその他ダイアログを非表示にするか…yesに変更
  • AcceptEula…Microsoft ソフトウェア ライセンス条項に同意するか…yesに変更

これでOfficeサイレントインストールのための下ごしらえは完了です!

 

Playbookを作成しよう

続いてPlaybookを作成していきましょう。
今回のPlaybookの内容は以下の通りです。
前回作成したPlaybookに④の処理を追加しました。

①クライアント側のCドライブ直下にファイル配布先ディレクトリ(InstallSoftware)を作成する
②ファイルサーバ(192.168.100.100)から対象フォルダをInstallSoftwareディレクトリにコピーする
③ZIPファイルを解凍する
④クライアントにアプリケーションをインストールする ←NEW

サンプルPlaybookはこちらです。

---
- hosts: windows
  tasks:
    - name: インストーラ配布先ディレクトリの作成
      win_file:
        path: C:\InstallSoftware
        state: directory

    - name: インストーラーを配布する
      win_copy:
        remote_src: true
        src: '\\192.168.100.100\share\Office2010.zip'
        dest: 'C:\InstallSoftware\Offce2010.zip'


    - name: インストーラーを解凍する
      win_unzip:
        src: 'C:\InstallSoftware\Offce2010.zip'
        dest: 'C:\InstallSoftware\'

    - name: Offce2010をサイレントインストールする
      win_package:
        path: C:\InstallSoftware\Office2010\x86\setup.exe
        product_id: '{90140000-002A-0411-1000-0000000FF1CE}'
        state: present
        arguments:
        - /config "C:\InstallSoftware\Office2010\x86\ProPlus.WW\config.xml"

今回のポイントはwin_packageモジュールのargumentsproduct_idオプションです。

argumentsでは、アプリケーションをインストールするときに必要な引数を指定します。
今回はhelpオプションで確認したコマンドラインヘルプ結果をもとに、
「/config <config.xmlの絶対パス>」を指定しました。

product_idオプションには事前に確認しておいたプロダクトID(IdentifyingNumber)を指定することで、
アプリケーションがすでにインストールされているかどうかを確認し冪等性を担保してくれます。

 

Playbookを実行してみる!!

それでは、Playbookを実行して結果を確認してみましょう!

[root@Ansible01 ansible]# ansible-playbook -i inventory win_office_install.yml

PLAY [windows] ******************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************
ok: [192.168.123.100]

TASK [インストーラ配布先ディレクトリの作成] *******************************************************************************************************************
ok: [192.168.123.100]

TASK [インストーラーを配布する] *************************************************************************************************************************
changed: [192.168.123.100]

TASK [インストーラーを解凍する] *************************************************************************************************************************
changed: [192.168.123.100]

TASK [Offce2010をサイレントインストールする] **************************************************************************************************************
changed: [192.168.123.100]

PLAY RECAP **********************************************************************************************************************************
192.168.123.100: ok=5    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

無事に成功しました(^^)
実機を確認してみましょう。ちゃんとインストールされていますね!

試しにEXCELを起動してみましたがちゃんと使えそうですね!

 

アプリケーションのインストール部分がうまく行かない場合は、
argumentsで指定したオプションで本当にサイレントインストール可能か確認してみてください!

このようにインストーラのコピーからアプリケーションのインストールまで自動化できれば
PCセットアップのための時間や負荷が軽減されますね!

ライトウェルではOfficeの他にもNotesやウイルス対策ソフト、
AdobeReaderなどのインストールも自動化してます。

このブログを御覧のみなさんも、
お使いのアプリケーションがサイレントインストールに対応しているか確認して
Ansibleを使った自動インストールにぜひ挑戦してみてください!!

今回の記事のまとめです。

  • サイレントインストールに対応していればAnsibleでインストールの自動化が可能
  • win_copy+win_packageでアプリのインストールの一連の流れを自動化できる

 

次回はAnsibleTowerを使用したPCセットアップの自動化について書こうと思います!

トップページに戻る