dj-wasabi.zabbix-agent
目录
概述
该角色已迁移至:https://github.com/ansible-collections/community.zabbix/ 在此存储库中,将为无法使用集合的人提供只读版本。更改/更新将仅应用于集合,而不会在此存储库中应用。
要求
操作系统
该角色支持以下操作系统:
- Red Hat
- Fedora
- Debian
- Ubuntu
- opensuse
- Windows(最佳努力)
- macOS
因此,您需要这些操作系统中的一个。:-) 如果您想将此角色用于其他操作系统,请发送拉取请求或建议。
本地系统访问
为了成功安装,该角色需要在控制器上安装python-netaddr
,以便能够管理IP地址。这要求您的本地计算机上可用该库(或者安装了pip
以便能够运行)。这通常意味着运行该角色需要对本地计算机的sudo
访问,因此如果您不是以root身份运行,您可能需要-K
标志以输入本地计算机的密码。
Zabbix版本
请查看以下支持的操作系统和Zabbix版本列表:
Zabbix 4.4
- CentOS 7.x, 8.x
- Amazon 7.x
- RedHat 7.x, 8.x
- Fedora 27, 29
- OracleLinux 7.x, 8.x
- Scientific Linux 7.x, 8.x
- Ubuntu 14.04, 16.04, 18.04
- Debian 8, 9, 10
- macOS 10.14, 10.15
Zabbix 4.2
- CentOS 7.x
- Amazon 7.x
- RedHat 7.x
- Fedora 27, 29
- OracleLinux 7.x
- Scientific Linux 7.x
- Ubuntu 14.04, 16.04, 18.04
- Debian 8, 9, 10
- macOS 10.14, 10.15
Zabbix 4.0
- CentOS 7.x
- Amazon 7.x
- RedHat 7.x
- Fedora 27, 29
- OracleLinux 7.x
- Scientific Linux 7.x
- Ubuntu 14.04, 16.04, 18.04
- Debian 8, 9, 10
- macOS 10.14, 10.15
Zabbix 3.4
- CentOS 7.x
- Amazon 7.x
- RedHat 7.x
- Fedora 27, 29
- OracleLinux 7.x
- Scientific Linux 7.x
- Ubuntu 14.04, 16.04, 18.04
- Debian 7, 8, 9
Zabbix 3.2
- CentOS 7.x
- Amazon 7.x
- RedHat 7.x
- Fedora 27, 29
- OracleLinux 7.x
- Scientific Linux 7.x
- Ubuntu 14.04, 16.04
- Debian 7, 8
Zabbix 3.0
- CentOS 5.x, 6.x, 7.x
- Amazon 5.x, 6.x, 7.x
- RedHat 5.x, 6.x, 7.x
- OracleLinux 5.x, 6.x, 7.x
- Scientific Linux 5.x, 6.x, 7.x
- Ubuntu 14.04
- Debian 7, 8
Zabbix 2.4
- CentOS 6.x, 7.x
- Amazon 6.x, 7.x
- RedHat 6.x, 7.x
- OracleLinux 6.x, 7.x
- Scientific Linux 6.x, 7.x
- Ubuntu 12.04, 14.04
- Debian 7
Zabbix 2.2
- CentOS 5.x, 6.x
- RedHat 5.x, 6.x
- OracleLinux 5.x, 6.x
- Scientific Linux 5.x, 6.x
- Ubuntu 12.04
- Debian 7
- xenserver 6
入门
安装
安装此角色非常简单:ansible-galaxy install dj-wasabi.zabbix-agent
这将把zabbix-agent角色安装到您的roles
目录中。
最小配置
为了使Zabbix Agent运行,您需要在执行角色之前定义以下属性:
- zabbix_agent_version
- zabbix_agent_server
- zabbix_agent_serveractive(使用主动检查时)
zabbix_agent_version
是可选的。最新可用的 Zabbix 主要.次要版本将安装到主机上。如果您想使用较旧的版本,请以主要.次要格式指定。例如:zabbix_agent_version: 4.0
,zabbix_agent_version: 3.4
或zabbix_agent_version: 2.2
。
zabbix_agent_server
(和zabbix_agent_serveractive
)应包含运行Zabbix服务器的主机的IP或FQDN。
问题
根据 #291 中讨论的问题,Ansible版本 2.9.{0,1,2} 在与Windows相关的目标上工作不正常。
角色变量
主要变量
在default/main.yml中有一些变量可以(或需要)被覆盖:
zabbix_agent_server
:指向zabbix-server或zabbix-proxy的IP地址。zabbix_agent_serveractive
:指向进行主动检查的zabbix-server或zabbix-proxy的IP地址。zabbix_agent_version
:这是Zabbix的版本。默认值为4.4,但可以覆盖为Zabbix版本中提到的某个版本。以前直接使用zabbix_version
变量,但可能会导致一些不便。该变量由向后兼容性维护。zabbix_repo
:默认值: zabbix- epel 从EPEL仓库安装代理
- _zabbix_(默认)从Zabbix仓库安装代理
- other 从现有或其他仓库安装代理
zabbix_agent_listeninterface
:代理监听的接口。留空表示所有。zabbix_agent_package
:Zabbix代理软件包的名称。默认值:zabbix-agent
。对于EPEL,它会自动重命名。zabbix_sender_package
:Zabbix发送器软件包的名称。默认值:zabbix-sender
。对于EPEL,它会自动重命名。zabbix_get_package
:Zabbix获取软件包的名称。默认值:zabbix-get
。对于EPEL,它会自动重命名。zabbix_agent_package_state
:Zabbix代理是否需要存在或更新到最新版本。zabbix_agent_interfaces
:配置通过API时可以使用的接口列表。zabbix_selinux
:启用SELinux策略,以便代理可以运行。默认:False。zabbix_agent_userparameters
:用户参数名称和脚本(如果有)的列表。在部署用户参数部分中详细说明。默认值:[]
(空列表)。name
:用户参数名称(应与用户参数模板文件名相同)scripts_dir
:所需用户参数的自定义脚本的目录名称
zabbix_agent_userparameters_templates_src
:指示搜索用户参数模板的相对路径(从templates/
开始)zabbix_agent_userparameters_scripts_src
:指示搜索用户参数脚本的相对路径(从files/
开始)zabbix_agent_allowroot
:允许代理以'root'身份运行。0 - 不允许,1 - 允许zabbix_agent_runas_user
:将权限降级为系统上特定的现有用户。仅在以'root'身份运行且禁用AllowRoot时有效。zabbix_agent_become_on_localhost
:如果不需要在localhost上提升权限以使用pip本地安装软件包,请设置为False
。默认:Truezabbix_install_pip_packages
:如果不希望安装所需的pip包,请设置为False
。在完全控制环境时很有用。默认:Truezabbix_agent_apt_priority
:为APT仓库添加权重(Pin-Priority
)。
TLS特定配置
这些变量适用于Zabbix 3.0及更高版本:
zabbix_agent_tlsconnect
:代理如何连接到服务器或代理。用于主动检查。可能的值:
- unencrypted
- psk
- cert
zabbix_agent_tlsaccept
:接受哪些传入连接。可能的值:
- unencrypted
- psk
- cert
zabbix_agent_tlscafile
:包含用于对等证书验证的顶级CA证书的文件的完整路径。zabbix_agent_tlscrlfile
:包含已撤销证书的文件的完整路径。zabbix_agent_tlsservercertissuer
:受允许的服务器证书颁发者。zabbix_agent_tlsservercertsubject
:受允许的服务器证书主题。zabbix_agent_tlscertfile
:包含代理证书或证书链的文件的完整路径。zabbix_agent_tlskeyfile
:包含代理私钥的文件的完整路径。zabbix_agent_tlspskidentity
:用于标识共享密钥的唯一区分大小写字符串。zabbix_agent_tlspskidentity_file
:包含共享密钥身份的文件的完整路径。zabbix_agent_tlspskfile
:包含共享密钥的文件的完整路径。zabbix_agent_tlspsk_secret
:应放置在与agent_tlspskfile
配置的文件中的共享秘密密钥。zabbix_agent_tlspsk_auto
:启用在客户端上自动生成和存储个别共享密钥和身份。
Zabbix API变量
当您希望利用zabbix-api自动创建和/或更新主机时,需要覆盖这些变量。
主机加密配置将与代理配置匹配。
当zabbix_api_create_hostgroup
或zabbix_api_create_hosts
设置为True
时,将在执行Ansible剧本的主机上安装zabbix-api
Python模块。
zabbix_url
:Zabbix网页可用的URL。例如:http://zabbix.example.comzabbix_api_http_user
:用于使用基本身份验证访问Zabbix URL的HTTP用户zabbix_api_http_password
:用于访问Zabbix URL的HTTP密码,使用基本身份验证zabbix_api_create_hosts
:当您希望启用Zabbix API来创建/删除主机时。如果希望使用zabbix_create_host
,则必须将其设置为True
。默认:False
zabbix_api_create_hostgroup
:当您希望启用Zabbix API来创建/删除主机组时。如果希望使用zabbix_create_hostgroup
,则必须将其设置为True
。默认:False
zabbix_api_user
:具有API访问权限的用户的用户名。zabbix_api_pass
:具有API访问权限的用户的密码。zabbix_create_hostgroup
:如果需要创建主机组,则为present(默认值);如果要删除,则为absent。仅当zabbix_api_create_hostgroup
设置为True
时有效。zabbix_host_status
:当主机被监控时为enabled(默认值),当主机被禁用监控时为disabled。zabbix_create_host
:如果需要创建主机则为present(默认值);如果要删除,则为absent。仅当zabbix_api_create_hosts
设置为True
时有效。zabbix_update_host
:如果主机已经存在,则为yes(默认值)。仅当zabbix_api_create_hosts
设置为True
时有效。zabbix_useuip
:如果通过IP连接到zabbix-agent,则为1;如果通过fqdn,则为0。zabbix_host_groups
:该主机所属的主机组列表。zabbix_link_templates
:需要链接到该主机的模板列表。这些模板应存在。zabbix_macros
:带有macro_key和macro_value的列表,用于创建主机宏。zabbix_inventory_mode
:配置Zabbix库存模式。构建库存数据时所需,无论是在手动配置主机时还是通过某些自动填充选项时。若要自动构建库存数据,必须设置为automatic
。zabbix_visible_hostname
:配置在Zabbix网页UI中该节点的可见名称。zabbix_validate_certs
:如果需要验证API的TLS证书,则为yes(默认值)。如果使用自签名证书,则使用no。
Windows变量
注意
对Windows的支持是最佳努力(我无法在各种可用的Windows实例上测试/验证更改)。针对Windows的PR将几乎立即合并,除非有人能够通过Travis为拉取请求提供Windows测试机制。
zabbix_version_long
:Zabbix代理的长(major.minor.patch)版本。这将用于生成zabbix_win_download_link
链接,并在zabbix_agent_package_state: latest
时用于Zabbix代理更新。zabbix_win_download_link
:指向win.zip
文件的下载URL。zabbix_win_install_dir
:Zabbix需要安装的目录。zabbix_agent_win_logfile
:Zabbix代理的日志文件的完整路径。zabbix_agent_win_include
:存储Zabbix特定配置文件的目录。zabbix_agent_win_svc_recovery
:启用Zabbix代理服务的自动恢复设置。
macOS变量
zabbix_version_long
:Zabbix代理的长(major.minor.patch)版本。这将用于生成zabbix_mac_download_link
链接。zabbix_mac_download_link
:指向pkg
文件的下载URL。
Docker变量
当您不想在主机上安装Zabbix代理,而希望在容器中运行时,这些属性是有用的。当zabbix_agent_docker
设置为True
时,将下载Docker映像并启动一个容器。除了PSK文件和“Zabbix包含目录”之外,不会在主机上进行其他安装。
在容器中挂载以下目录:
- /etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d
- /:/hostfs:ro
- /etc:/hostfs/etc:ro
- /proc:/hostfs/proc:ro
- /sys:/hostfs/sys:ro
- /var/run:/var/run
请记住,在容器中使用Zabbix代理需要对Zabbix Linux模板进行更改,因为/proc
、/sys
和/etc
被挂载在/hostfs
目录中。
zabbix_agent_docker
:如果设置为True
,则会在目标主机上安装Docker容器,而不是在目标上安装。默认:False
zabbix_agent_docker_state
:默认:started
zabbix_agent_docker_name
:容器的名称。默认:zabbix-agent
zabbix_agent_docker_image
:Docker映像的名称。默认:zabbix/zabbix-agent
zabbix_agent_docker_image_tag
:Docker映像的标签。zabbix_agent_docker_user_gid
:容器内Zabbix用户的组ID。zabbix_agent_docker_user_uid
:容器内Zabbix用户的用户ID。zabbix_agent_docker_network_mode
:应为容器使用的(Docker)网络的名称。默认host
。zabbix_agent_docker_restart_policy
:容器的重启策略。默认:unless-stopped
zabbix_agent_docker_privileged
:设置为True
,则容器以特权模式运行。zabbix_agent_docker_ports
:用于打开容器端口的<PORT>:<PORT>
值列表。zabbix_agent_docker_security_opts
:可用安全选项的列表。zabbix_agent_docker_volumes
:在容器中所需的所有目录的列表。zabbix_agent_docker_env
:需要为容器设置的所有环境变量的字典。
其他变量
zabbix_agent_firewall_enable
:如果需要通过打开TCP端口来更新Iptables以配置在zabbix_agent_listenport
中定义的端口。zabbix_agent_firewall_source
:提供时,Iptables将配置为仅允许来自该IP地址/范围的流量。zabbix_agent_firewalld_enable
:如果需要通过打开TCP端口对zabbix_agent_listenport
和zabbix_agent_jmx_listenport
(如果定义了)更新firewalld。zabbix_agent_firewalld_source
:提供时,firewalld将配置以仅允许来自配置在zabbix_agent_server
中的IP的流量。zabbix_agent_firewalld_zone
:提供时,将firewalld规则附加到该区域(仅在zabbix_agent_firewalld_enable
设置为true时)。默认行为是使用远程主机firewalld配置定义的默认区域。zabbix_agent_firewall_action
:何时insert
规则或append
到Iptables。默认:insert
。zabbix_agent_firewall_chain
:将规则添加到Iptables的哪个chain
。默认INPUT
zabbix_agent_description
:Zabbix中主机的描述。zabbix_agent_inventory_zabbix
:为Zabbix库存添加事实。
IPMI变量
zabbix_agent_ipmi_authtype
:IPMI身份验证算法。可能的值为1(回调)、2(用户)、3(操作员)、4(管理员)、5(OEM),其中2为API默认值。zabbix_agent_ipmi_password
:IPMI密码。zabbix_agent_ipmi_privilege
:IPMI特权级别。可能的值为1(回调)、2(用户)、3(操作员)、4(管理员)、5(OEM),其中2为API默认值。zabbix_agent_ipmi_username
:IPMI用户名。
代理
当目标主机无法访问互联网,但您可以使用代理时,以下属性需要配置,以便通过代理下载软件包:
zabbix_http_proxy
zabbix_https_proxy
依赖
该角色没有对其他角色的依赖。
示例剧本
代理接口
这将在主机上配置Zabbix代理接口。
zabbix_agent_interfaces:
- type: 1
main: 1
useip: "{{ zabbix_useuip }}"
ip: "{{ zabbix_agent_ip }}"
dns: "{{ ansible_fqdn }}"
port: "{{ zabbix_agent_listenport }}"
其他接口
您还可以配置zabbix_agent_interfaces
以添加/配置snmp、jmx和ipmi接口。
在配置时,您必须使用以下类型号之一:
接口类型 | 编号 |
---|---|
Zabbix代理 | 1 |
snmp | 2 |
ipmi | 3 |
jmx | 4 |
配置snmp接口如下所示:
zabbix_agent_interfaces:
- type: 2
main: 1
useip: "{{ zabbix_useuip }}"
ip: "{{ agent_ip }}"
dns: "{{ ansible_fqdn }}"
port: "{{ agent_listenport }}"
角色配置中的变量
包括一个如何使用角色的示例(例如,以参数形式传递变量)对于用户来说也是很好的:
- hosts: all
roles:
- role: dj-wasabi.zabbix-agent
zabbix_agent_server: 192.168.33.30
zabbix_agent_serveractive: 192.168.33.30
zabbix_url: http://zabbix.example.com
zabbix_api_use: true # 使用 zabbix_api_create_hosts 和/或 zabbix_api_create_hostgroup 从0.8.0开始
zabbix_api_user: Admin
zabbix_api_pass: zabbix
zabbix_create_host: present
zabbix_host_groups:
- Linux服务器
zabbix_link_templates:
- Linux操作系统模板
- Apache应用程序模板
zabbix_macros:
- macro_key: apache_type
macro_value: reverse_proxy
组变量和剧本的组合
您还可以使用group_vars或host_vars文件设置该角色所需的变量。您应该更改的文件:group_vars/all
或host_vars/<zabbix_server>
(其中
zabbix_agent_server: 192.168.33.30
zabbix_agent_serveractive: 192.168.33.30
zabbix_url: http://zabbix.example.com
zabbix_api_use: true # 使用 zabbix_api_create_hosts 和/或 zabbix_api_create_hostgroup 从0.8.0开始
zabbix_api_user: Admin
zabbix_api_pass: zabbix
zabbix_create_host: present
zabbix_host_groups:
- Linux服务器
zabbix_link_templates:
- Linux操作系统模板
- Apache应用程序模板
zabbix_macros:
- macro_key: apache_type
macro_value: reverse_proxy
在剧本中仅指定:
- hosts: all
roles:
- role: dj-wasabi.zabbix-agent
TLS PSK加密代理通信示例
例如在剧本或host_vars/myhost
中的变量:
zabbix_agent_tlsaccept: psk
zabbix_agent_tlsconnect: psk
zabbix_agent_tlspskidentity: "myhost PSK"
zabbix_agent_tlspsk_secret: b7e3d380b9d400676d47198ecf3592ccd4795a59668aa2ade29f0003abbbd40d
zabbix_agent_tlspskfile: /etc/zabbix/zabbix_agent_pskfile.psk
Molecule
该角色已配置为使用Molecule进行测试。您可以在此页面找到有关Molecule的更多信息:https://werner-dijkerman.nl/2016/07/10/testing-ansible-roles-with-molecule-testinfra-and-docker/
每次提交拉取请求时,Molecule将通过travis.ci执行。仅当这些测试成功运行时,拉取请求才会被合并。
有两个场景将在Travis中执行。
默认
第一个场景将启动5个运行以下操作系统的Docker容器:
- Debian 8
- CentOS 7
- Ubuntu 16.04
- Ubuntu 18.04
- Mint
这个场景将进行基本的安装/配置,而不通过Zabbix API注册主机到服务器。
带服务器
第二个场景将启动4个运行以下操作系统的Docker容器:
- CentOS 7(Zabbix服务器)
- Debian 8
- CentOS 7
- Ubuntu 18.04
首先,将在一个容器中安装Zabbix服务器。此安装使用其他dj-wasabi角色来安装/配置Zabbix服务器。一旦该实例运行,另外三个代理将被安装。
每个主机将自己注册到Zabbix服务器,状态应为0(这意味着Zabbix服务器和Zabbix代理已连接)。
Ubuntu代理将通过PSK进行自我注册,从而使Zabbix服务器和Zabbix代理之间的通信通过预共享密钥进行加密。
以前的版本
第三个也是最后一个场景是before-last-version
。此场景与默认
相同,但使用之前的Zabbix版本。
部署用户参数
安装自定义用户参数和/或脚本所需步骤:
- 将所需的用户参数文件放入
templates/userparameters
目录中,并命名为<userparameter_name>.j2
。例如:“templates/userparameters/mysql.j2”。您可以通过修改zabbix_agent_userparameters_templates_src
变量将默认目录更改为自定义目录。 - 如果有,脚本目录放入
files/scripts
目录。例如:files/scripts/mysql
。您可以通过修改zabbix_agent_userparameters_scripts_src
变量将默认目录更改为自定义目录。 - 将
zabbix_agent_userparameters
变量作为字典列表添加到剧本中,并定义用户参数名称和脚本目录名称(如果没有脚本,则不必指定scripts_dir
变量)。
示例:
- hosts: mysql_servers
tasks:
- include_role:
name: dj-wasabi.zabbix-agent
vars:
zabbix_agent_server: zabbix.mydomain.com
zabbix_agent_userparameters:
- name: mysql
scripts_dir: mysql
- name: galera
“templates/userparameters/mysql.j2”文件的示例:
UserParameter=mysql.ping_to,mysqladmin -uroot ping | grep -c alive
许可证
MIT
作者信息
如有建议或拉取请求,请与我分享以改进该角色。如果您在安装或使用此角色时遇到任何问题,请告诉我。
Github: https://github.com/dj-wasabi/ansible-zabbix-agent
邮箱:ikben [ at ] werner-dijkerman . nl
Installing and maintaining zabbix-agent for RedHat/Debian/Ubuntu/Windows/Suse.
ansible-galaxy install dj-wasabi.zabbix-agent