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.
110 lines
4.0 KiB
110 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
|
|
|