一、什么场景下会用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
原文地址:https://blog.csdn.net/yinzhen_boke_0321/article/details/88875424
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。