跳转至

Ansible template 模块部署 zabbix-agent


2018-04-26 by dongnan

目标

使用 ansible-playbook 批量部署 zabbix-agent

要点

  1. 检查 playbook 配置文件语法。
  2. 检测模式,playbook中任务将在每台远程主机上进行检测,但实际并不执行。
  3. template 模块 ,复制 zabbix-agent 配置文件。
  4. notify & handlers 机制,在发生改变时执行的操作。

配置文件

cat install_zabbix-agent.yml

---
- hosts: node3
  remote_user: root
  tasks:
    - name: install zabbix-agent
      apt:
        name: zabbix-agent
        state: latest
        update_cache: yes

    - name: copy configure file
      template:
        src: "./conf/zabbix_agentd.conf"
        dest: "/etc/zabbix/zabbix_agentd.conf"
        owner: root
        group: root
        mode: 0644
      notify:
        - restart zabbix-agent

  handlers:
    - name: restart zabbix-agent
      service:
        name: "zabbix-agent"
        state: restarted 

检查语法

ansible-playbook --syntax-check install_zabbix-agent.yml
# 这里是空白行,并输出了类似的语句,表示配置文件正常。
playbook: install_zabbix-agent.yml

# 相反如果配置文件语法有误,则输出错误的信息。
ansible-playbook --syntax-check install_zabbix-agent.yml
ERROR! Syntax Error while loading YAML.
could not find expected ':'
# ...省略
The error appears to have been in '/root/path/install_zabbix-agent.yml': line 22, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
# ...省略

检测模式

使用 -C / --ckeck 选项,仅输出可能发生的改变,但是系统本身却不作出任何改变。 这就像在其它系统上叫做 dry run的方式, 用户应该被警告因为这个方式没考虑到命令失败的问题,或者冲突影响。 使用这个可以知道哪些东西可能会发生。

ansible-playbook -C install_zabbix-agent.yml

PLAY [node3] *******************************************************
TASK [Gathering Facts] ***********************************************
ok: [node3]
TASK [install zabbix-agent] *******************************************
changed: [node3]
TASK [copy configure file] ******************************************
changed: [node3]
PLAY RECAP *********************************************************************
node3                  : ok=3    changed=2    unreachable=0    failed=0

执行 playbook

ansible-playbook install_zabbix-agent.yml
# ...省略
node3   : ok=4    changed=3    unreachable=0    failed=0

验证

使用 telnet 链接 zabbix-agent端口,连接成功则表示 zabbix-agent 部署成。

telnet node3 10050
Trying 10.1xx.5x.24x...
Connected to node3.
Escape character is '^]'.
quit
ZBXD&ZBX_NOTSUPPORTEDUnsupported item key.Connection closed by foreign host.

命令参数

--syntax-check
    perform a syntax check on the playbook, but do not execute it
-C, --check
    don't make any changes; instead, try to predict some of the changes that may occur

参考

template-module

回到页面顶部