2023年6月3日土曜日

Windows用Zabbix Agent 2をmsiexecコマンドを使ってサイレントインストールする

先日、Windows用Zabbix Agent 2をMSIインストーラのウィザードに従ってGUIでインストールする手順を記事にした。

そこまで多くの設定が必要ではないとはいえ、GUIで設定することも手間となる。幸いMSIインストーラはmsiexecというコマンドを使えば、ウィザードを使わずにサイレントインストールをさせることができる。

本記事では、Windows用Zabbix Agent 2をmsiexecコマンドを使ってサイレントインストールする手順を記載する。また、Ansibleを使ってZabbix Agentを自動インストールするPlaybookを作ってみたので紹介する。

環境

  • Zabbix Server : 6.0.17
  • 監視対象OS : Windows Server 2022
  • Zabbix Agent 2バージョン : 6.0.17

Zabbix Agentサイレントインストール手順

1. Zabbix Agent 2のダウンロード

Zabbix Agent 2は以下URLからダウンロードできる。

今回は、以下の通り、Zabbix 6.0用のエージェントを指定する。

項目 設定値
OS DISTRIBUTION Windows
OS VERSION Any
HARDWARE amd64
ZABBIX VERSION 6.0 LTS
ENCRYPTION OpenSSL
PACKAGING MSI

図11

指定すると、従来のZabbix AgentとZabbix Agent 2の二種類が表示されるので、Zabbix Agent 2のMSIインストーラをダウンロードする。

2. コマンドプロンプトを「管理者として実行」で起動

コマンドプロンプトを「管理者として実行」で起動する。

3. msiexecコマンドにてインストールを実行

以下の通り、実行する。コマンドプロンプトでは行末に^を付与するとコマンドの改行ができる。今回は見やすくするため改行を入れているが、一行で記述しても当然実行できる。

msiexec /l*v log.txt^
        /i zabbix_agent2-x.x.x-windows-amd64-openssl.msi /qn^
        HOSTNAME=[Zabbixに登録したホスト名]^
        SERVER=[Zabbix ServerのIPアドレス]^
        SERVERACTIVE=[Zabbix ServerのIPアドレス]

以下実行例となる。サイレントインストールとなるため、実行結果は何も表示されない。

C:\work> msiexec /l*v log.txt^
/i zabbix_agent2-6.0.17-windows-amd64-openssl.msi /qn^
HOSTNAME=test-server^
SERVER=192.168.1.1^
SERVERACTIVE=192.168.1.1

インストールが問題なくされているか不安な場合は、「コントロールパネル」→「プログラムと機能」にZabbix Agentが存在することを確認しよう。

AnsibleでZabbix Agentを自動インストールするPlaybook

Playbookの説明は以下の通り。Zabbix Agentがインストールされているかどうかチェックしたのち、MSIインストーラをコピーしてサイレントインストールする、シンプルなPlaybookとなる。

タスク名 モジュール 説明
Check zabbix agent installation status win_shell PowerShellでGet-WmiObject Win32_Productを実行し、Zabbix Agnetのインストール状況を確認する。
Copy zabbix agent file win_copy Zabbix Agnetがインストールされていない場合、Zabbix AgentのMSIインストーラファイルをコピーする。
Install zabbix agent win_command msiexecにてZabbix Agentをサイレントインストールする。

実際のPlaybookを以下に記載する。

---
- name: Install windows zabbix agent
  gather_facts: true
  hosts: windows_servers

  vars:
    ansible_user: ansibleuser
    ansible_password: XXXXXXXX
    ansible_port: 5986
    ansible_connection: winrm
    ansible_winrm_server_cert_validation: ignore

    zabbix_agent:
      server: 192.168.1.1
      name: zabbix_agent2-6.0.17-windows-amd64-openssl.msi
      logname: log_install_zabbix_agent.log

  tasks:
    # インストール確認
    - name: Check zabbix agent installation status
      ansible.windows.win_shell: |
        Get-WmiObject Win32_Product | Where-Object { $_.Name -like "Zabbix Agent*" }
      changed_when: false
      register: result_check

    # ファイルコピー
    - name: Copy zabbix agent file
      ansible.windows.win_copy:
        src: /ansible_mnt/
        dest: C:\Temp
      when: result_check.stdout == ""

    # インストール実行
    - name: Install zabbix agent
      ansible.windows.win_command: |
        C:\Windows\System32\msiexec.exe /l*v C:\Temp\{{ zabbix_agent.logname }} /i C:\Temp\{{ zabbix_agent.name }} /qn^
          HOSTNAME={{ inventory_hostname }} SERVER={{ zabbix_agent.server }} SERVERACTIVE={{ zabbix_agent.server }}
      changed_when: true
      register: result
      when: result_check.stdout == ""

以上で、Windows用Zabbix Agent 2をmsiexecコマンドを使ってサイレントインストールする手順は完了となる。

参考

0 件のコメント:

コメントを投稿

人気の投稿