当前位置:   article > 正文

Ansible(Roles)自动化部署 lamp+zabbix_ansible部署zabbix集群+lnmp

ansible部署zabbix集群+lnmp

[root@server1 ansible]# ls
ansible.cfg  hosts  roles

hosts文件是用来指定被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文件中调用各角色进行使用

  • 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文件,用于定义此角色的特殊设定及其依赖关系。

使用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上查看安装情况:

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/1021017
推荐阅读
  

闽ICP备14008679号