shell一键部署各种服务

不多bb,直接上代码,可以部署raid,磁盘分区,lvm,dns,dhcp等各种服务

#!/bin/bash
#====================================================================================================
#一键部署安装各种服务
#====================================================================================================
cat <<EOF
1:部署DHCP服务
2:部署DNS服务
3:磁盘分区
4:配置LVM
5:配置Raid
6:配置pxe
EOF
read -p "which one do you want?" i
dhcp(){
echo "配置前请将网卡模式更改为仅主机"
read -p "如果已更改(任意键下一步)"
rpm -q dhcp    #检测dhcp是否已经安装
if [ $? -eq 0 ]
then
	echo "已安装dhcp开始下一步操作"
else
	echo "未安装dhcp,开始自动安装"
	yum -y install dhcp &> /dev/null
	echo "安装完成"
fi
####################更改网卡#############################
read -p "请给予一个net1网段的IP:" now_ip
read -p "请给予一个net1网段的网关:" now_way
ip=`cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep "IPADDR" | awk -F"=" '{print $2}'`
way=`cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep "GATEWAY" | awk -F"=" '{print $2}'`
sed -i "/IPADDR/s/$ip/$now_ip/" /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i "/GATEWAY/s/$way/$now_way/" /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
###################更改配置文件############################
read -p "请输入net1网段:" net
cp -r /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
sed -i "/subnet/s/10.254.239.32/$net/" /etc/dhcp/dhcpd.conf
sed -i "/subnet/s/255.255.255.224/255.255.255.0/" /etc/dhcp/dhcpd.conf
read -p "请给予地址池范围:" range
sed -i "/range/s/10.254.239.40 10.254.239.60/$range/" /etc/dhcp/dhcpd.conf
sed -i "/option broadcast-address/s/10.254.239.31/$now_way/" /etc/dhcp/dhcpd.conf
sed -i "/option routers/d" /etc/dhcp/dhcpd.conf
####################重启dhcp####################################
systemctl restart dhcpd
}
dns(){
###############检查dns是否已经安装#############################
rpm -q bind
if [ $? -eq 0 ]
then
	echo "dns已经安装"
else
	echo "准备安装dns"
	yum -y install bind &> /dev/null
	echo "安装完成"
fi	
#################修改DNS配置文件########################
read -p "请输入本地IP:" ip
sed -i "/listen-on/s/127.0.0.1/$ip/" /etc/named.conf
sed -i "/allow-query/s/localhost/any/" /etc/named.conf
#################修改区域配置文件#####################
read -p "请输入域名:" url
sed -i "/zone/s/localhost.localdomain/$url/" /etc/named.rfc1912.zones
sed -i "/file/s/named.localhost/$url\.zone/" /etc/named.rfc1912.zones
################写区域配置文件内容######################
cp  -p /var/named/named.localhost  /var/named/$url\.zone
sed -i "/IN SOA/s/@/$url/2" /var/named/$url\.zone
sed -i "/IN SOA/s/rname.invalid/$url/" /var/named/$url\.zone
sed -i "/NS/s/@/$url\./" /var/named/$url\.zone
sed -i "/A/s/127.0.0.1/$ip/" /var/named/$url\.zone
###############重启dns服务##############################
systemctl start named
}
disk(){
##############刷新磁盘分区##########################
echo "- - -" > /sys/class/scsi_host/host0/scan

echo "- - -" > /sys/class/scsi_host/host1/scan

echo "- - -" > /sys/class/scsi_host/host2/scan
#############查看有哪些盘#########################
ls /dev/sd*
read -p "选择分哪块磁盘(sd?):" dev
############查看目前磁盘分区情况###################
fdisk -l  /dev/$dev
############开始分区##############################
read -p "请写出分第几个区域:" num 
read -p "请写出分多大空间(M):" num1
fdisk /dev/$dev &> /dev/null  <<EOF
n
p
$num

+${num1}M
w 
EOF
partprobe &> /dev/null
############格式化################################
read -p "是否需要自动格式化和挂载(y/n):" j
if [ $j == y ]
then
mkfs.xfs /dev/${dev}$num &> /dev/null
mkdir /mnt/${dev}$num
mount /dev/${dev}$num /mnt/${dev}$num
############自动挂载#############################
echo "/dev/${dev}$num /mnt/${dev}$num xfs defaults 0 0"  >> /etc/fstab 
mount -a
fi
read -p "是否继续进行分区(y/n):" i
if [ $i == y ]
then
	disk
else
	echo "完成"
fi
}
lvm(){
read -p "是否需要进行分区(y/n):" num
if [ $num == y ]
then 
echo "配置lvm建议不要格式化和挂载!!"
disk
fi
read -p "需要添加的盘(填写绝对路径):" dev
pvcreate $dev
read -p "请给予卷组名:" name
vgcreate $name $dev
read -p "请给予卷组的大小(M):" big
read -p "请给予逻辑卷的名字:" name1
lvcreate -L ${big}M -n $name1 $name
mkfs.xfs /dev/$name/$name1 &> /dev/null 
mkdir   /mnt/$name1
mount /dev/$name/$name1 /mnt/$name1 
echo "/dev/$name/$name1 /mnt/$name/$name1 xfs defaults 0 0"  >> /etc/fstab
lsblk
}
raid(){
#############安装软件############
echo "正在安装mdadm软件"
yum -y install mdadm &> /dev/null
echo "安装完成"
#############是否需要分区###############
echo "配置raid建议不要格式化和挂载!!"
read -p "是否需要进行分区(y/n):" num
if [ $num == y ]
then 
echo "配置lvm建议不要挂载!!"
disk
fi
###########开始创建raid################
read -p "创建raid[0|1|5]:" num
read -p "创建几块盘:" num1
read -p "需要添加的盘(填写绝对路径):" dev
mdadm -Cv /dev/md$num -l $num -n $num1 $dev 
mkfs.xfs /dev/md$num
mkdir /mnt/md$num
mount /dev/md$num /mnt/md$num
echo "/dev/md$num /mnt/md$num xfs defaults 0 0"  >> /etc/fstab
mdadm -D /dev/md$num
}
pxe(){
####################PXE一键部署#####################
#关闭防火墙及核心防护
systemctl stop firewalld
setenforce 0
#复制网卡信息
yuanip=`cat /etc/sysconfig/network-scripts/ifcfg-ens33 |grep 'IPADDR' |awk -F"=" '{print $2}'`
read -p "请输入要修改得网卡ip: " ip
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37
#修改网卡配置文件
sed -i "s/ens33/ens37/" /etc/sysconfig/network-scripts/ifcfg-ens37
sed -i "/IPADDR/s/$yuanip/$ip/" /etc/sysconfig/network-scripts/ifcfg-ens37
sed -i "/GATEWAY/s/^/#/" /etc/sysconfig/network-scripts/ifcfg-ens37
#重启网卡
systemctl restart network
#安装部署PXE所需得软件包
ping -c 2 -i 0.5 www.baidu.com &> /dev/null
if [ $? -eq 0 ];then
yum -y install dhcp tftp-server xinetd syslinux vsftpd
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf <<EOF
y
EOF
#配置DHCP服务
read -p "请输入配置的网段: " wd
read -p "请输入地址池的左区间: " zqj
read -p "请输入地址池的右区间: " yqj
echo "
ddns-update-style none;
subnet $wd netmask 255.255.255.0{
range $zqj $yqj;
option routers $ip;
option domain-name-servers 114.114.114.114;
next-server $ip;
filename \"pxelinux.0\";
}" >> /etc/dhcp/dhcpd.conf
#修改TFTP服务配置文件
sed -i '/diszble/s/yes/no/' /etc/xinetd.d/tftp
#挂载镜像,将初始化镜像文件和内核文件复制到TFTP目录下
mount /dev/cdrom/ /mnt
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
#准备PXE引导镜像文件pxelinux.0
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
#配置启动菜单文件
mkdir /var/lib/tftpboot/pxelinux.cfg
touch /var/lib/tftpboot/pxelinux.cfg/default
#手工配置defaule菜单
echo "
default auto
prompt 0
label auto
	kernel vmlinuz
	append initrd=initrd.img method=ftp://$ip/centos7 ks=ftp://$ip/ks.cfg

label linux text
	kernel vmlinuz
	append text initrd=initrd.img method=ftp://$ip/centos7 ks=ftp://$ip/ks.cfg

label linux rescue
	kernel vmlinuz
	append rescue initrd=initrd.img method=ftp://$ip/centos7 ks=ftp://$ip/ks.cfg" >> /var/lib/tftpboot/pxelinux.cfg/default
#安装FTP服务
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7
#安装Kickstart无人值守
yum -y install system-config-kickstart
#启动服务
systemctl start dhcpd tftp xinetd vsftpd
else
echo "网络出现问题,无法下一步"
fi
}
case $i in
1)
	dhcp
