Mirror of git@code.avlyun.org:envision/g_service_ops_v1.0/devops.git
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
4.0 KiB

---
- name: 部署MySQL
tags:
- mysql
when:
- inventory_hostname == groups['new_cdh_servers'][0]
block:
- name: 判断程序在不在
ansible.builtin.stat:
path: /usr/local/mysql/bin/mysqld
register: mysqld
- name: 解压缩MySQL程序
block:
- name: 解压缩离线包
ansible.builtin.unarchive:
src: /opt/offline_cdh/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
dest: /usr/local/
remote_src: yes
creates: /usr/local/mysql-5.7.31-linux-glibc2.12-x86_64
- name: 重命名文件夹
ansible.builtin.command:
cmd: mv /usr/local/mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql
creates: /usr/local/mysql
when:
- not mysqld.stat.exists
- name: 创建用户和用户组
block:
- name: 创建用户组mysql
ansible.builtin.group:
name: mysql
system: yes
- name: 创建用户mysql
ansible.builtin.user:
name: mysql
group: mysql
system: yes
create_home: no
home: /usr/local/mysql
shell: /sbin/nologin
- name: 创建MySQL配置文件
ansible.builtin.copy:
src: /opt/offline_cdh/my.cnf
dest: /etc/my.cnf
remote_src: yes
- name: 创建MySQL目录并更新权限
ansible.builtin.file:
path: "{{ item.path }}"
state: "{{ item.state }}"
recurse: "{{ item.recurse }}"
owner: mysql
group: mysql
loop:
- { path: /usr/local/mysql, state: directory, recurse: yes}
- { path: /data/mysql, state: directory, recurse: yes }
- { path: /data/log/mysql, state: directory, recurse: yes }
- { path: /data/log/mysql/mysql.err, state: touch, recurse: no }
- { path: /data/log/mysql/slow.log, state: touch, recurse: no }
- name: 取得MySQL的密码
command: /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
register: mysqld_output
- name: 安装Python-MySQL客户端
ansible.builtin.yum:
name: MySQL-python
state: present
- name: 配置MySQL服务
block:
- name: 修改服务文件
ansible.builtin.lineinfile:
regexp: "{{ item.regexp }}"
line: "{{ item.line }}"
path: /usr/local/mysql/support-files/mysql.server
loop:
- { regexp: "^basedir=", line: basedir=/usr/local/mysql }
- { regexp: "^datadir=", line: datadir=/data/mysql }
- name: 安装服务脚本到系统目录
ansible.builtin.copy:
src: /usr/local/mysql/support-files/mysql.server
dest: /etc/init.d/mysql
remote_src: yes
mode: 0755
- name: 设置mysql服务默认启动
ansible.builtin.service:
name: mysql
state: restarted
sleep: 5
enabled: yes
- name: 修改MySQL权限表使临时密码生效
ansible.builtin.shell: |
cd /usr/local/mysql
expect <<EOF
spawn ./bin/mysql --user=root -p
expect "Enter password:"
send "{{ mysqld_output.stderr | regex_search('(?<=generated for root@localhost: ).*$', multiline=True) }}\n"
expect "mysql>"
send "set password=password('{{ mysql_pass }}');grant all privileges on *.* to root@'%' identified by '{{ mysql_pass }}';flush privileges;\n"
expect "mysql>"
send "quit;\n"
exit
EOF
- name: 创建hive元数据库和cm监控数据库
community.mysql.mysql_db:
login_user: root
login_password: "{{ mysql_pass }}"
login_unix_socket: /usr/local/mysql/mysql.sock
name: "{{ item }}"
encoding: utf8
collation: utf8_general_ci
loop:
- hive_metastore
- amon