absible自动化部署,zabbix监控mysql

一、什么场景下会用roles?

假如我们现在有3个被管理主机,第一个要配置成httpd,第二个要配置成php服务器,第三个要配置成MySQL服务器。我们如何来定义playbook?

 

第一个play用到第一个主机上,用来构建httpd,第二个play用到第二个主机上,用来构建php,第三个play用到第三个主机上,用来构建MySQL。这些个play定义在playbook中比较麻烦,将来也不利于模块化调用,不利于多次调。比如说后来又加进来一个主机,这个第4个主机既是httpd服务器,又是php服务器,我们只能写第4个play,上面写上安装httpd和php。这样playbook中的代码就重复了。

 

为了避免代码重复,roles能够实现代码重复被调用。定义一个角色叫websrvs,第二个角色叫phpappsrvs,第三个角色叫dbsrvs。那么调用时如下来调用:

hosts: host1

role:

- websrvs



hosts: host2

role:

- phpappsrvs

        

hosts: host3

role:

- dbsrvs

        

hosts: host4

role:

- websrvs

- phpappsrvs

1:建立部署mariadb所需的数据库所需的目录
[root@srever4 ansible]# ls
ansible.cfg  hosts  playbooks  roles
[root@srever4 ansible]# cd roles/
[root@srever4 roles]# ls
[root@srever4 roles]# mkdir mariadb
[root@srever4 mariadb]# mkdir tasks files templates eta handlers vars defaults
[root@srever4 mariadb]# ls
defaults  eta  files  handlers  tasks  templates  vars

2:创建tasks
[root@srever4 mariadb]# cd tasks/
[root@srever4 tasks]# vim main.yml
- name: install mariadb server
  yum: name=mariadb-server,MySQL-python state=present

- name: config mariadb
  copy: src=my.cnf dest=/etc/my.cnf
  notify: restart mariadb 

- name: start mariadb server
  service: name=mariadb state=started


3:建立部署zabbix服务所需要的目录
[root@srever4 roles]# mkdir zabbix-server/{files,tasks,templates,vars} -p
[root@srever4 roles]# cd zabbix-server/
[root@srever4 zabbix-server]# ls
files  tasks  templates  vars


4:指定yum,安装zabbix服务
[root@srever4 zabbix-server]# cd files/
[root@srever4 files]# ls
[root@srever4 files]# vim zabbix.repo

[zabbix]
name=zabbix4.0
baseurl=http://172.25.60.250/4.0
gpgcheck=0


6:创建zabbix自动化部署所需要的tasks
[root@srever4 files]# cd ..
[root@srever4 zabbix-server]# cd tasks/
[root@srever4 tasks]# ls
[root@srever4 tasks]# vim main.yml
- name: copy zabbix.repo
  copy: src=zabbix.repo dest=/etc/yum.repos.d/zabbix.repo

- name: install zabbix-server
  yum: name=zabbix-server,zabbix-agent state=present
  notify: "init zabbix db"

- name: config zabbix server
  copy: src=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

7:获取数据库文件, my.cnf  
[root@srever4 tasks]# cd ..
[root@srever4 zabbix-server]# cd ..
[root@srever4 roles]# ls
mariadb  zabbix-server
[root@srever4 roles]# cd mariadb/
[root@srever4 mariadb]# cd files/
[root@srever4 files]# ls
[root@srever4 files]# vim my.cnf
[root@srever4 files]# cp /etc/my.cnf .
[root@srever4 files]# ls
my.cnf
[root@srever4 files]# vim my.cnf 

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
#
#
character-set-server=utf8    ###添加这一行

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d


8:编辑handlers模块.yml文件爱
[root@srever4 mariadb]# cd handlers/
[root@srever4 handlers]# vim main.yml
- name: restart mariadb
  service: name=mariadb state=restarted

