赞
踩
[root@server1 ansible]# ls
ansible.cfg hosts roleshosts文件是用来指定被ansible管理的文件
roles是用来指定每一个角色
ansible.cfg核心配置文件
Roles简介
Ansible为了层次化、结构化地组织Playbook,使用了角色 (roles)。Roles能够根据层次型结构自动装载变量文件、task以及handlers等。简单来讲,roles就是通过分别将变量、文件、任 务、模块及处理器放置于单独的目录中,并可以便捷地include它们,roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景 中。
创建Roles
创建roles时一般需要以下步骤:首先创建以roles命名的目录。然后在roles目标下分别创建以个角色名称命令的目录,如websevers等, 在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录,用不到的目 录可以创建为空目录。最后在Playbook文件中调用各角色进行使用
files:用来存放由copy模块或script模块调用的文件。
templates:用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。
tasks:此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件。
handlers:此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作。
vars:此目录应当包含一个main.yml文件,用于定义此角色用到的变量。
defaults:此目录应当包含一个main.yml文件,用于为当前角色设定默认变量。
meta:此目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系。
使用roles部署zabbix+LAMP架构
1:创建zabbix-server、httpd、mysql、php角色名称目录,并在其目录下创建files、handlers、tasks、templates、meta、defaults和vars目录
[root@server1 ~]# mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
[root@server1 ~]# mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
[root@server1 ~]# mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p
[root@server1 ~]# mkdir /etc/ansible/roles/zabbix-server/{files,templates,tasks,handlers,vars,defaults,meta} -p
2.编写mysql模块:
tasks:
[root@server1 ~]# vim /etc/ansible/roles/mysql/tasks/main.yml
- name: install mariadb server
yum: name=mariadb-server,MySQL-python state=present- name: config mariadb
copy: src=/etc/ansible/roles/mysql/files/my.cnf dest=/etc/my.cnf
notify: restart mariadb- name: start mariadb server
service: name=mariadb state=started
files:
从其他地方拷贝mariadb的配置文件my.cnf
handlers:
[root@server1 files]# vim /etc/ansible/roles/mysql/handlers/main.yml
- name: restart mariadb
service: name=mariadb state=restarted
3.编写httpd模块:
tasks:
[root@server1 ~]# vim /etc/ansible/roles/httpd/tasks/main.yml
- name: install httpd
yum: name=httpd state=present- name: config httpd
copy: src=/etc/ansible/roles/httpd/files/httpd.conf dest=/etc/httpd/conf/httpd.conf
notify: restart httpd- name: start httpd
service: name=httpd state=started
files:
[root@server1 ~]# cp /etc/httpd/conf/httpd.conf /etc/ansible/roles/httpd/files ##httpd原始配置文件即可
handlers:
[root@server1 ~]# vim /etc/ansible/roles/httpd/handlers/main.yml
- name: restart httpd
service: name=httpd state=restarted
4.编写php模块:
tasks:
[root@server1 ~]# vim /etc/ansible/roles/php/tasks/main.yml
- name: install php
yum: name=php,php-bcmath,php-mbstring state=present- name: config php
copy: src=/etc/ansible/roles/php/files/index.php dest=/var/www/html/index.php
notify: restart httpd
files:
[root@server1 ~]# vim /etc/ansible/roles/php/files/index.php
<?php
phpinfo();
?>
handlers:
[root@server1 ~]# vim /etc/ansible/roles/php/handlers/main.yml
- name: restart httpd
service: name=httpd state=restarted
5.编写zabbix-server模块:
[root@server1 ~]# vim /etc/ansible/roles/zabbix-server/tasks/main.yml
- name: copy zabbix.repo
copy: src=/etc/ansible/roles/zabbix-server/files/zabbix.repo dest=/etc/yum.repos.d/zabbix.repo- name: install zabbix-server
yum: name=zabbix-server,zabbix-agent,zabbix-web state=present
notify: "init zabbix db"- name: config zabbix server
copy: src=/etc/ansible/roles/zabbix-server/files/zabbix_server.conf dest=/etc/zabbix/zabbix_server.conf
notify: restart zabbix server- name: start zabbix server
service: name={{ item }} state=started
with_items:
- zabbix-server
- zabbix-agent- name: restart httpd server
service: name=httpd state=restarted
files:
<1>zabbix.repo
物理机需要将zabbix4.0目录放在/var/www/html下面
[root@server1 ~]# vim /etc/ansible/roles/zabbix-server/files/zabbix.repo
[zabbix]
name=zabbix4.0
baseurl=http://172.25.81.250/zabbix4.0
gpgcheck=0
<2>zabbix_server.conf
[root@server1 ~]# cat /etc/ansible/roles/zabbix-server/files/zabbix_server.conf
handlers:
[root@server1 ~]# vim /etc/ansible/roles/zabbix-server/handlers/main.yml
- name: create datbase
mysql_db: name=zabbix state=present
listen: "init zabbix db"- name: create zabbix user
mysql_user: name=zabbix password=zabbix priv=zabbix.*:ALL state=present
listen: "init zabbix db"- name: import create.sql.gz
mysql_db: name=zabbix state=import target=/usr/share/doc/zabbix-server-mysql-4.0.5/create.sql.gz
listen: "init zabbix db"- name: restart zabbix server
service: name=zabbix-server state=restarted
6.创建Playbook文件调用上面各角色安装LAMP
编写zabbix-server.yml文件:
[root@server1 ~]# vim /etc/ansible/roles/zabbix-server.yml
---
#zabbix-server部署
- hosts: server2
remote_user: root
roles:
- httpd
- php
- mysql
- zabbix-server
[root@server1 roles]# ansible-playbook zabbix-server.yml --syntax-check
[root@server1 roles]# ansible-playbook zabbix-server.yml
server2上查看安装情况:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。