;;
2)
	dns
;;
3)
	disk
;;
4)
	lvm
;;
5)
	raid
;;
6)
	pxe
;;
esac

### 回答1: etcd集群的一键部署可以使用shell脚本来实现。具体步骤如下: 1. 准备好etcd二进制文件和配置文件,可以从官网下载或自行编译。 2. 编写一个shell脚本,包含以下步骤: a. 创建etcd集群所需的目录和文件,如数据目录、日志文件等。 b. 将etcd二进制文件和配置文件复制到相应的目录中。 c. 修改配置文件中的参数,如节点名称、监听地址、集群地址等。 d. 启动etcd节点,可以使用systemd或nohup等方式。 3. 执行shell脚本,即可完成etcd集群的一键部署。 需要注意的是,etcd集群的部署需要考虑节点之间的通信和同步,以及数据的备份和恢复等问题。在实际部署过程中,需要根据实际情况进行调整和优化。 ### 回答2: ### 回答3: etcd是一个分布式的键值存储系统,可用于多种不同的用途,例如在容器编排系统Kubernetes中用作集群状态存储,以及在Docker Swarm等系统中用作服务发现。在etcd中,数据以键值对的形式存储,可以在多个节点上进行备份和复制。 要在多个节点上部署etcd集群,最好的方式可能是使用shell脚本。以下是一些步骤,可以帮助您实现etcd集群的快速部署: 1. 首先,在每个节点上安装etcd二进制文件和依赖项。您可以使用以下命令进行安装(适用于CentOS7): ``` yum install etcd -y ``` 2. 接下来,您需要设置etcd的配置文件。您可以在每个节点上创建一个名为etcd.conf的文件,其中应至少包含以下内容: ``` name = "etcd-1" # 节点名称 initial-advertise-peer-urls = "http://<node1_IP:2380>" # 节点1与其他节点通信的IP和端口 listen-peer-urls = "http://<node1_IP:2380>,http://<node2_IP:2380>,http://<node3_IP:2380>" # 节点1与其他节点通信的IP和端口 advertise-client-urls = "http://<node1_IP:2379>" # 用于客户端访问的IP和端口 listen-client-urls = "http://<node1_IP:2379>,http://<node2_IP:2379>,http://<node3_IP:2379>" # 客户端要监听哪个IP和端口 initial-cluster-token = "etcd-cluster-token" # 集群token,所有节点必须相同 initial-cluster = "etcd-1=http://<node1_IP>:2380,etcd-2=http://<node2_IP>:2380,etcd-3=http://<node3_IP>:2380" # 初始集群中的节点 initial-cluster-state = "new" # 新建集群 ``` 您需要根据您的实际设置更改IP地址和端口。 3. 现在,您可以使用以下命令来启动etcd: ``` etcd --config-file=/etc/etcd.conf ``` 或者,您可以使用shell脚本,像这样: ``` #!/bin/bash systemctl start etcd ``` 将此脚本保存为etcd.sh,然后在每个节点上运行它。 4. 最后,验证您的etcd集群是否正常工作。您可以使用以下命令: ``` etcdctl -C http://<any_node_ip>:2379 member list ``` 这将返回所有节点的信息,以及它们的状态。 以上就是一个简单的etcd集群shell一键部署过程,您可以根据实际情况进行修改。希望这对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值