9:server5主机上安装 zabbix-server
[root@server5 ~]# yum install -y zabbix-server
要配置yum源
[root@server5 yum.repos.d]# yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
rhel7.3                                                                                                          | 4.1 kB  00:00:00     
zabbix                                                                                                           | 2.9 kB  00:00:00     
(1/3): rhel7.3/group_gz                                                                                          | 136 kB  00:00:00     
(2/3): zabbix/primary_db                                                                                         | 9.5 kB  00:00:00     
(3/3): rhel7.3/primary_db                                                                                        | 3.9 MB  00:00:00     
repo id                                                          repo name                                                        status
rhel7.3                                                          rhel7.3                                                          4,751
zabbix                                                           zabbix                                                              12
repolist: 4,763

10:发送zabbix-server配置文件
[root@server5 zabbix]# scp zabbix_server.conf server4:/etc/ansible/roles/zabbix-server/files
root@server4's password: 
zabbix_server.conf                            100%   17KB  16.8KB/s   00:00  

[root@srever4 files]# ls
zabbix.repo  zabbix_server.conf
[root@srever4 files]# vim zabbix_server.conf ##设置数据库dbpasswd
DBPassword=zabbix


11:zabbix-server下建立handlers
[root@srever4 zabbix-server]# ls
files  tasks  templates  vars
[root@srever4 zabbix-server]# mkdir handlers
[root@srever4 handlers]# vim 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


12:创建.yml文件
[root@srever4 ansible]# vim zabbix-server.yml
#zabbix-server部署
- hosts: server5
  roles:
    - mariadb
    - zabbix-server

13:检测是否有语法错误
[root@srever4 ansible]# ansible-playbook zabbix-server.yml --syntax-check

playbook: zabbix-server.yml

14:-C 检测运行

[root@srever4 ansible]# ansible-playbook zabbix-server.yml -C

PLAY [server5] *****************************************************************

TASK [Gathering Facts] *********************************************************
ok: [server5]

TASK [mariadb : install mariadb server] ****************************************
ok: [server5]

TASK [mariadb : config mariadb] ************************************************
ok: [server5]

TASK [mariadb : start mariadb server] ******************************************
ok: [server5]

TASK [zabbix-server : copy zabbix.repo] ****************************************
ok: [server5]

TASK [zabbix-server : install zabbix-server] ***********************************
ok: [server5]

TASK [zabbix-server : config zabbix server] ************************************
ok: [server5]

TASK [zabbix-server : start zabbix server] *************************************
ok: [server5] => (item=zabbix-server)
ok: [server5] => (item=zabbix-agent)

PLAY RECAP *********************************************************************
server5                    : ok=8    changed=0    unreachable=0    failed=0   


15:执行.yml文件
[root@srever4 ansible]# ansible-playbook zabbix-server.yml 

PLAY [server5] *****************************************************************

TASK [Gathering Facts] *********************************************************
ok: [server5]

TASK [mariadb : install mariadb server] ****************************************
ok: [server5]

TASK [mariadb : config mariadb] ************************************************
ok: [server5]

TASK [mariadb : start mariadb server] ******************************************
ok: [server5]

TASK [zabbix-server : copy zabbix.repo] ****************************************
ok: [server5]

TASK [zabbix-server : install zabbix-server] ***********************************
ok: [server5]

TASK [zabbix-server : config zabbix server] ************************************
changed: [server5]

TASK [zabbix-server : start zabbix server] *************************************
ok: [server5] => (item=zabbix-server)
ok: [server5] => (item=zabbix-agent)

RUNNING HANDLER [zabbix-server : restart zabbix server] ************************
changed: [server5]

PLAY RECAP *********************************************************************
server5                    : ok=9    changed=2    unreachable=0    failed=0   





16:[root@server5 zabbix]# netstat -antlp
查看zabbix_agentd,zabbix_server
tcp6       0      0 :::10050                :::*                    LISTEN      5707/zabbix_agentd  
tcp6       0      0 :::10051                :::*                    LISTEN      10713/zabbix_server 










猜你喜欢

转载自blog.csdn.net/yinzhen_boke_0321/article/details/88875424
今日推荐