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