.部署图

.文件目录结构

1、配置主机和总入口文件
vim hosts
[mysql]
192.168.100.14
vim site.yml
---
- hosts:all
remote_user:root
roles:
- base
- mysql
或者
---
- hosts:mysql
remote_user:root
roles:
- base
- mysql
2、base角色,配置Yum源,除了163yum源,可自行下载其他的yum源
也可以在ansible主机上下载到目录files,通过copy到目标主机上
vim main.yml
---
- name: wget 163yum
get_url:dest=/etc/yum.repos.d/
url=http://mirrors.163.com/.help/CentOS6-Base-163.repo
3、mysql角色,在files目录下存在my.cnf主配置文件和设置mysql密码的脚本文件setpassword.sh
cat my.cnf 就是mysql配置文件,自行复制
vim setpassword.sh #mysql8需要把root用户密码策略更改
#!/bin/sh
pwd=`awk '/temporary password/{print $NF}' var/log/mysqld.log`
mysql -uroot -p${pwd} -S /var/lib/mysql/mysql.sock -e
"set global validate_password.policy=0;
set global validate_password.length=1;
set password='123456';
flush privileges;
use mysql;
create user 'root'@'%' identified with mysql_native_password by '123456';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;"
vim main.yml
---
- name: wget mysql8 rpm
get_url: url=https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm dest=/usr/local/
- name: rpm mysql
shell: rpm -qa | grep mysql || rpm -ivh /usr/local/mysql80-community-release-el7-3.noarch.rpm
- name: yum install mysql-server,MySQL-python
yum: name={{item}} state=present
with_items:
- MySQL-python
- mysql-server
- name: start mysqld service
service: name=mysqld state=restarted enabled=yes
- name: copy my.cnf
copy: src=my.cnf dest=/etc/my.cnf
- name: restart mysqld
service: name=mysqld state=restarted
- name: 获取mysql初始密码
shell: cat /var/log/mysqld.log | grep password | awk -F ":" '{ print $4}'
register: pwd
- debug: msg={{pwd.stdout}}
- name: copy setpassword.sh
copy: src=setpassword.sh dest=/root/setpassword.sh mode=777
- name: sh password.sh
shell: sh /root/setpassword.sh
- name: create database
mysql_db:
login_host: "192.168.100.14"
login_user: "root"
login_password: "123456"
login_port: "3306" #端口可以省略
name: "{{database}}"
state: "present"
- name: create user
mysql_user:
login_host: "192.168.100.14"
login_user: "root"
login_password: "123456"
login_port: "3306" #端口可以省略
name: "{{user}}"
password: "{{password}}"
priv: "{{database}}.*:ALL,GRANT"
host: "%"
state: "present"
4、group_vars变量目录
vim all #远程主机密码文件
---
ansible_ssh_pass: centos
vim mysql #新建账户、数据库文件
---
user: mysql
password: mysql
database: mysqldata




