From 8de901aa0570f51f22a22f5d53760d18ef5a572a Mon Sep 17 00:00:00 2001 From: Zhang Yueqian Date: Mon, 12 Apr 2021 16:51:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0CDH=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.MD => CDH_Deploy/README.MD | 0 CDH_Deploy/ansible.cfg | 5 + CDH_Deploy/cdh_deploy.yml | 17 ++ CDH_Deploy/cdh_private.key | 38 +++++ CDH_Deploy/cdh_private.key.pub | 1 + CDH_Deploy/hosts | 23 +++ CDH_Deploy/tasks/basic_settings.yml | 240 ++++++++++++++++++++++++++++ CDH_Deploy/tasks/deploy_cm.yml | 85 ++++++++++ CDH_Deploy/tasks/deploy_mysql.yml | 110 +++++++++++++ 9 files changed, 519 insertions(+) rename README.MD => CDH_Deploy/README.MD (100%) create mode 100644 CDH_Deploy/ansible.cfg create mode 100644 CDH_Deploy/cdh_deploy.yml create mode 100644 CDH_Deploy/cdh_private.key create mode 100644 CDH_Deploy/cdh_private.key.pub create mode 100644 CDH_Deploy/hosts create mode 100644 CDH_Deploy/tasks/basic_settings.yml create mode 100644 CDH_Deploy/tasks/deploy_cm.yml create mode 100644 CDH_Deploy/tasks/deploy_mysql.yml diff --git a/README.MD b/CDH_Deploy/README.MD similarity index 100% rename from README.MD rename to CDH_Deploy/README.MD diff --git a/CDH_Deploy/ansible.cfg b/CDH_Deploy/ansible.cfg new file mode 100644 index 0000000..98a66e6 --- /dev/null +++ b/CDH_Deploy/ansible.cfg @@ -0,0 +1,5 @@ +[defaults] +inventory = hosts +remote_user = root +# private_key_file = cdh_private.key +host_key_checking = False diff --git a/CDH_Deploy/cdh_deploy.yml b/CDH_Deploy/cdh_deploy.yml new file mode 100644 index 0000000..d7ce5b0 --- /dev/null +++ b/CDH_Deploy/cdh_deploy.yml @@ -0,0 +1,17 @@ +--- +- name: 环境准备 + hosts: new_cdh_servers + # become: true 不需要become,默认就是root用户 + vars_prompt: + - name: mysql_pass + prompt: 请输入你想设置的MySQL root账户密码(默认为antiy?918) + default: "antiy?918" + tasks: + - include: tasks/basic_settings.yml + - include: tasks/deploy_mysql.yml + - include: tasks/deploy_cm.yml + - name: 安装完成,请继续配置 + run_once: yes + delegate_to: localhost + pause: + prompt: "所有安装已经完成,请访问 {{ group['new_cdh_servers'][0] }}:7180 进行下一步配置" diff --git a/CDH_Deploy/cdh_private.key b/CDH_Deploy/cdh_private.key new file mode 100644 index 0000000..621790b --- /dev/null +++ b/CDH_Deploy/cdh_private.key @@ -0,0 +1,38 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/CDH_Deploy/cdh_private.key.pub b/CDH_Deploy/cdh_private.key.pub new file mode 100644 index 0000000..ce6b72e --- /dev/null +++ b/CDH_Deploy/cdh_private.key.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxzm0vtfe4aVV3L3yStD/HEpK+iU/mxxzRqYOLtCEcbYTlEZTFlBHLyvVmPLPXGlV/1w5Gg3Fx0ThT0W2LcYM0eMmO3VkL4VTHr5OLAEujtmYrZSyBdDNKRiGQ/ky8wF/A1gAwBPOtvB6GJsX+YoBZ3pdVIBOK9bJG5BYWI0FT6mn8osstUYDLsqZ/KlUV+h97ynU9JjFEDsgDWyYWUGByDJPBMa44Q7vFjQr+8/bVPLPNmqpEDjw5pMQOUu1of470BMoQTq3/QmHNiWjAN/ntalLFHGo/gG9Vj1znZV6IcgAJkCzURh06ZGRmCbeNzb6yN8qZ/z3uIRq7/Iqko+BC1rI8qsTSujUKcAnpgSPhN3MABV1kLgnnfrki3JpFCaBaA1aaokBlzoiBr2kQCTdeCoqbGuJ9Rjd6kKRw954oQ/Eqae7YCWJB3Uns3PQ8g4Cge6Vn+JY7+o3XXz8Hr9PDAOexhYKuLznVPgMxk7r/K3m4GAhwlNop3MaHcMhtrNk= luomio@mbp.local diff --git a/CDH_Deploy/hosts b/CDH_Deploy/hosts new file mode 100644 index 0000000..b2ff5c5 --- /dev/null +++ b/CDH_Deploy/hosts @@ -0,0 +1,23 @@ +[cdh_servers] +cdh01.ghadoop ansible_ssh_host=10.251.24.2 ansible_ssh_port=22 +cdh02.ghadoop ansible_ssh_host=10.251.24.3 ansible_ssh_port=22 +cdh03.ghadoop ansible_ssh_host=10.251.24.4 ansible_ssh_port=22 +cdh04.ghadoop ansible_ssh_host=10.251.24.5 ansible_ssh_port=22 +cdh05.ghadoop ansible_ssh_host=10.251.24.6 ansible_ssh_port=22 + +[new_cdh_servers] +cdh01.ghadoop ansible_ssh_host=10.251.24.102 ansible_ssh_port=22 +cdh02.ghadoop ansible_ssh_host=10.251.24.103 ansible_ssh_port=22 +cdh03.ghadoop ansible_ssh_host=10.251.24.104 ansible_ssh_port=22 +cdh04.ghadoop ansible_ssh_host=10.251.24.105 ansible_ssh_port=22 +cdh05.ghadoop ansible_ssh_host=10.251.24.106 ansible_ssh_port=22 + +[cdh_source] +server ansible_ssh_host=192.168.0.10 ansible_ssh_port=22 + +[cdh_control] +cdh01.ghadoop ansible_ssh_host=10.251.24.102 ansible_ssh_port=22 + +[new_cdh_servers:vars] +ansible_ssh_user=root +ansible_ssh_pass=antiy?918 diff --git a/CDH_Deploy/tasks/basic_settings.yml b/CDH_Deploy/tasks/basic_settings.yml new file mode 100644 index 0000000..fa08055 --- /dev/null +++ b/CDH_Deploy/tasks/basic_settings.yml @@ -0,0 +1,240 @@ +--- +- name: 上传安装包 + copy: src=offline_cdh dest=/opt/ +- name: 禁用SELinux和防火墙 + block: + - name: 禁用SELinux + ansible.builtin.lineinfile: + path: /etc/sysconfig/selinux + regexp: '^SELINUX=' + line: SELINUX=disabled + - name: 禁用防火墙 + ansible.builtin.service: + name: firewalld + state: stopped + enabled: no +- name: 修改主机名并分发给各主机 + tags: + - host + block: + - name: 设置主机名 + ansible.builtin.hostname: + name: "{{ inventory_hostname }}" + - name: 修改 /etc/sysconfig/network 内的主机名设置 + ansible.builtin.lineinfile: + path: /etc/sysconfig/network + regexp: '^HOSTNAME=' + line: "HOSTNAME={{ inventory_hostname|lower }}" + - name: 重启网络服务 + ansible.builtin.service: + name: network + state: restarted + - name: 分发主机名信息到各个主机 + blockinfile: + path: /etc/hosts + block: | + {% for h in groups['new_cdh_servers'] | sort %} + {{ hostvars[h].ansible_default_ipv4.address }} {{ h }} + {% endfor %} +- name: 安装软件包 + tags: + - pkgs + ansible.builtin.yum: + name: + - sysstat + - vim + - wget + - lrzsz + - screen + - gcc + - python-devel + - gcc-c++ + - ntpdate + - libyaml + - libyaml-devel + - python-setuptools + - ntp + - libaio # for mysql + - expect # for mysql + - mariadb # 这是mysql客户端工具,改名了 + - psmisc # for /opt/cm-5.14.2/etc/init.d/cloudera-scm-server start + state: present +- name: SSH互信配置 + tags: + - dpk + block: + - name: 生成ssh私钥 + command: + cmd: ssh-keygen -f /root/.ssh/id_rsa -N "" + creates: /root/.ssh/id_rsa + - name: 将公钥下载到Ansible中控机 + fetch: + src: /root/.ssh/id_rsa.pub + dest: /tmp/pubkeys/{{ inventory_hostname }}.pub + flat: yes + - name: 将ssh指纹信息下载到中控机 + block: + - name: 先cat获取 + command: cat /etc/ssh/ssh_host_ecdsa_key.pub + register: ssh_finger + - name: 然后输出到临时文件 + ansible.builtin.lineinfile: + path: /tmp/ssh_fingerprint + line: "{{ inventory_hostname }},{{ hostvars[inventory_hostname].ansible_default_ipv4.address }} {{ ssh_finger.stdout_lines[0] }}" + insertbefore: BOF + create: yes + - name: 最后获取到本地 + fetch: + src: /tmp/ssh_fingerprint + dest: /tmp/fingerprints/{{ inventory_hostname }}.known_hosts + flat: yes + - name: 然后删除服务器上的临时文件 + ansible.builtin.file: + path: /tmp/ssh_fingerprint + state: absent + - name: 删除之前遗留的旧文件 + run_once: yes + delegate_to: localhost + file: + path: "{{ item }}" + state: absent + with_items: + - /tmp/authorized_keys + - /tmp/known_hosts + - name: 合并公钥信息 + run_once: yes + delegate_to: localhost + ansible.builtin.assemble: + src: /tmp/pubkeys/ + dest: /tmp/authorized_keys + - name: 合并指纹信息 + run_once: yes + delegate_to: localhost + ansible.builtin.assemble: + src: /tmp/fingerprints/ + dest: /tmp/known_hosts + - name: 上传指纹信息和公钥信息到各个主机 + copy: + src: "{{ item }}" + dest: "{{ item }}" + loop: + - /tmp/authorized_keys + - /tmp/known_hosts + - name: 将公钥复制到用户配置 + blockinfile: + path: /root/.ssh/authorized_keys + block: "{{ lookup('file', '/tmp/authorized_keys') }}" + create: yes + mode: 0600 + - name: 将指纹信息复制到用户配置 + blockinfile: + path: /root/.ssh/known_hosts + block: "{{ lookup('file', '/tmp/known_hosts') }}" + create: yes + mode: 0600 + - name: 清楚本地临时文件和目录 + file: + path: "{{ item }}" + state: absent + with_items: + - /tmp/fingerprints/ + - /tmp/pubkeys/ + - /tmp/authorized_keys + - /tmp/known_hosts +- name: 移除系统JDK并安装离线包里面的JDK + tags: + - jdk + block: + - name: 移除系统JDK包 + ansible.builtin.yum: + name: + - java-1.6.0-openjdk + - java-1.7.0-openjdk + - java-1.8.0-openjdk + - java-11-openjdk + state: absent + autoremove: yes + - name: 安装离线包提供的JDK8 + ansible.builtin.yum: + name: /opt/offline_cdh/jdk-8u261-linux-x64.rpm + state: present +- name: 设置时间同步 + tags: + - ntp + block: + - name: 在主机01上配置NTP服务 + ansible.builtin.lineinfile: + path: /etc/ntp.conf + regexp: "^restrict 10.251" + line: restrict 10.251.24.0 mask 255.255.255.0 nomodify notrap + when: inventory_hostname == groups['new_cdh_servers'][0] + - name: 在主机01上启用NTP服务 + ansible.builtin.service: + name: ntpd + state: restarted + enabled: yes + - name: 延时一段时间以等待ntp服务就绪 + command: sleep 10 + - name: 从主机01上同步时间 + command: "ntpdate -u {{ hostvars['cdh01.ghadoop'].ansible_default_ipv4.address }}" + when: inventory_hostname != "cdh01.ghadoop" +- name: 禁用透明大页 + tags: + - nothp + block: + - name: 临时禁用碎片整理 + shell: echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag + args: + executable: /bin/bash + - name: 临时禁用透明大页 + shell: echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled + args: + executable: /bin/bash + - name: 修改Grub配置 + ansible.builtin.lineinfile: + path: /etc/default/grub + regexp: "^GRUB_CMDLINE_LINUX=" + line: GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet transparent_hugepage=never" + - name: 判断当前是Grub还是Grub2 + ansible.builtin.stat: + path: /etc/{{ item }} + register: grub2_cfg + with_items: + - grub2.cfg + - grub2-efi.cfg + - debug: + var: grub2_cfg + - name: 根据是Grub还是Grub2,更新Grub配置 + command: "grub2-mkconfig -o {{ item.stat.path }}" + when: item.stat.readable + with_items: "{{ grub2_cfg.results }}" +- name: 修改系统设置 + tags: + - setconf + block: + - name: 修改限制文件 /etc/security/limits.conf + blockinfile: + path: /etc/security/limits.conf + block: | + * soft nofile 65536 + * hard nofile 65536 + root soft nofile 65536 + root hard nofile 65536 + * soft memlock unlimited + * hard memlock unlimited + root soft memlock unlimited + root hard memlock unlimited + * soft as unlimited + * hard as unlimited + root soft as unlimited + root hard as unlimited + - name: 修改 /etc/sysctl.conf + ansible.builtin.lineinfile: + path: /etc/sysctl.conf + regexp: "{{ item.regexp }}" + line: "{{ item.line }}" + state: present + create: yes + loop: + - { regexp: "^vm.max_map_count=", line: "vm.max_map_count=131072" } + - { regexp: "^vm.swappiness=", line: "vm.swappiness=0" } diff --git a/CDH_Deploy/tasks/deploy_cm.yml b/CDH_Deploy/tasks/deploy_cm.yml new file mode 100644 index 0000000..9833ea9 --- /dev/null +++ b/CDH_Deploy/tasks/deploy_cm.yml @@ -0,0 +1,85 @@ +--- +- name: 部署ClouderaManager + tags: + - cm + block: + - name: 新建用户 + ansible.builtin.user: + name: cloudera-scm + system: true + home: /opt/cm-5.14.2/run/cloudera-scm-server + create_home: false + shell: /bin/false + comment: Cloudera SCM User + - name: 解压缩CM安装包 + ansible.builtin.unarchive: + src: /opt/offline_cdh/cloudera-manager-centos7-cm5.14.2_x86_64.tar.gz + dest: /opt/ + remote_src: true + - name: 复制MySQL连接器 + ansible.builtin.copy: + src: /opt/offline_cdh/mysql-connector-java-5.1.38.jar + dest: /opt/cm-5.14.2/share/cmf/lib/ + remote_src: true + - name: 复制Parcel仓库 + ansible.builtin.copy: + src: /opt/offline_cdh/parcel-repo/ + dest: /opt/cloudera/parcel-repo/ + remote_src: true + - name: 启动ClouderaManagerServer(仅主机执行) + when: + inventory_hostname == groups['new_cdh_servers'][0] + block: + - name: 初始化数据库 + ansible.builtin.shell: | + source /opt/cm-5.14.2/etc/default/cloudera-scm-server + source /opt/cm-5.14.2/etc/default/cloudera-scm-agent + /opt/cm-5.14.2/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p'{{ mysql_pass }}' --scm-host localhost scm scm scm + - name: 创建目录 + ansible.builtin.file: + path: /var/lib/cloudera-scm-server + state: directory + - name: 启动服务 + ansible.builtin.shell: | + source /opt/cm-5.14.2/etc/default/cloudera-scm-server + source /opt/cm-5.14.2/etc/default/cloudera-scm-agent + /opt/cm-5.14.2/etc/init.d/cloudera-scm-server start + args: + executable: /bin/bash + - name: 查看日志 + ansible.builtin.command: + cmd: tail -n30 /opt/cm-5.14.2/log/cloudera-scm-server/cloudera-scm-server.log + register: cm_log + - name: Debug输出日志 + debug: + msg: "{{ cm_log.stdout_lines }}" + - name: 暂停等待确认 + pause: + prompt: 请确认输出是否正常,按“Ctrl+C c”继续 + - name: 启动ClouderaManagerAgent(所有主机) + block: + - name: 配置主节点 + ansible.builtin.lineinfile: + path: /opt/cm-5.14.2/etc/cloudera-scm-agent/config.ini + regexp: ^server_host= + line: "server_host={{ groups['new_cdh_servers'][0] | lower }}" + - name: 启动Agent + ansible.builtin.shell: | + source /opt/cm-5.14.2/etc/default/cloudera-scm-server + source /opt/cm-5.14.2/etc/default/cloudera-scm-agent + /opt/cm-5.14.2/etc/init.d/cloudera-scm-agent start + args: + executable: /bin/bash + - name: 查看日志 + ansible.builtin.command: + cmd: tail -n30 /opt/cm-5.14.2/log/cloudera-scm-agent/cloudera-scm-agent.log + register: cm_agent_log + - name: Debug输出日志 + debug: + msg: "{{ cm_agent_log.stdout_lines }}" + - name: 暂停等待确认 + pause: + prompt: | + 请确认输出是否正常,按“Ctrl+C c”继续 + 注意,以下信息为正常信息: + ERROR Failed to connect to previous supervisor. diff --git a/CDH_Deploy/tasks/deploy_mysql.yml b/CDH_Deploy/tasks/deploy_mysql.yml new file mode 100644 index 0000000..57018ca --- /dev/null +++ b/CDH_Deploy/tasks/deploy_mysql.yml @@ -0,0 +1,110 @@ +--- +- 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