背景
随着云服务器的大范围应用,传统的机房环境向云上环境迁移已经成了大势所趋,传统机房环境的机柜安装、强电、弱电的布线安装、线缆的功率选型、网线光纤的选型连接,服务器上架、交换机防火墙的上架、交换机防火墙的调试、服务器的RAID设置、硬件扩容、整体联通性调试这些工作都被云环境给大大的缓解。人们可以专注于软件服务环境维护搭建。操作系统的安装也一并省去,根据业务系统的业务流量、并发计算和吞吐量估算出对硬件环境的需求,在云服务商提供的图形界面中选择对应的参数数据。操作系统只需要对应的选择即可。工作中主要使用的事为linux操作系统,本文以CentOS7为例进行展开。
目的
购买选择对应的操作系统后,将系统需要的共性的初始化工作操作,共性化意味着重复性工作、必要性、和机械型,将人员的操作使用脚本操作实现。将代码上传至git代码仓库。每次使用的时候,下载到本机执行即可。
思路
操作系统选择过程中会设置系统超级管理员密码,安全规则默认开具22和3389,方便远程连接。设置完毕使用远程工具进行远程连接(在此使用系统EasySSH工具连接)
1、创建用户
2、安装常用的组件工具
3、docker和docker-compose
4、创建总体脚本调用以上三个脚本
以上只是一个简单的流程化的脚本执行,更多的是将自身的重复性工作使用脚本运行。目前linux系统自带python,也可以使用python实现。本文是以shell脚本实现。主要是思路缕顺了,工具就可以更好的去实现。
实施
创建总体脚本
0_init_os.sh
#!/bin/bash
# ---------------------------------------------
# File Name : 0_init_os.sh
# Author : shalter
# Mail : shalter@xxxx.com
# Date : 2022-01-11
# Description :
# ---------------------------------------------
# 1 创建用户
source 1_create-user.sh
# 2 安装常用软件git/vim/gcc/update
source 2_install-tool.sh
# 3 安装docker和docker-compose
. 3_install-docker.sh
echo 'Init system is finish!'
说明:
总脚本中主要通过调用三个功能脚本来执行
修改文件权限
chmod +x 0_init_os.sh
创建系统用户
1_create-user.sh
将需要创建的用户名、组和密码填写到对应的USER_NAME/USER_GROUP/USER_PASSWD中,保存文件
#!/bin/bash
# 需要创建的用户名,示例:USER_NAME=myuser
USER_NAME=
# 创建用户所属的用户组,示例:USER_GROUP=mygroup
USER_GROUP=
# 用户密码,示例:USER_PASSWD=Cloud12#$
USER_PASSWD=
# 校验参数
function check_param()
{
if [[ ! -n ${USER_NAME} ]] || [[ ! -n ${USER_GROUP} ]] || [[ ! -n ${USER_PASSWD} ]]; then
echo "ERROR: Please check the param USER_NAME,USER_GROUP,USER_PASSWD can not be null"
exit 1;
fi
}
# 创建用户
function creat_user()
{
check_param
#create group
grep "^${USER_GROUP}" /etc/group &> /dev/null
if [ $? -ne 0 ]; then
groupadd ${USER_GROUP}
fi
#create user
id ${USER_NAME} &> /dev/null
if [ $? -ne 0 ]; then
useradd -g ${USER_GROUP} ${USER_NAME} -d /home/${USER_NAME}
echo ${USER_PASSWD}| passwd ${USER_NAME} --stdin
chage -M 99999 ${USER_NAME}
fi
}
修改文件权限
chmod +x 1_create-user.sh
安装组件工具
2_install-tool.sh
#!/bin/bash
# ---------------------------------------------
# File Name : 2_installtool.sh
# Author : shalter
# Mail : shalter@xxxx.com
# Date : 2022-01-12
# Description : install git/vim/tools
# ---------------------------------------------
# 1 git
echo 'install git'
yum install git -y
# 2 vim
echo 'install vim'
yum install vim -y
# 3 conf vim
git clone https://gitee.com/shalter/vim.git
cd vim
vim_path=$(vim --version | grep -n /usr/share/vim | awk '{ print $5 }'| sed 's/\"//g')
mv freya.vim $vim_path/colors
mv vimrc ~./vimrc
# 4 install tools
echo 'install tools'
yum install gcc gcc-c++ cmake pcre pcre-devel zlib zlib-devel openssl openssl-devel wget telnet setuptool lrzsz dos2unix net-tools bind-utils tree screen iftop ntpdate tree lsof iftop iotop -y
说明:
常用工具的安装
修改权限
chmod +x 2_install-tool.sh
安装容器
3_install-docker.sh
#!/bin/bash
# 查看内核版本
uname -r
# 更新系统
yum update -y
# 卸载旧版本
yum remove docker docker-common docker-selinux docker-engine
# 安装依赖软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 查看docker版本
yum list docker-ce --showduplicates | sort -r
# 安装docker
yum install docker-ce -y
# 启动docker
systemctl start docker
# 设置开机启动
systemctl enable docker
# 获取UID=1000的用户名
user_name=$(getent passwd 1000|awk -F : '{print $1}')
# 添加至docker组
gpasswd -a $user_name docker
# 更新用户组
newgrp docker
# 验证安装
docker version
# 输出
echo "Complete!
# 下载docker-compose
git clones https://gitee.com/shalter/docker-compose.git
# 进入下载目录
cd docker-compose
# 修改文件名词
mv docker-compose-Linux-x86_64 docker-compose
# 修改文件可执行权限
chmod +x docker-compose
# 移动文件
mv docker-compose /usr/local/bin/docker-compose
# 查看验证版本
docker-compose -v
修改权限
chmod +x 3_install-docker.sh
代码仓库
将以上代码上传代码仓库,使用之时,从代码仓库下载安装即可。
创建仓库
创建代码仓库
Git 全局设置:
git config --global user.name "xxxxx"
git config --global user.email "xxxxhp@126.com"
上传代码
进入脚本目录
cd script
git init
git add 0_init_os.sh 1_create-user.sh 2_install-tool.sh 3_install_docker.sh
git commit -m "init system of centos7"
git remote add origin https://gitee.com/shalter/init_centos7.git
git push -u origin "master"
登录新的服务器
下载执行
# 创建目录
mkdir -p /home/{$user}/script/
# 进入目录
cd /home/{$user}/script/
# 下载脚本
git clone https://gitee.com/shalter/init_centos7.git
# 进入文件夹
cd init_centos7
# 修改脚本可执行
chmod +x *.sh
# 执行脚本
./0_init_os.sh
以上为初始化centos7操作系统,如果是多台服务器配合ansible操作即可。可以根据自身对服务器的需求进行定制化操作。