AnsibleでUbuntuにZabbix-agentをインストールしてみた

# はじめに
私は自宅で様々なOSS環境構築のためにUbuntu鯖を仮想的に立てることが多いんですが、毎回必要なソフトやZabbixエージェントのインストールをするのが煩わしいなと思いました。

何とか自動で出来ないかと思い、Ansibleにやらせればいいと思いついてやってみたものです。
Zabbixはリポジトリを追加するところから始めます。
これを応用すれば別のソフトインストールにも使えると思うので、ぜひ参考にしてみてください。



# 環境
- Ubuntu 22.04（変更対象）
    - ホスト名：ubuntu
    - IPアドレス：192.168.10.3
 
- Ansible Server
    - ホスト名：ansible
    - IPアドレス：192.168.10.5
    - Ansible Core version：2.13.1
    - Python version：3.8.10
 
- zabbix_server (Zabbix)
    - Version：6.0.6

- zabbix_agentd
    - Version：5.0.17

# 前提条件
- Zabbixエージェントをインストールする対象サーバが構築済みであること。
- 対象サーバとAnsibleサーバがSSHで接続できること。
- Ansibleサーバが構築済みであること。
    - ちなみにAnsibleのインストール方法などは別記事に記載しています。

https://qiita.com/rat-engineer755/items/7b4d07b8759a745d7404

# hosts準備
`/etc/ansible`に保存されているhostsファイルにZabbixエージェントをインストールした対象のホスト名かIPアドレスを記載します。
`vim /etc/ansible/hosts`
```
[linux_apt]
192.168.10.3

[linux_apt:vars]
ansible_user: admin
ansible_password: password
ansible_port: 22
ansible_facts.os_family: 'Debian'
ansible_become_password:password

```
私は[linux_apt]というグループに[192.168.10.3]を含めています。
そして、[linux_apt:vars]にログインに必要な情報を記載します。
ログインユーザ名、パスワード、ポート番号、OSの種類、Sudoの時に必要なパスワードです。

# Playbooks記述
Playbooksは4つのタスクに分けて記述します。
1. Zabbixパッケージのダウンロード
1. Zabbixのリポジトリ追加（get zabbix package）
1. パッケージ一覧を更新
1. Zabbixエージェントインストール

Playbooksを`/etc/ansible`に作成します。
`vim /etc/ansible/add_zabbix.yaml`
```
---
- hosts: linux_apt
  gather_facts: false
  become: true

  tasks:
    - name: get zabbix package #wgetと同じ操作。OSやZabbixサーバーバージョンによってURLは変更してください。
      get_url:
        url: https://repo.zabbix.com/zabbix/6.0/ubuntu-arm64/pool/main/z/zabbix-release/zabbix-release_6.0-3+ubuntu22.04_all.deb
        dest: /tmp #ダウンロードしたファイルの保存場所を指定します。

    - name: dpkg zabbix #dpkg -i と同じくリポジトリを追加します。
      ansible.builtin.dpkg_selections:
        name: zabbix-release_6.0-3+ubuntu22.04_all.deb
        selection: install

    - name: update package index #リポジトリを追加したので、リストのアップデートをします。
      ansible.builtin.apt:
        update_cache: yes

    - name: install zabbix-agent #Zabbixエージェントをインストールします。
      ansible.builtin.apt:
        name:
          - zabbix-agent
        state: present
...
```


# 実行
hostsとPlaybooksの準備が出来たら実行します。
`ansible-playbook /etc/ansible/add_zabbix.yaml`

[実行結果]
```
PLAY [linux_apt] ***************************************************************

TASK [get zabbix package] ******************************************************
ok: [192.168.10.3]

TASK [dpkg zabbix] *************************************************************
changed: [192.168.10.3]

TASK [update package index] ****************************************************
changed: [192.168.10.3]

TASK [install zabbix-agent] ****************************************************
changed: [192.168.10.3]

PLAY RECAP *********************************************************************
192.168.10.3       : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
```
OK=4件、Changed=3件となっており、エラーもないので問題なく完了しています。
他にもインストールするソフトがあればタスクを追加していけば一度にセットアップが出来ます。


# 参考文献
- Ansibleクックブック
- 参考サイト

https://nwengblog.com/ansible-get-url/

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/apt_module.html

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/dpkg_selections_module.html