2020/07/31PC展開を自動化!Ansible便利モジュール編②
こんにちは、ライトウェルAnsibleチームの増田です。
前回のブログではファイルをコピーするwin_copyモジュールを紹介しました。
今回は前回紹介したwin_copyモジュールとwin_packageモジュールを組み合わせて
アプリケーションのインストールまで自動化していきたいと思います。
自動インストールするアプリケーションはOffice2010です!
Office製品を利用されている方も多いと思いますので、
参考にしていただければと思います!
Playbookを書き始める前に…
Playbookを書き始める前に次の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モジュールのargumentsとproduct_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セットアップの自動化について書こうと思います!