zabbix 6.0에서 zabbix 6.2로 변환(마이그레이션)하는 데 문제가 있습니다. 사전 정의된 일부 호스트 그룹 및 템플릿을 사용하여 자동으로 zabbix에 호스트를 추가하는 Ansible 플레이북이 있습니다. 이는 Zabbix 6.0에서 작동했지만 6.2에서는 zabbix가 Template_groups를 추가했고 이제 플레이북에서 더 이상 템플릿을 찾을 수 없다고 불평합니다.
이것은 스크립트의 일부입니다.
- name: ZABBIX - Create or update host
local_action:
module: community.zabbix.zabbix_host
server_url: https://monitor.localdomain
login_user: "a*******a"
login_password: "S*********************y"
host_name: "{{ ansible_hostname }}"
visible_name: "{{ ansible_hostname }}"
tls_psk_identity: "{{ ansible_hostname }}"
tls_accept: 2
tls_connect: 2
tls_psk: "{{ psk.stdout }}"
host_groups:
- Linux servers
link_templates:
- Template OS Linux
- Template YUM Updates
status: enabled
state: present
inventory_mode: automatic
interfaces:
- type: 1
main: 1
useip: 1
ip: "{{ ansible_default_ipv4.address }}"
- type: 2
main: 1
useip: 1
ip: "{{ ansible_default_ipv4.address }}"
details:
community: "{$SNMP_COMMUNITY}"
version: 2
proxy: "ZabbixProxy"
vars:
ansible_python_interpreter: "/usr/bin/python3"
tags:
- zabbix-agent
이는 6.0에서 완벽하게 작동했으며 서버를 호스트 그룹 Linux 서버에 추가하고 문제 없이 템플릿 OS Linux 및 YUM 업데이트를 추가했습니다.
이제 6.2에서는 템플릿을 찾을 수 없다고 불평하고 템플릿을 해시하면 호스트 그룹을 찾을 수 없다고 불평합니다. 내가 소리를 지르면 적어도 하나의 호스트 그룹이 있어야 한다고 불평합니다....:|
템플릿이 이제 템플릿 그룹에 있으므로 모든 템플릿 조합을 시도했습니다: "templates/os" 플레이북에 template_groups: 섹션을 추가했습니다. 이것은 Rust의 유효한 필드이지만 분명히 Ansible에서는 작동하지 않습니다. 잘못된 모듈이 발견되었다고 불평합니다.
템플릿 그룹을 올바른 방법으로 변경/추가하는 방법...?
저와 함께 읽고 생각해 주셔서 감사합니다.
답변1
delegate_to
이것은 나에게 효과적이었고 모든 요청을 zabbix API 서버에 전달 했습니다 . 그리고 Ansible이 그룹 내 각 호스트의 라운드 로빈/포크/병렬 실행을 관리하도록 하세요.
---
- name: Update hosts in Zabbix
hosts: "{{ groups['role_ep'] }}"
vars_files:
- vars/main.yaml
vars:
ansible_network_os: community.zabbix.zabbix
ansible_connection: httpapi
server_url: "{{ zabbix_server.fqdn }}"
ansible_zabbix_auth_key: "{{ zabbix_server.api_key }}"
ansible_zabbix_url_path: ''
tasks:
- name: Create a new host or rewrite an existing host's info
become: false
delegate_to: "{{ zabbix_server.fqdn }}"
community.zabbix.zabbix_host:
host_name: "{{ inventory_hostname }}"
visible_name: "{{ inventory_hostname }}"
description: "{{ inventory_hostname }}"
host_groups:
- Linux servers
link_templates:
- Linux by Zabbix agent
- Chassis by IPMI
status: enabled
state: present
inventory_mode: manual
# inventory_zabbix:
# tag: "{{ your_tag }}"
# alias: "{{ your_alias }}"
# notes: "Special Informations: {{ your_informations | default('None') }}"
# location: "{{ your_location }}"
# site_rack: "{{ your_site_rack }}"
# os: "{{ your_os }}"
# hardware: "{{ your_hardware }}"
ipmi_authtype: -1 # default
ipmi_privilege: 3 # operator
ipmi_username: "{{ ipmi_username }}"
ipmi_password: "{{ ipmi_password }}"
interfaces:
- type: 1
main: 1
useip: 0
ip: "{{ primaryIpAddress }}"
dns: "{{ inventory_hostname }}"
port: "10050"
- type: 3
main: 1
useip: 1
ip: "{{ networkManagementIpAddress }}"
dns: ""
port: "623"
# proxy: a.zabbix.proxy
# macros:
# - macro: "{$EXAMPLEMACRO}"
# value: ExampleMacroValue
# - macro: EXAMPLEMACRO2
# value: ExampleMacroValue2
# description: Example desc that work only with Zabbix 4.4 and higher
# tags:
# - tag: ExampleHostsTag
# - tag: ExampleHostsTag2
# value: ExampleTagValue