利用roles实现mysql的自动化安装

自动化安装mysql在这里插入图片描述

1#创建目录

[root@ansible ~]# mkdir /data/ansible/roles/mysql/{files,handles,tasks,templates}

[root@ansible ~]# tree /data/ansible/ /data/ansible/ └── roles
    ├── mysql
        ├── files
        ├── handlers
        ├── tasks
        └── templates

2#在files目录下存放的文件(共三个)

(1)mysql配置文件  
[root@ansible ~]#cat /data/ansible/roles/mysql/files/my.cnf
[mysql]
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
datadir=/data/mysql
innodb_file_per_table=1
log-bin
pid-file=/data/mysql/mysqld.pid

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld_safe]
log-error=/var/log/mysqld.log

(2)安全加固脚本
[root@ansible ~]#cat /data/ansible/roles/mysql/files/secure_mysql.sh
#!/bin/bash
/usr/local/mysql/bin/mysql_secure_installation <<EOF

y
centos
centos
y
y
y
y
EOF

3)mysql安装包

[root@ansible ansible]# tree
.
├── mysql_roles.yml
├── role_httpd.yml
└── roles
    ├── mysql
    │   ├── files
    │   │   ├── my.cnf
    │   │   ├── mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
    │   │   └── secure_mysql.sh
    │   ├── handlers
    │   ├── tasks
    │   │   ├── config.yml
    │   │   ├── data.yml
    │   │   ├── group.yml
    │   │   ├── install.yml
    │   │   ├── link.yml
    │   │   ├── main.yml
    │   │   ├── path.yml
    │   │   ├── secure.yml
    │   │   ├── service.yml
    │   │   ├── unarchive.yml
    │   │   └── user.yml
    │   └── templates

3#在tasks目录下
(1)主程序 定义运行的先后顺序

[root@ansible ~]#cat /data/ansible/roles/mysql/tasks/main.yml
- include: install.yml
- include: group.yml
- include: user.yml
- include: unarchive.yml
- include: link.yml
- include: data.yml
- include: config.yml
- include: service.yml
- include: path.yml
- include: secure.yml

(2)分别按顺序编写主程序列出的yml文件

[root@ansible ~]#cat /data/ansible/roles/mysql/tasks/install.yml
- name: install packages
  yum: name=libaio,perl-Data-Dumper,perl-Getopt-Long

[root@ansible ~]#cat /data/ansible/roles/mysql/tasks/group.yml
- name: create mysql group
  group: name=mysql gid=306

[root@ansible ~]#cat /data/ansible/roles/mysql/tasks/user.yml
- name: create mysql user
  user: name=mysql uid=306 group=mysql shell=/sbin/nologin system=yes create_home=no home=/data/mysql


[root@ansible ~]#cat /data/ansible/roles/mysql/tasks/unarchive.yml
- name: copy tar to remote host and file mode
  unarchive: src=mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz dest=/usr/local/ owner=root group=root

[root@ansible ~]#cat /data/ansible/roles/mysql/tasks/link.yml
- name: mkdir /usr/local/mysql
  file: src=/usr/local/mysql-5.6.46-linux-glibc2.12-x86_64 dest=/usr/local/mysql state=link

[root@ansible ~]#cat /data/ansible/roles/mysql/tasks/data.yml
- name: data dir
  shell: chdir=/usr/local/mysql/ ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql

[root@ansible ~]#cat /data/ansible/roles/mysql/tasks/config.yml
- name: config my.cnf
  copy: src=my.cnf dest=/etc/my.cnf

[root@ansible ~]#cat /data/ansible/roles/mysql/tasks/service.yml
- name: service script
  shell: /bin/cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld ; /etc/init.d/mysqld start;chkconfig --add mysqld;chkconfig mysqld on                        
                   拷贝启动项                                                     设置开机启动项            添加启动项             开启服务  
  tags: service    

[root@ansible ~]#cat /data/ansible/roles/mysql/tasks/path.yml
- name: PATH variable
  copy: content='PATH=/usr/local/mysql/bin:$PATH' dest=/etc/profile.d/mysql.sh

[root@ansible ~]#cat /data/ansible/roles/mysql/tasks/secure.yml
- name: secure script
  script: secure_mysql.s

(3)在roles平级目录创建roles.yml 文件

root@ansible ~]#cat /data/ansible/mysql_roles.yml
- hosts: appsrvs
  remote_user: root
  roles:
    - {role: mysql,tags: ["mysql","db"]}
                添加标签

(4)执行

[root@ansible ~]#ansible-playbook -t mysql /data/ansible/mysql_roles.yml
也可单独执行其中一个yml文件
[root@CENTOS8 ansible]# ansible-playbook -t service mysql_roles.yml
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值