Ansible을 이용한 Zabbix-Agent 배포
원격 시스템에 Zabbix-Agent의 설치 및 설정을 자동화 한다.
활용 용도
- YUM, APT와 같은 Package Manager를 이용하지않고, Package 파일로 직접 설치한다.
- Zabbix-Agent의 사전 검토된 설정을 배포할 때 유용하다. 사전 검토된 설정은 Jinja2 템플릿을 사용한다.
Inventory 설정
# cat hosts
[ALL_HOSTS]
172.16.0.100 managed_ip=172.16.0.100 des="2020-12-03"
[ALL_HOSTS_OK]
대상 호스트는 172.16.0.100이며, 추가는 2020-12-03에 수행한다. 참고적으로 ALL_HOSTS_OK 호스트 그룹은 작업이 완료된 호스트의 history를 위한 그룹이다.
Host Variables 설정
# cat host_vars/172.16.0.100
ansible_ssh_host: 172.16.0.100
ansible_ssh_port: SSH_포트번호
ansible_ssh_user: 사용자 아이디
ansible_ssh_pass: "사용자 패스워드"
ansible_become: yes
ansible_become_method: su
ansible_become_user: root
ansible_become_pass: "!root_패스워드"
ansible_python_interpreter: python2.7
Playbook 설정
---
- name: Zabbix-Agent Remote Install
hosts: ALL_HOSTS
vars:
zabbix_server: 172.24.0.254
tasks:
- name: Directory Create
file:
path: "{{ item }}"
state: directory
owner: 'root'
group: 'root'
mode: 0700
with_items:
- /root/test/zabbix-agent
- name: Zabbix dep Package Copy
copy:
src: "{{ item }}"
dest: /root/test/zabbix-agent
owner: 'root'
group: 'root'
mode: 0644
#attr: i
with_items:
['zabbix-agent_buster.deb']
when:
- ansible_distribution_major_version == '10'
- ansible_os_family == "Debian"
- name: Zabbix RPM Package Copy
copy:
src: "{{ item }}"
dest: /root/test/zabbix-agent
owner: 'root'
group: 'root'
mode: 0644
with_items:
['zabbix-agent-4.4.10-1.el7.x86_64.rpm']
when: ansible_os_family == "CentOS"
- name: dpkg command Result
shell: yes | dpkg -i /root/test/zabbix-agent/zabbix-agent_buster.deb
register: dpkg_result
when:
- ansible_distribution_major_version == '10'
- ansible_os_family == "Debian"
- name: rpm command Result
shell: rpm -ivh /root/test/zabbix-agent/zabbix-agent-4.4.10-1.el7.x86_64.rpm
register: dpkg_result
when: ansible_os_family == "CentOS"
- name: Zabbix agents configuration
template: src=templates/zabbix_agented.conf_debian.j2 dest=/etc/zabbix/zabbix_agentd.conf mode=0644
when:
- ansible_distribution_major_version == '10'
- ansible_os_family == "Debian"
- name: Zabbix agents configuration
template: src=templates/zabbix_agented.conf_redhat.j2 dest=/etc/zabbix/zabbix_agentd.conf mode=0644
when: ansible_os_family == "CentOS"
- name: zabbix-agent Daemon Restart
systemd:
state: restarted
name: zabbix-agent.service
enabled: True
Zabbix-Agent 설치
에 대한 Playbook 분석
- OS에 따라(redhat, debian계열) Agent를 설치한다.
playbook 실행
# ansible-playbook -i hosts zabbix-agent_install.yml