master
commit
220d5ca326
@ -0,0 +1,94 @@ |
|||||||
|
apiVersion: extensions/v1beta1 # 指定api版本,此值必须在kubectl api-versions中 |
||||||
|
kind: Deployment # 指定创建资源的角色/类型 |
||||||
|
metadata: # 资源的元数据/属性 |
||||||
|
name: demo # 资源的名字,在同一个namespace中必须唯一 |
||||||
|
namespace: default # 部署在哪个namespace中 |
||||||
|
labels: # 设定资源的标签 |
||||||
|
app: nginx |
||||||
|
version: v1 |
||||||
|
spec: # 资源规范字段 |
||||||
|
replicas: 1 # 声明副本数目 |
||||||
|
revisionHistoryLimit: 3 # 保留历史版本 |
||||||
|
selector: # 选择器 |
||||||
|
matchLabels: # 匹配标签 |
||||||
|
app: nginx |
||||||
|
version: v1 |
||||||
|
strategy: # 策略 |
||||||
|
rollingUpdate: # 滚动更新 |
||||||
|
maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数 |
||||||
|
maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数 |
||||||
|
type: RollingUpdate # 滚动更新策略 |
||||||
|
template: # 模版 |
||||||
|
metadata: # 资源的元数据/属性 |
||||||
|
annotations: # 自定义注解列表 |
||||||
|
sidecar.istio.io/inject: "false" # 自定义注解名字 |
||||||
|
labels: # 设定资源的标签 |
||||||
|
app: nginx |
||||||
|
version: v1 |
||||||
|
spec: # 资源规范字段 |
||||||
|
containers: |
||||||
|
- name: nginx# 容器的名字 |
||||||
|
image: nginx:1.17.0 # 容器使用的镜像地址 |
||||||
|
imagePullPolicy: IfNotPresent # 每次Pod启动拉取镜像策略,三个选择 Always、Never、IfNotPresent |
||||||
|
# Always,每次都检查; |
||||||
|
# Never,每次都不检查(不管本地是否有); |
||||||
|
# IfNotPresent,如果本地有就不检查,如果没有就拉取(手动测试时,已经打好镜像存在docker容器中时, |
||||||
|
# 使用存在不检查级别, 默认为每次都检查,然后会进行拉取新镜像,因镜像仓库不存在,导致部署失败) |
||||||
|
volumeMounts: #文件挂载目录,容器内配置 |
||||||
|
- mountPath: /data/ #容器内要挂载的目录 |
||||||
|
name: share #定义的名字,需要与下面vloume对应 |
||||||
|
resources: # 资源管理 |
||||||
|
limits: # 最大使用 |
||||||
|
cpu: 300m # CPU,1核心 = 1000m |
||||||
|
memory: 500Mi # 内存,1G = 1000Mi |
||||||
|
requests: # 容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行 |
||||||
|
cpu: 100m |
||||||
|
memory: 100Mi |
||||||
|
livenessProbe: # pod 内部健康检查的设置 |
||||||
|
httpGet: # 通过httpget检查健康,返回200-399之间,则认为容器正常 |
||||||
|
path: /healthCheck # URI地址 |
||||||
|
port: 8080 # 端口 |
||||||
|
scheme: HTTP # 协议 |
||||||
|
# host: 127.0.0.1 # 主机地址 |
||||||
|
initialDelaySeconds: 30 # 表明第一次检测在容器启动后多长时间后开始 |
||||||
|
timeoutSeconds: 5 # 检测的超时时间 |
||||||
|
periodSeconds: 30 # 检查间隔时间 |
||||||
|
successThreshold: 1 # 成功门槛 |
||||||
|
failureThreshold: 5 # 失败门槛,连接失败5次,pod杀掉,重启一个新的pod |
||||||
|
readinessProbe: # Pod 准备服务健康检查设置 |
||||||
|
httpGet: |
||||||
|
path: /healthCheck |
||||||
|
port: 8080 |
||||||
|
scheme: HTTP |
||||||
|
initialDelaySeconds: 30 |
||||||
|
timeoutSeconds: 5 |
||||||
|
periodSeconds: 10 |
||||||
|
successThreshold: 1 |
||||||
|
failureThreshold: 5 |
||||||
|
#也可以用这种方法 |
||||||
|
#exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常 |
||||||
|
# command: |
||||||
|
# - cat |
||||||
|
# - /tmp/health |
||||||
|
#也可以用这种方法 |
||||||
|
#tcpSocket: # 通过tcpSocket检查健康 |
||||||
|
# port: number |
||||||
|
ports: |
||||||
|
- name: http # 名称 |
||||||
|
containerPort: 8080 # 容器开发对外的端口 |
||||||
|
protocol: TCP # 协议 |
||||||
|
imagePullSecrets: # 镜像仓库拉取密钥 |
||||||
|
- name: harbor-certification |
||||||
|
volumes: #挂载目录在本机的路径 |
||||||
|
- name: share #对应上面的名字 |
||||||
|
hostPath: |
||||||
|
path: /data #挂载本机的路径 |
||||||
|
affinity: # 亲和性调试 |
||||||
|
nodeAffinity: # 节点亲和力 |
||||||
|
requiredDuringSchedulingIgnoredDuringExecution: # pod 必须部署到满足条件的节点上 |
||||||
|
nodeSelectorTerms: # 节点满足任何一个条件就可以 |
||||||
|
- matchExpressions: # 有多个选项,则只有同时满足这些逻辑选项的节点才能运行 pod |
||||||
|
- key: beta.kubernetes.io/arch |
||||||
|
operator: In |
||||||
|
values: |
||||||
|
- amd64 |
@ -0,0 +1,205 @@ |
|||||||
|
--- |
||||||
|
kind: Namespace |
||||||
|
apiVersion: v1 |
||||||
|
metadata: |
||||||
|
name: kube-flannel |
||||||
|
labels: |
||||||
|
pod-security.kubernetes.io/enforce: privileged |
||||||
|
--- |
||||||
|
kind: ClusterRole |
||||||
|
apiVersion: rbac.authorization.k8s.io/v1 |
||||||
|
metadata: |
||||||
|
name: flannel |
||||||
|
rules: |
||||||
|
- apiGroups: |
||||||
|
- "" |
||||||
|
resources: |
||||||
|
- pods |
||||||
|
verbs: |
||||||
|
- get |
||||||
|
- apiGroups: |
||||||
|
- "" |
||||||
|
resources: |
||||||
|
- nodes |
||||||
|
verbs: |
||||||
|
- get |
||||||
|
- list |
||||||
|
- watch |
||||||
|
- apiGroups: |
||||||
|
- "" |
||||||
|
resources: |
||||||
|
- nodes/status |
||||||
|
verbs: |
||||||
|
- patch |
||||||
|
--- |
||||||
|
kind: ClusterRoleBinding |
||||||
|
apiVersion: rbac.authorization.k8s.io/v1 |
||||||
|
metadata: |
||||||
|
name: flannel |
||||||
|
roleRef: |
||||||
|
apiGroup: rbac.authorization.k8s.io |
||||||
|
kind: ClusterRole |
||||||
|
name: flannel |
||||||
|
subjects: |
||||||
|
- kind: ServiceAccount |
||||||
|
name: flannel |
||||||
|
namespace: kube-flannel |
||||||
|
--- |
||||||
|
apiVersion: v1 |
||||||
|
kind: ServiceAccount |
||||||
|
metadata: |
||||||
|
name: flannel |
||||||
|
namespace: kube-flannel |
||||||
|
--- |
||||||
|
kind: ConfigMap |
||||||
|
apiVersion: v1 |
||||||
|
metadata: |
||||||
|
name: kube-flannel-cfg |
||||||
|
namespace: kube-flannel |
||||||
|
labels: |
||||||
|
tier: node |
||||||
|
app: flannel |
||||||
|
data: |
||||||
|
cni-conf.json: | |
||||||
|
{ |
||||||
|
"name": "cbr0", |
||||||
|
"cniVersion": "0.3.1", |
||||||
|
"plugins": [ |
||||||
|
{ |
||||||
|
"type": "flannel", |
||||||
|
"delegate": { |
||||||
|
"hairpinMode": true, |
||||||
|
"isDefaultGateway": true |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "portmap", |
||||||
|
"capabilities": { |
||||||
|
"portMappings": true |
||||||
|
} |
||||||
|
} |
||||||
|
] |
||||||
|
} |
||||||
|
net-conf.json: | |
||||||
|
{ |
||||||
|
"Network": "10.244.0.0/16", |
||||||
|
"Backend": { |
||||||
|
"Type": "vxlan" |
||||||
|
} |
||||||
|
} |
||||||
|
--- |
||||||
|
apiVersion: apps/v1 |
||||||
|
kind: DaemonSet |
||||||
|
metadata: |
||||||
|
name: kube-flannel-ds |
||||||
|
namespace: kube-flannel |
||||||
|
labels: |
||||||
|
tier: node |
||||||
|
app: flannel |
||||||
|
spec: |
||||||
|
selector: |
||||||
|
matchLabels: |
||||||
|
app: flannel |
||||||
|
template: |
||||||
|
metadata: |
||||||
|
labels: |
||||||
|
tier: node |
||||||
|
app: flannel |
||||||
|
spec: |
||||||
|
affinity: |
||||||
|
nodeAffinity: |
||||||
|
requiredDuringSchedulingIgnoredDuringExecution: |
||||||
|
nodeSelectorTerms: |
||||||
|
- matchExpressions: |
||||||
|
- key: kubernetes.io/os |
||||||
|
operator: In |
||||||
|
values: |
||||||
|
- linux |
||||||
|
hostNetwork: true |
||||||
|
priorityClassName: system-node-critical |
||||||
|
tolerations: |
||||||
|
- operator: Exists |
||||||
|
effect: NoSchedule |
||||||
|
serviceAccountName: flannel |
||||||
|
initContainers: |
||||||
|
- name: install-cni-plugin |
||||||
|
#image: flannelcni/flannel-cni-plugin:v1.1.0 for ppc64le and mips64le (dockerhub limitations may apply) |
||||||
|
image: docker.io/rancher/mirrored-flannelcni-flannel-cni-plugin:v1.1.0 |
||||||
|
command: |
||||||
|
- cp |
||||||
|
args: |
||||||
|
- -f |
||||||
|
- /flannel |
||||||
|
- /opt/cni/bin/flannel |
||||||
|
volumeMounts: |
||||||
|
- name: cni-plugin |
||||||
|
mountPath: /opt/cni/bin |
||||||
|
- name: install-cni |
||||||
|
#image: flannelcni/flannel:v0.20.2 for ppc64le and mips64le (dockerhub limitations may apply) |
||||||
|
image: docker.io/rancher/mirrored-flannelcni-flannel:v0.20.2 |
||||||
|
command: |
||||||
|
- cp |
||||||
|
args: |
||||||
|
- -f |
||||||
|
- /etc/kube-flannel/cni-conf.json |
||||||
|
- /etc/cni/net.d/10-flannel.conflist |
||||||
|
volumeMounts: |
||||||
|
- name: cni |
||||||
|
mountPath: /etc/cni/net.d |
||||||
|
- name: flannel-cfg |
||||||
|
mountPath: /etc/kube-flannel/ |
||||||
|
containers: |
||||||
|
- name: kube-flannel |
||||||
|
#image: flannelcni/flannel:v0.20.2 for ppc64le and mips64le (dockerhub limitations may apply) |
||||||
|
image: docker.io/rancher/mirrored-flannelcni-flannel:v0.20.2 |
||||||
|
command: |
||||||
|
- /opt/bin/flanneld |
||||||
|
args: |
||||||
|
- --ip-masq |
||||||
|
- --kube-subnet-mgr |
||||||
|
resources: |
||||||
|
requests: |
||||||
|
cpu: "100m" |
||||||
|
memory: "50Mi" |
||||||
|
limits: |
||||||
|
cpu: "100m" |
||||||
|
memory: "50Mi" |
||||||
|
securityContext: |
||||||
|
privileged: false |
||||||
|
capabilities: |
||||||
|
add: ["NET_ADMIN", "NET_RAW"] |
||||||
|
env: |
||||||
|
- name: POD_NAME |
||||||
|
valueFrom: |
||||||
|
fieldRef: |
||||||
|
fieldPath: metadata.name |
||||||
|
- name: POD_NAMESPACE |
||||||
|
valueFrom: |
||||||
|
fieldRef: |
||||||
|
fieldPath: metadata.namespace |
||||||
|
- name: EVENT_QUEUE_DEPTH |
||||||
|
value: "5000" |
||||||
|
volumeMounts: |
||||||
|
- name: run |
||||||
|
mountPath: /run/flannel |
||||||
|
- name: flannel-cfg |
||||||
|
mountPath: /etc/kube-flannel/ |
||||||
|
- name: xtables-lock |
||||||
|
mountPath: /run/xtables.lock |
||||||
|
volumes: |
||||||
|
- name: run |
||||||
|
hostPath: |
||||||
|
path: /run/flannel |
||||||
|
- name: cni-plugin |
||||||
|
hostPath: |
||||||
|
path: /opt/cni/bin |
||||||
|
- name: cni |
||||||
|
hostPath: |
||||||
|
path: /etc/cni/net.d |
||||||
|
- name: flannel-cfg |
||||||
|
configMap: |
||||||
|
name: kube-flannel-cfg |
||||||
|
- name: xtables-lock |
||||||
|
hostPath: |
||||||
|
path: /run/xtables.lock |
||||||
|
type: FileOrCreate |
@ -0,0 +1,16 @@ |
|||||||
|
apiVersion: v1 # 版本 |
||||||
|
kind: Service # 类型 |
||||||
|
metadata: # 元数据 |
||||||
|
name: # 资源名称 |
||||||
|
namespace: # 命名空间 |
||||||
|
spec: |
||||||
|
selector: # 标签选择器,用于确定当前Service代理那些Pod |
||||||
|
app: nginx |
||||||
|
type: # Service的类型,指定Service的访问方式 |
||||||
|
clusterIP: # 虚拟服务的IP地址 |
||||||
|
sessionAffinity: # session亲和性,支持ClientIP、None两个选项,默认值为None |
||||||
|
ports: # 端口信息 |
||||||
|
- port: 8080 # Service端口 |
||||||
|
protocol: TCP # 协议 |
||||||
|
targetPort : # Pod端口 |
||||||
|
nodePort: # 主机端口 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,47 @@ |
|||||||
|
[mysql57] |
||||||
|
name=mysql57 |
||||||
|
baseurl=http://package.qf.com/mysql57-community |
||||||
|
enabled=1 |
||||||
|
gpgcheck=0 |
||||||
|
|
||||||
|
[mysql57-connectors-community] |
||||||
|
name=mysql57-connectors-community |
||||||
|
baseurl=http://package.qf.com/mysql-connectors-community |
||||||
|
enabled=1 |
||||||
|
gpgcheck=0 |
||||||
|
|
||||||
|
[mysql57-tools-community] |
||||||
|
name=mysql57-tools-community |
||||||
|
baseurl=http://package.qf.com/mysql-tools-community |
||||||
|
enabled=1 |
||||||
|
gpgcheck=0 |
||||||
|
|
||||||
|
[myxtrabackup] |
||||||
|
name=myxtrabackup |
||||||
|
baseurl=http://package.qf.com/xtrabackup |
||||||
|
enabled=0 |
||||||
|
gpgcheck=0 |
||||||
|
|
||||||
|
[mybase] |
||||||
|
name=mybase |
||||||
|
baseurl=http://package.qf.com/base |
||||||
|
enabled=1 |
||||||
|
gpgcheck=0 |
||||||
|
|
||||||
|
[myepel] |
||||||
|
name=myepel |
||||||
|
baseurl=http://package.qf.com/epel |
||||||
|
enabled=1 |
||||||
|
gpgcheck=0 |
||||||
|
|
||||||
|
[myextras] |
||||||
|
name=myepel |
||||||
|
baseurl=http://package.qf.com/extras |
||||||
|
enabled=1 |
||||||
|
gpgcheck=0 |
||||||
|
|
||||||
|
[myupdates] |
||||||
|
name=myupdates |
||||||
|
baseurl=http://package.qf.com/updates |
||||||
|
enabled=1 |
||||||
|
gpgcheck=0 |
@ -0,0 +1,5 @@ |
|||||||
|
[global] |
||||||
|
index-url = https://mirrors.aliyun.com/pypi/simple/ |
||||||
|
|
||||||
|
[install] |
||||||
|
trusted-host=mirrors.aliyun.com |
@ -0,0 +1,30 @@ |
|||||||
|
#!/usr/bin/env bash |
||||||
|
#history |
||||||
|
|
||||||
|
# 获取登录ip地址 |
||||||
|
# USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` |
||||||
|
USER_IP=$(env |grep SSH_CLIENT | awk '{print $1}' | sed 's/SSH_CLIENT=//' | awk -F " " '{print $1}') |
||||||
|
# 指定历史命令路径 |
||||||
|
HISTDIR=/usr/share/.history |
||||||
|
if [ -z $USER_IP ] |
||||||
|
then |
||||||
|
USER_IP=`hostname` |
||||||
|
fi |
||||||
|
if [ ! -d $HISTDIR ] |
||||||
|
then |
||||||
|
mkdir -p $HISTDIR |
||||||
|
chmod 777 $HISTDIR |
||||||
|
fi |
||||||
|
if [ ! -d $HISTDIR/${LOGNAME} ] |
||||||
|
then |
||||||
|
mkdir -p $HISTDIR/${LOGNAME} |
||||||
|
chmod 300 $HISTDIR/${LOGNAME} |
||||||
|
fi |
||||||
|
# 设置历史命令条数 |
||||||
|
export HISTSIZE=4000 |
||||||
|
# 设置文件后缀 |
||||||
|
DT=`date +%Y%m%d_%H%M%S` |
||||||
|
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT" #文件路径 |
||||||
|
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S] " #记录格式 |
||||||
|
# 设置权限 |
||||||
|
chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null |
@ -0,0 +1,8 @@ |
|||||||
|
#!/usr/bin/bash |
||||||
|
echo "版本信息可查看 https://dn-dao-github-mirror.daocloud.io/docker/compose/releases/" |
||||||
|
LEVEL=${DOCKER_COMPOSE_LEVEL:-1.20.1} |
||||||
|
curl -L https://get.daocloud.io/docker/compose/releases/download/${LEVEL}/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose && chmod a+x /usr/local/bin/docker-compose |
||||||
|
|
||||||
|
if [ -z $DOCKER_COMPOSE_LEVEL ];then |
||||||
|
echo "采用默认版本1.20.1,如需要指定版本,可以在终端执行 export DOCKER_COMPOSE_LEVEL=版本" |
||||||
|
fi |
@ -0,0 +1,35 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
TAG_PREFIX= |
||||||
|
|
||||||
|
save(){ |
||||||
|
if [ ! -d "./images" ]; then |
||||||
|
mkdir images |
||||||
|
fi |
||||||
|
cd images |
||||||
|
docker images --format "{{.ID}} {{.Repository}}:{{.Tag}} {{.Size}}" |grep $TAG_PREFIX > images_pull.txt |
||||||
|
while read line |
||||||
|
do |
||||||
|
image_id=`echo $line | awk '{print $1}'` |
||||||
|
image_repository=`echo $line | awk '{print $2}'` |
||||||
|
image_size=`echo $line | awk '{print $3}'` |
||||||
|
docker save -o $image_id.tar $image_repository && \ |
||||||
|
echo "Image $image_repository saved, size $image_size" |
||||||
|
done < images_pull.txt |
||||||
|
} |
||||||
|
|
||||||
|
load(){ |
||||||
|
cd images |
||||||
|
while read line |
||||||
|
do |
||||||
|
image_id=`echo $line | awk '{print $1}'` |
||||||
|
image_repository=`echo $line | awk '{print $2}'` |
||||||
|
docker load -i $image_id.tar && \ |
||||||
|
echo "Image $image_repository loaded" |
||||||
|
done < images_pull.txt |
||||||
|
} |
||||||
|
if [ -z "$1" ]; then |
||||||
|
echo "Usage: image_operation.sh [save|load]" |
||||||
|
fi |
||||||
|
|
||||||
|
eval $1 |
@ -0,0 +1,34 @@ |
|||||||
|
#!/usr/bin/bash |
||||||
|
|
||||||
|
set -e |
||||||
|
unset c |
||||||
|
color(){ |
||||||
|
declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34) |
||||||
|
#echo -e "\033[${c[$1]}m[`date +%T`]($1) $2\033[0m" |
||||||
|
printf "\033[${c[$1]}m%-10s%-10s %-30s\033[0m\n" "[`date +%T`]" "($1)" "$2" |
||||||
|
sleep 0.5 |
||||||
|
} |
||||||
|
|
||||||
|
install(){ |
||||||
|
color Info "开始安装docker服务" |
||||||
|
yum install -y yum-utils device-mapper-persistent-data lvm2 git && \ |
||||||
|
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && \ |
||||||
|
yum install -y docker-ce |
||||||
|
mkdir -p /etc/docker |
||||||
|
color Success "安装完成" |
||||||
|
color Info "开始配置镜像加速器" |
||||||
|
tee /etc/docker/daemon.json <<-'EOF' |
||||||
|
{ |
||||||
|
"registry-mirrors": ["https://pilvpemn.mirror.aliyuncs.com"] |
||||||
|
} |
||||||
|
EOF |
||||||
|
cat >> /etc/sysctl.conf <<EOF |
||||||
|
net.bridge.bridge-nf-call-ip6tables = 1 |
||||||
|
net.bridge.bridge-nf-call-iptables = 1 |
||||||
|
net.ipv4.ip_forward=1 |
||||||
|
EOF |
||||||
|
systemctl daemon-reload && \ |
||||||
|
systemctl enable docker --now |
||||||
|
} |
||||||
|
install |
||||||
|
color Success "配置完成" |
@ -0,0 +1,8 @@ |
|||||||
|
#!/usr/bin/bash |
||||||
|
|
||||||
|
yum -y install bash-completion |
||||||
|
source /usr/share/bash-completion/bash_completion |
||||||
|
|
||||||
|
source <(kubectl completion bash) |
||||||
|
|
||||||
|
echo "source <(kubectl completion bash)" >> ~/.bashrc |
@ -0,0 +1,46 @@ |
|||||||
|
#!/bin/bash |
||||||
|
# by newrain |
||||||
|
# time 2019-11-28 |
||||||
|
# lv 2.0 |
||||||
|
level=5.7 |
||||||
|
password="QianFeng@123" |
||||||
|
remote_user="remote" |
||||||
|
remote_passwd="QianFeng@123" |
||||||
|
unset c |
||||||
|
color(){ |
||||||
|
declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34) |
||||||
|
#echo -e "\033[${c[$1]}m[`date +%T`]($1) $2\033[0m" |
||||||
|
printf "\033[${c[$1]}m%-10s%-10s %-30s\033[0m\n" "[`date +%T`]" "($1)" "$2" |
||||||
|
sleep 0.5 |
||||||
|
} |
||||||
|
|
||||||
|
color Info "此脚本用于yum 安装mysql" |
||||||
|
color Warning "此脚本将删除所有mysql数据,如需备份请ctrl+c终止脚本,程序将在3秒后执行" |
||||||
|
sleep 3 |
||||||
|
if [[ $UID -ne 0 ]];then |
||||||
|
color Warning "使用root 执行此脚本" |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
color Warning "清理环境" |
||||||
|
systemctl stop mysqld mariadb &>/dev/null |
||||||
|
yum erase -y `rpm -qa |grep mariadb` 2>/dev/null |
||||||
|
yum erase -y `rpm -qa |grep mysql` 2>/dev/null |
||||||
|
rm -rvf /etc/my.cnf /var/lib/mysql /var/log/mysql* |
||||||
|
userdel -rf mysql &>/dev/null |
||||||
|
ping -c1 -w1 www.baidu.com &>/dev/null |
||||||
|
if [[ $? -eq 0 ]];then |
||||||
|
if [ ! -f /tmp/.init ];then |
||||||
|
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm |
||||||
|
fi |
||||||
|
else |
||||||
|
color Error "网络错误" |
||||||
|
exit 22 |
||||||
|
fi |
||||||
|
yum -y install mysql-community-server mysql-community-devel --disablerepo mysql80 --enablerepo mysql57 --nogpgcheck |
||||||
|
systemctl start mysqld |
||||||
|
color Warning "启动成功,初始密码如下(mysql5.7前版本没有初始密码)" |
||||||
|
passwd=$(grep -o 'root@localhost.*' /var/log/mysqld.log | awk 'END{print $NF}') |
||||||
|
mysqladmin -uroot -p$passwd password $password && \ |
||||||
|
mysql -uroot -p$password -e "grant all on *.* to \"$remote_user\"@'%' identified by \"$remote_passwd\"; flush privileges;" |
||||||
|
color Success "安装完成 初始密码为$password" |
@ -0,0 +1,82 @@ |
|||||||
|
#!/usr/bin/bash |
||||||
|
|
||||||
|
unset c |
||||||
|
color(){ |
||||||
|
declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34) |
||||||
|
#echo -e "\033[${c[$1]}m[`date +%T`]($1) $2\033[0m" |
||||||
|
printf "\033[${c[$1]}m%-10s%-10s %-30s\033[0m\n" "[`date +%T`]" "($1)" "$2" |
||||||
|
sleep 0.5 |
||||||
|
} |
||||||
|
cpu(){ |
||||||
|
cpus=$(grep processor /proc/cpuinfo |wc -l) |
||||||
|
cpuModel=$(grep "model name" /proc/cpuinfo | uniq | awk -F ':' '{print $2}') |
||||||
|
cpuCache=$(grep "cache size" /proc/cpuinfo | uniq | awk -F ':' '{print $2}') |
||||||
|
printf "%-10s\t%-50s\n" "[CPU]" "[Info]" |
||||||
|
printf "%-10s\t%-50s\n" "cpu核心:" "${cpus/ /}核" |
||||||
|
printf "%-10s\t%-50s\n" "cpu型号:" "${cpuModel/ /}" |
||||||
|
printf "%-10s\t%-50s\n" "cpu缓存:" "${cpuCache/ /}" |
||||||
|
} |
||||||
|
memory(){ |
||||||
|
memTotal=$(awk -F':' '/MemTotal:/{print $2}' /proc/meminfo | awk '{print $1,$2}') |
||||||
|
memFree=$(awk -F':' '/MemFree:/{print $2}' /proc/meminfo | awk '{print $1,$2}') |
||||||
|
memBuffer=$(awk -F':' '/Buffers:/{print $2}' /proc/meminfo | awk '{print $1,$2}') |
||||||
|
memCached=$(awk -F':' '/^Cached:/{print $2}' /proc/meminfo | awk '{print $1,$2}') |
||||||
|
swapTotal=$(awk -F':' '/SwapTotal:/{print $2}' /proc/meminfo | awk '{print $1,$2}') |
||||||
|
swapFree=$(awk -F':' '/SwapFree:/{print $2}' /proc/meminfo | awk '{print $1,$2}') |
||||||
|
memDevice=$(dmidecode |grep -P -A 5 "Memory Device"|grep Size|grep -v 'Range' | wc -l) |
||||||
|
maxMem=$(dmidecode |grep "Maximum Capacity" | awk '{print $3,$4}') |
||||||
|
maxHz=$(dmidecode |grep "Max Speed" |uniq | awk '{print $3,$4}') |
||||||
|
printf "%-10s\t%-50s\n" "[Memory]" "[Info]" |
||||||
|
printf "%-10s\t%-50s\n" "内存总量:" "$memTotal" |
||||||
|
printf "%-10s\t%-50s\n" "内存剩余:" "$memFree" |
||||||
|
printf "%-10s\t%-50s\n" "内存写缓:" "$memBuffer" |
||||||
|
printf "%-10s\t%-50s\n" "内存读缓:" "$memCached" |
||||||
|
printf "%-10s\t%-50s\n" "临时缓存总量:" "$swapTotal" |
||||||
|
printf "%-10s\t%-50s\n" "临时缓存剩余:" "$swapFree" |
||||||
|
printf "%-10s\t%-50s\n" "内存条数:" "$memDevice" |
||||||
|
printf "%-10s\t%-50s\n" "最大支持内存:" "$maxMem" |
||||||
|
printf "%-10s\t%-50s\n" "内存频率:" "$maxHz" |
||||||
|
} |
||||||
|
disk(){ |
||||||
|
printf "%-10s\t%-15s\t%-30s\t%-5s\n" "[MountPoint]" "[Used]" "[FileSystem]" "[Size]" |
||||||
|
df -Th | awk 'BEGIN{ORS="\n"}$2 ~ /(ext|xfs)/{printf "%-10s\t%-15s\t%-30s\t%-5s\n",$NF,$(NF-1),$1,$3}' |
||||||
|
} |
||||||
|
|
||||||
|
os(){ |
||||||
|
os_release=$(hostnamectl | awk -F': ' '/Operating System/{print $2}') |
||||||
|
os_kernel=$(hostnamectl | awk -F': ' '/Kernel/{print $2}') |
||||||
|
hostname=$(hostnamectl | awk -F': ' '/Static hostname/{print $2}') |
||||||
|
printf "%-10s\t%-20s\n" "[Info]" "[Value]" |
||||||
|
printf "%-20s\t%-20s\n" "系统版本:" "$os_release" |
||||||
|
printf "%-20s\t%-20s\n" "内核版本:" "$os_kernel" |
||||||
|
printf "%-20s\t%-20s\n" "主机名称:" "$hostname" |
||||||
|
netIf=$(ip -f inet a | awk '/^[0-9]/{print $0}' |awk -F':' '{print $2}') |
||||||
|
netIfs=$(echo netIf |wc -w) |
||||||
|
printf "%-20s\t%-20s\t%-18s\n" "[InterFace]" "[IpAddress]" "[MacAddress]" |
||||||
|
for i in $netIf |
||||||
|
do |
||||||
|
# 网卡ip |
||||||
|
iname=$(ip -f inet a show dev $i | awk '/inet/{print $2}') |
||||||
|
# 网卡mac |
||||||
|
mname=$(ip -f link a show dev $i |awk '/link/{print $2}') |
||||||
|
printf "%-20s\t%-20s\t%-18s\n" "$i" "$iname" "$mname" |
||||||
|
done |
||||||
|
} |
||||||
|
|
||||||
|
color Info "开始读取本地信息" |
||||||
|
|
||||||
|
main(){ |
||||||
|
color Success "中央处理器信息" |
||||||
|
# cpu 信息查询函数 |
||||||
|
cpu |
||||||
|
color Success "内存信息" |
||||||
|
# 内存 信息查询函数 |
||||||
|
memory |
||||||
|
color Success "网络信息" |
||||||
|
os |
||||||
|
# 磁盘信息 |
||||||
|
color Success "磁盘信息" |
||||||
|
disk |
||||||
|
} |
||||||
|
|
||||||
|
main |
@ -0,0 +1,106 @@ |
|||||||
|
#!/usr/bin/bash |
||||||
|
|
||||||
|
color(){ |
||||||
|
unset c |
||||||
|
declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34) |
||||||
|
#echo -e "\033[${c[$1]}m[`date +%T`]($1) $2\033[0m" |
||||||
|
printf "\033[${c[$1]}m%-10s%-10s %-30s\033[0m\n" "[`date +%T`]" "($1)" "$2" |
||||||
|
sleep 0.5 |
||||||
|
} |
||||||
|
|
||||||
|
static_addr(){ |
||||||
|
ifname=$(ip -f inet a | awk '/^2/{print $2}') |
||||||
|
ifname=$(echo ${ifname/:/}) |
||||||
|
ipaddr=$(ip -f inet a show dev $ifname | awk '/inet/{print $2}' | awk -F'/' '{print $1}') |
||||||
|
prefix=$(ip -f inet a show dev $ifname | awk '/inet/{print $2}' | awk -F'/' '{print $2}') |
||||||
|
gateway=$(ip r |awk '/default/{print $3}') |
||||||
|
cat > /etc/sysconfig/network-scripts/ifcfg-$ifname <<EOF |
||||||
|
TYPE="Ethernet" |
||||||
|
PROXY_METHOD="none" |
||||||
|
BROWSER_ONLY="no" |
||||||
|
BOOTPROTO="static" |
||||||
|
DEFROUTE="yes" |
||||||
|
IPV4_FAILURE_FATAL="no" |
||||||
|
NAME="${ifname}" |
||||||
|
UUID="`uuidgen`" |
||||||
|
DEVICE="${ifname}" |
||||||
|
ONBOOT="yes" |
||||||
|
IPADDR=${ipaddr} |
||||||
|
PREFIX=${prefix} |
||||||
|
GATEWAY=${gateway} |
||||||
|
DNS1=${gateway} |
||||||
|
DNS2=114.114.114.114 |
||||||
|
DNS3=8.8.8.8 |
||||||
|
EOF |
||||||
|
systemctl restart network |
||||||
|
ping -w1 -c1 www.baidu.com &>/dev/null && \ |
||||||
|
return 10 || \ |
||||||
|
return 20 |
||||||
|
} |
||||||
|
|
||||||
|
local_yum_make(){ |
||||||
|
cd /etc/yum.repos.d/ && \ |
||||||
|
rename .repo .repo.bak *.repo &>/dev/null |
||||||
|
grep '10.8.161.40 package.qf.com' /etc/hosts &>/dev/null |
||||||
|
if [ $? -ne 0 ];then |
||||||
|
cat >> /etc/hosts <<EOF |
||||||
|
10.8.161.40 package.qf.com |
||||||
|
EOF |
||||||
|
fi |
||||||
|
curl -o /etc/yum.repos.d/centos7.repo http://download.beyourself.org.cn/repo/centos7-repo && \ |
||||||
|
yum repolist && yum clean all && yum makecache && \ |
||||||
|
color Success "本地源配置完成" || color Error "yum配置错误,可以\ncd /etc/yum.repos.d/ && rm -rf centos7.repo && rename .repo.bak .repo *.repo.bak \n使用手动恢复历史yum" |
||||||
|
} |
||||||
|
|
||||||
|
remote_yum_make(){ |
||||||
|
cd /etc/yum.repos.d/ && \ |
||||||
|
rename .repo .repo.bak *.repo &>/dev/null |
||||||
|
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo |
||||||
|
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo |
||||||
|
yum repolist && yum clean all && yum makecache && \ |
||||||
|
color Success "阿里源配置完成" || color Error "yum配置错误,可以\ncd /etc/yum.repos.d/ && rm -rf centos7.repo && rename .repo.bak .repo *.repo.bak \n使用手动恢复历史yum" |
||||||
|
} |
||||||
|
|
||||||
|
init(){ |
||||||
|
color Success "开始配置静态ip" |
||||||
|
static_addr |
||||||
|
if [ $? -eq 10 ];then |
||||||
|
color Success "静态ip配置并检测完成" |
||||||
|
else |
||||||
|
color Error "静态ip配置异常" |
||||||
|
fi |
||||||
|
color Info "正在关闭防火墙、selinux" |
||||||
|
color Warning "注意,这将降低服务器安全性" |
||||||
|
systemctl disable firewalld postfix --now && \ |
||||||
|
setenforce 0 ; sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config && \ |
||||||
|
color Success "配置完成" || color Error "配置异常,请检查" |
||||||
|
color Info "配置yum源, 此操作将备份您的历史源" |
||||||
|
ping -w 1 -c 1 10.8.161.40 &>/dev/null |
||||||
|
if [ $? -eq 0 ];then |
||||||
|
local_yum_make |
||||||
|
else |
||||||
|
remote_yum_make |
||||||
|
fi |
||||||
|
color Info "开始安装常用软件" |
||||||
|
yum install -y wget unzip vim yum-utils httpd-tools psacct net-tools nc ntpdate jq htop && \ |
||||||
|
color Success "安装完成" || color Warning "部分包可能失败" |
||||||
|
color Info "开始进行时间校准" |
||||||
|
ntpdate ntp.aliyun.com && \ |
||||||
|
# 修改时间到硬件 |
||||||
|
clock -w |
||||||
|
#保存时间到硬件 |
||||||
|
hwclock -s |
||||||
|
color Success "时间校准完成" |
||||||
|
# color Info "修改终端前缀显示" |
||||||
|
# cat > /etc/profile.d/psdiy.sh <<EOF |
||||||
|
# export PS1="[\e[32m(\t)\u\e[36m@\h\e[31m\e[0m \W]\$ " |
||||||
|
# EOF |
||||||
|
# color Success "修改完成,重新进入终端查看" |
||||||
|
echo {"time": "`date +'%F %T'`"} > /tmp/.init |
||||||
|
} |
||||||
|
if [ -f /tmp/.init ];then |
||||||
|
color Success "检测到此前已进行初始化,如需重新执行,请删除: rm -f /tmp/.init" |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
init |
||||||
|
color Success "初始化完成" |
@ -0,0 +1,39 @@ |
|||||||
|
#!/usr/bin/bash |
||||||
|
|
||||||
|
path=/opt/py3104 |
||||||
|
unset c |
||||||
|
color(){ |
||||||
|
declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34) |
||||||
|
#echo -e "\033[${c[$1]}m[`date +%T`]($1) $2\033[0m" |
||||||
|
printf "\033[${c[$1]}m%-10s%-10s %-30s\033[0m\n" "[`date +%T`]" "($1)" "$2" |
||||||
|
sleep 0.5 |
||||||
|
} |
||||||
|
|
||||||
|
mkdir -pv $path |
||||||
|
cd $path && \ |
||||||
|
yum -y install gcc gcc-c++ zlib-devel bzip2-devel sqlite-devel readline-devel libffi-devel && \ |
||||||
|
color Info "openssl 包下载,请稍等..." && \ |
||||||
|
wget http://download.beyourself.org.cn/package/openssl-1.1.1n.tar.gz && \ |
||||||
|
tar xf openssl-1.1.1n.tar.gz && \ |
||||||
|
cd openssl-1.1.1n && \ |
||||||
|
./config --prefix=/usr/local/openssl && \ |
||||||
|
make -j $(cat /proc/cpuinfo | grep processor |wc -l) && make install && cd .. && \ |
||||||
|
wget http://download.beyourself.org.cn/package/Python-3.10.4.tar.xz && \ |
||||||
|
tar xf Python-3.10.4.tar.xz && \ |
||||||
|
cd Python-3.10.4 && \ |
||||||
|
./configure --enable-shared --prefix=/usr/local/python3.10.4 --with-openssl=/usr/local/openssl --with-openssl-rpath=auto && \ |
||||||
|
make -j $(cat /proc/cpuinfo | grep processor |wc -l) && \ |
||||||
|
make install && \ |
||||||
|
echo "/usr/local/python3.10.4/lib" >> /etc/ld.so.conf && \ |
||||||
|
ldconfig && \ |
||||||
|
echo "export PATH=/usr/local/python3.10.4/bin:\$PATH" >> /etc/profile && \ |
||||||
|
color Success "python安装完成" |
||||||
|
|
||||||
|
color Info "配置pip加速" |
||||||
|
mkdir ~/.pip &>/dev/null |
||||||
|
tee ~/.pip/pip.conf <<EOF |
||||||
|
[global] |
||||||
|
index_url=https://mirrors.aliyun.com/pypi/simple |
||||||
|
timeout=6000 |
||||||
|
EOF |
||||||
|
color Success "配置完成" |
@ -0,0 +1,100 @@ |
|||||||
|
#!/usr/bin/bash |
||||||
|
|
||||||
|
<<! |
||||||
|
redis 多实例配置脚本 |
||||||
|
! |
||||||
|
|
||||||
|
REDIS_INSTALL_PATH=/data/application/redis |
||||||
|
REDIS_COMMAND_PATH=$REDIS_INSTALL_PATH/src |
||||||
|
REDIS_CONFIG_PATH=$REDIS_INSTALL_PATH/redis.conf |
||||||
|
REDIS_BIND_IP="0.0.0.0" |
||||||
|
REDIS_PORT=6379 |
||||||
|
REDIS_INSTANCE_PATH=/opt/instace/redis |
||||||
|
ERROR_INFO=" |
||||||
|
Usage: $0 \n |
||||||
|
\t-i\t--install 安装redis\n |
||||||
|
\t-s\t--instance 多实例配置\n |
||||||
|
\t--start\t启动redis\n |
||||||
|
\t--stop\t停止redis\n" |
||||||
|
|
||||||
|
install_function(){ |
||||||
|
if [ ! -d $REDIS_INSTALL_PATH ];then |
||||||
|
mkdir -p $REDIS_INSTALL_PATH |
||||||
|
fi |
||||||
|
yum -y install gcc gcc-c++ make wget |
||||||
|
wget http://download.redis.io/releases/redis-4.0.9.tar.gz && \ |
||||||
|
tar -zxvf redis-4.0.9.tar.gz && \ |
||||||
|
cp -r redis-4.0.9/* $REDIS_INSTALL_PATH && \ |
||||||
|
rm -rf redis-4.0.9 redis-4.0.9.tar.gz |
||||||
|
cd $REDIS_INSTALL_PATH && \ |
||||||
|
make |
||||||
|
echo -e "安装完成\nredis安装目录:$REDIS_INSTALL_PATH\nredis配置文件:$REDIS_CONFIG_PATH\nredis命令目录:$REDIS_COMMAND_PATH" |
||||||
|
} |
||||||
|
|
||||||
|
install_instance_function(){ |
||||||
|
INSTANCE_NAME=$1 |
||||||
|
if [ ! -d $REDIS_INSTANCE_PATH ];then |
||||||
|
mkdir -p $REDIS_INSTANCE_PATH |
||||||
|
fi |
||||||
|
if [ ! -d $REDIS_INSTALL_PATH ];then |
||||||
|
echo "请先安装redis,或修改脚本中的安装目录" |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
if [ -d $REDIS_INSTANCE_PATH/$INSTANCE_NAME ];then |
||||||
|
echo "实例已存在" |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
mkdir -p $REDIS_INSTANCE_PATH/$INSTANCE_NAME |
||||||
|
cp $REDIS_CONFIG_PATH $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf |
||||||
|
sed -i "s#^port.*#port $INSTANCE_NAME#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf |
||||||
|
sed -i "s#^bind.*#bind $REDIS_BIND_IP#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf |
||||||
|
sed -i "s#^pidfile.*#pidfile $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis_$INSTANCE_NAME.pid#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf |
||||||
|
sed -i "s#^logfile.*#logfile $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis_$INSTANCE_NAME.log#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf |
||||||
|
sed -i "s#^dir.*#dir $REDIS_INSTANCE_PATH/$INSTANCE_NAME#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf |
||||||
|
sed -i "s#^daemonize.*#daemonize yes#" $REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf |
||||||
|
echo -e "实例安装完成\n实例目录:$REDIS_INSTANCE_PATH/$INSTANCE_NAME\n实例配置文件:$REDIS_INSTANCE_PATH/$INSTANCE_NAME/redis.conf" |
||||||
|
} |
||||||
|
|
||||||
|
option=$(getopt -l "help::,install,instance,start,stop" -o "i,s:" -a -- "$@") |
||||||
|
if [ $# -lt 1 ];then |
||||||
|
echo -e $ERROR_INFO |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
eval set -- "$option" |
||||||
|
while true |
||||||
|
do |
||||||
|
case $1 in |
||||||
|
-i|--install) |
||||||
|
install_function |
||||||
|
shift 1 |
||||||
|
;; |
||||||
|
-s|--instance) |
||||||
|
install_instance_function $2 |
||||||
|
shift 2 |
||||||
|
;; |
||||||
|
--start) |
||||||
|
for i in `ls $REDIS_INSTANCE_PATH` |
||||||
|
do |
||||||
|
$REDIS_COMMAND_PATH/redis-server $REDIS_INSTANCE_PATH/$i/redis.conf |
||||||
|
echo "启动实例$i" |
||||||
|
done |
||||||
|
shift 1 |
||||||
|
;; |
||||||
|
--stop) |
||||||
|
for i in `ls $REDIS_INSTANCE_PATH` |
||||||
|
do |
||||||
|
$REDIS_COMMAND_PATH/redis-cli -p $i shutdown |
||||||
|
echo "停止实例$i" |
||||||
|
done |
||||||
|
shift 1 |
||||||
|
;; |
||||||
|
--) |
||||||
|
shift |
||||||
|
break |
||||||
|
;; |
||||||
|
*) |
||||||
|
echo -e $ERROR_INFO |
||||||
|
exit 0 |
||||||
|
;; |
||||||
|
esac |
||||||
|
done |
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue