--- - 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 <" 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