Compare commits
5 Commits
6f63988ce4
...
3b3753a918
Author | SHA1 | Date |
---|---|---|
|
3b3753a918 | 4 years ago |
|
b643a43c99 | 4 years ago |
|
8de901aa05 | 4 years ago |
|
21a172ce63 | 4 years ago |
|
3cbe0f8534 | 4 years ago |
16 changed files with 730 additions and 0 deletions
@ -0,0 +1,7 @@ |
||||
BaiduProxy/pkg |
||||
BaiduProxy/bin |
||||
BaiduProxy/src/github.com |
||||
BaiduProxy/src/golang.org |
||||
BaiduProxy/src/h12.io |
||||
BaiduProxy/antiy |
||||
BaiduProxy/.idea |
@ -0,0 +1,13 @@ |
||||
# /etc/systemd/system/baidu_proxy.service |
||||
[Unit] |
||||
Description=proxy for api.map.baidu.com and so on |
||||
After=syslog.target network.target |
||||
Wants=network.target |
||||
Requires=ssh_proxy.service |
||||
|
||||
[Service] |
||||
Type=simple |
||||
ExecStart=/usr/local/baiduproxy/antiy 0.0.0.0:7999 |
||||
|
||||
[Install] |
||||
WantedBy=multi-user.target |
@ -0,0 +1,13 @@ |
||||
# /etc/systemd/system/baidu_proxy.service |
||||
[Unit] |
||||
Description=use ssh for remote port redirection. |
||||
After=syslog.target network.target |
||||
Wants=network.target baidu_proxy.service |
||||
|
||||
[Service] |
||||
Type=simple |
||||
WorkingDirectory=/usr/local/baiduproxy |
||||
ExecStart=/usr/bin/autossh -M 0 -NR 0.0.0.0:7999:localhost:7999 -i id_rsa root@220.182.51.94 |
||||
|
||||
[Install] |
||||
WantedBy=multi-user.target |
@ -0,0 +1,5 @@ |
||||
module antiy |
||||
|
||||
go 1.16 |
||||
|
||||
require h12.io/socks v1.0.2 |
@ -0,0 +1,6 @@ |
||||
github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI= |
||||
github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c= |
||||
github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= |
||||
github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= |
||||
h12.io/socks v1.0.2 h1:cZhhbV8+DE0Y1kotwhr1a3RC3kFO7AtuZ4GLr3qKSc8= |
||||
h12.io/socks v1.0.2/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck= |
@ -0,0 +1,129 @@ |
||||
package main |
||||
|
||||
import ( |
||||
"fmt" |
||||
"io/ioutil" |
||||
"net/http" |
||||
"net/url" |
||||
"os" |
||||
"strings" |
||||
"time" |
||||
) |
||||
|
||||
var domains = []string{ |
||||
"api.map.baidu.com", |
||||
"api0.map.bdimg.com", |
||||
"api1.map.bdimg.com", |
||||
"api2.map.bdimg.com", |
||||
"api3.map.bdimg.com", |
||||
"maponline0.bdimg.com", |
||||
"maponline1.bdimg.com", |
||||
"maponline2.bdimg.com", |
||||
"maponline3.bdimg.com", |
||||
"dlswbr.baidu.com", |
||||
"shangetu0.map.bdimg.com", |
||||
"shangetu1.map.bdimg.com", |
||||
"shangetu2.map.bdimg.com", |
||||
"shangetu3.map.bdimg.com", |
||||
"miao.baidu.com", |
||||
} |
||||
|
||||
func ReplaceHost(contentString, hostname string) string { |
||||
for _, domain := range domains { |
||||
contentString = strings.Replace(contentString, domain, hostname+"/"+domain, -1) |
||||
} |
||||
contentString = strings.Replace(contentString, "https://", "http://", -1) |
||||
return contentString |
||||
} |
||||
|
||||
type MyHandler struct { |
||||
} |
||||
|
||||
func (myHandler *MyHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) { |
||||
hostname := req.Host |
||||
getUrl := url.URL{ |
||||
Scheme: "http", |
||||
} |
||||
if !strings.HasPrefix(req.URL.Path, "/") { |
||||
req.URL.Path = "/" + req.URL.Path |
||||
} |
||||
|
||||
for _, domain := range domains { |
||||
if strings.HasPrefix(req.URL.Path, "/"+domain) { |
||||
getUrl.Host = domain |
||||
getUrl.Path = strings.Replace(req.URL.Path, domain+"/", "", 1) |
||||
getUrl.RawQuery = req.URL.RawQuery |
||||
baiduResp, _ := http.Get(getUrl.String()) |
||||
fmt.Printf("fmt: %s", baiduResp.Header.Get("Content-Type")) |
||||
fmt.Printf("Get response from %s\n", getUrl.String()) |
||||
content, _ := ioutil.ReadAll(baiduResp.Body) |
||||
contentString := string(content) |
||||
if strings.Contains(baiduResp.Header.Get("Content-Type"), "javascript") { |
||||
contentString = ReplaceHost(contentString, hostname) |
||||
} |
||||
resp.Header().Set("Access-Control-Allow-Origin", "*") |
||||
resp.Header().Set("Access-Control-Allow-Headers", "Origin") |
||||
resp.Header().Set("Content-Type", baiduResp.Header.Get("Content-Type")) |
||||
fmt.Fprintf(resp, "%v\n", contentString) |
||||
return |
||||
} |
||||
} |
||||
|
||||
//fp, _ := os.Open("demo.html")
|
||||
//pageContent, _ := io.ReadAll(fp)
|
||||
pageContent := ` |
||||
<!DOCTYPE html> |
||||
<html> |
||||
<head> |
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
||||
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> |
||||
<style type="text/css"> |
||||
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";} |
||||
</style> |
||||
<script type="text/javascript" src="/api.map.baidu.com/api?v=2.0&ak=ADfpGTm3mDV4sZRiA2uDOKv3SbvcPtzG"></script> |
||||
<title>地图展示</title> |
||||
</head> |
||||
<body> |
||||
<div id="allmap"></div> |
||||
</body> |
||||
</html> |
||||
<script type="text/javascript"> |
||||
// 百度地图API功能
|
||||
var map = new BMap.Map("allmap"); // 创建Map实例
|
||||
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别
|
||||
//添加地图类型控件
|
||||
map.addControl(new BMap.MapTypeControl({ |
||||
mapTypes:[ |
||||
BMAP_NORMAL_MAP, |
||||
BMAP_HYBRID_MAP |
||||
]})); |
||||
map.setCurrentCity("武汉"); // 设置地图显示的城市 此项是必须设置的
|
||||
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
|
||||
</script> |
||||
` |
||||
fmt.Fprint(resp, string(pageContent)) |
||||
} |
||||
|
||||
func (myHandler *MyHandler) Handler() { |
||||
|
||||
} |
||||
|
||||
func main() { |
||||
var port string |
||||
if len(os.Args) > 1 { |
||||
port = os.Args[1] |
||||
} else { |
||||
port = "127.0.0.1:8080" |
||||
} |
||||
m := MyHandler{} |
||||
|
||||
s := &http.Server{ |
||||
Addr: port, |
||||
Handler: &m, |
||||
ReadTimeout: 10 * time.Second, |
||||
WriteTimeout: 10 * time.Second, |
||||
MaxHeaderBytes: 1 << 20, |
||||
} |
||||
|
||||
s.ListenAndServe() |
||||
} |
@ -0,0 +1,13 @@ |
||||
# /etc/systemd/system/baidu_proxy.service |
||||
[Unit] |
||||
Description=use ssh for remote port redirection. |
||||
After=syslog.target network.target |
||||
Wants=network.target |
||||
|
||||
[Service] |
||||
Type=simple |
||||
WorkingDirectory=/usr/local/baiduproxy |
||||
ExecStart=/usr/bin/autossh -M 0 -NR 0.0.0.0:7999:localhost:7999 -i id_rsa 192.168.55.218 |
||||
|
||||
[Install] |
||||
WantedBy=multi-user.target |
@ -0,0 +1,25 @@ |
||||
# 说明 |
||||
|
||||
## HelperScripts |
||||
|
||||
此文件夹主要存放一些帮助脚本 |
||||
|
||||
### PartTools.py |
||||
|
||||
用于批量自动分区并挂载的工具. 参数分两种 `-s SIZE` 或 `-d DEVICE,DEVICE,...` |
||||
|
||||
对于 `-s SIZE` , 会将大于此大小(单位为G)的磁盘(排除跟分区所在磁盘)分一个大分区并格式化成Ext4, 然后顺序挂载到系统的 /diskN 目录(如果只有一个磁盘则就是 /disk 目录). |
||||
|
||||
对于 `-d DEV,DEV,...` (例如 `-d sda,sdb,sdc`) 会将列表制定的磁盘(排除根分区所在磁盘)分一个大分区并格式化车成Ext4, 然后和上面一样顺序挂载到系统根目录下. |
||||
|
||||
挂载完成后, 会记录所有挂载上到分区信息到 `/etc/fstab` 文件里面, 以如下格式记录: |
||||
|
||||
``` config |
||||
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /diskN ext4 defaults 0 0 |
||||
``` |
||||
|
||||
``` shell |
||||
sudo python2 PartTools.py -s 2000 # 将所有大于2T的磁盘分区&格式化&挂载 |
||||
# 或者 |
||||
sudo python2 PartTools.py -d sda,sdb,sdc,sdd # 将 /dev/sd{a,b,c,d} 全部格式化并挂载 |
||||
``` |
@ -0,0 +1,5 @@ |
||||
[defaults] |
||||
inventory = hosts |
||||
remote_user = root |
||||
# private_key_file = cdh_private.key |
||||
host_key_checking = False |
@ -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 进行下一步配置" |
@ -0,0 +1,38 @@ |
||||
-----BEGIN OPENSSH PRIVATE KEY----- |
||||
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 |
||||
-----END OPENSSH PRIVATE KEY----- |
@ -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 |
@ -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 |
@ -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" } |
@ -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. |
@ -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 <<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 |
Loading…
Reference in new issue