标签:列表 其它 def 目标 hand ase bash book erro
Ansible为了层次化、结构化地组织Playbook,使用了角色(roles)。Roles能够根据层次型结构自动装载变量文件、task以
及handlers等。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地
include它们,roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。
创建roles时一般需要以下步骤:首先创建以roles命名的目录。然后在roles目标下分别创建以个角色名称命令的目录,如
websevers等,在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用
不到的目录可以创建为空目录。最后在Playbook文件中调用各角色进行使用
roles内各目录含义解释
files:用来存放由copy模块或script模块调用的文件。
templates:用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。
tasks:此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的
task文件。
handlers:此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作。
vars:此目录应当包含一个main.yml文件,用于定义此角色用到的变量。
defaults:此目录应当包含一个main.yml文件,用于为当前角色设定默认变量。
meta:此目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系
目录结构
[root@baiduyun zabbix]# tree /etc/ansible/roles/
/etc/ansible/roles/
├── zabbix-agent
│?? ├── files
│?? │?? ├── check_service.conf
│?? │?? ├── php-fpm_status.sh
│?? │??
│?? ├── tasks
│?? │?? ├── main.yml
│?? │?? └── zabbix-agent.yml
│?? ├── templates
│?? │?? └── zabbix_agentd.j2
│?? └── vars
cat check_service.conf
UserParameter=php[*],/etc/zabbix/scripts/php-fpm_status.sh $1
[root@baiduyun files]# cat php-fpm_status.sh
#########################################################################
# File Name: php-fpm_status.sh
#########################################################################
#!/bin/bash
listenqueue(){ #处于等待状态中的连接数,如果不为0,需要增加php-fpm进程数
wget --quiet -O - http://127.0.0.1:9996/status?auto |grep "listen queue:"|grep -vE "len|max"|awk
‘{print$3}‘
}
listenqueuelen(){ #处于等待连接队列的套接字大小
wget --quiet -O - http://127.0.0.1:9996/status?auto |grep "listen queue len" |awk ‘{print$4}‘
}
idle(){ #处于空闲状态的进程数
wget --quiet -O - http://127.0.0.1:9996/status?auto |grep "idle processes" |awk ‘{print$3}‘
}
active(){ #处于活动状态的进程数
wget --quiet -O - http://127.0.0.1:9996/status?auto |grep "active" |awk ‘{print$3}‘|grep -v
"process"
}
total(){ #进程总数
wget --quiet -O - http://127.0.0.1:9996/status?auto |grep "total processes" |awk ‘{print$3}‘
}
mactive(){ #从php-fpm启动到现在的进程处于活动状态数
wget --quiet -O - http://127.0.0.1:9996/status?auto |grep "max active processes:" |awk ‘{print$4}‘
}
$1
[root@baiduyun tasks]# cat main.yml
- include: zabbix-agent.yml
tags: zabbix-agent
[root@baiduyun tasks]# cat zabbix-agent.yml
- name: Install Zabbix-Agent RPM
yum:
name: https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
state: installed
- name: Install zabbix-agent
register: zabbix-agent
yum:
name: zabbix-agent
ignore_errors: true
- name: create zabbix scripts directory
file:
path: /etc/zabbix/scripts
state: directory
mode: 0755
- name: Sync zabbix-agentd.conf
template:
src: /etc/ansible/roles/zabbix-agent/templates/zabbix_agentd.j2
dest: /etc/zabbix/zabbix_agentd.conf
owner: root
group: root
mode: 0644
- name: php status
copy:
src: /etc/ansible/roles/zabbix-agent/files/php-fpm_status.sh
dest: /etc/zabbix/scripts
owner: root
group: root
mode: 0644
- name: php moban
copy:
src: /etc/ansible/roles/zabbix-agent/files/check_service.conf
dest: /etc/zabbix/zabbix_agentd.d/
owner: root
group: root
mode: 0644
- name: zabbix-server start and enable
systemd:
name: zabbix-agent
enabled: yes
state: started
[root@baiduyun templates]# cat zabbix_agentd.j2
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=139.9.72.161
ListenPort=10050
ServerActive=139.9.72.161
Hostname={{agent_hostname}}
Timeout=30
Include=/etc/zabbix/zabbix_agentd.d/*.conf
执行
ansible-playbook /etc/ansible/zabbix-agent.yml -i /etc/ansible/ssh/hosts -e "hosts=baidu
agent_hostname=baiduyun" -b
ansible-playbook roles 安装zabbix-agent 监控 php
标签:列表 其它 def 目标 hand ase bash book erro
原文地址:https://blog.51cto.com/12328206/2428128