11、ssh自动化脚本编写
11.1、如何一键自动化安装50台规模集群网站搭建:
1、自动化思路:
kickstart无人值守安装linux系统(自动创建用户、密码、优化);
分发机上创建秘钥对、批量发走公钥(expect);
写部署及优化脚本、批量发到各个服务器上,远程执行安装;
2、高级架构师:
cobbler无人值守安装linux系统(自动创建用户、密码、优化,saltstack客户端)
服务端satl上创建认证,写配置来批量安装管理各个节点服务器应用
kvm虚拟化、根据不同的业务提前做好镜像,linux基础优化,saltstack客户端
通过云计算工具openstack管理镜像,批量生成虚拟机
3、自动化运维:
需求分析 cdn;
机房设备上下架;
虚拟机:弹性、扩展性、充分利用资源;
系统初始化;
应用环境初始化;
应用的部署 调试 配置;
代码发布;
服务监控 应用 (系统cpu、硬盘、内存);
数据备份;
4、自动化发展的阶段:
环境的统一;
标准化:比如软件/usr/local/xxx/opt;
文档化;
工具化;
web化;
平台化;
11.2、ssh key + expect:
1、前期准备:
各个服务器的ssh配置文件已经优化,禁用root用户ssh登录,更改服务器监听的端口号和监听的端口;
[root@m01 ~]# useradd lc(所有的服务器都要建立相同的用户,lc)
[root@m01 ~]# echo '123456' | passwd --stdin lc(所有的服务器lc用户都要建立相同的密码)
[root@m01 ~]# echo ‘lc ALL=(ALL) NOPASSWD:ALL(所有的服务器都lc用户都要sudo权限)
[lc@m01 .ssh]$ ssh-keygen -t dsa -P ' ' -f ~/.ssh/id_dsa >/dev/null 2>&1
[root@m01 ~]# yum install expect -y
[lc@m01 ~]$ mkdir -p /server/scripts
2、创建秘钥对、批量发送公钥(expect),批量发到各个服务器上,远程执行安装服务(一次):
(1)[root@m01 ~]$ vim /server/scripts/fenfa_sshkey.exp
#!/usr/bin/expect
if { $argc != 2 } {
send_user "usage: expect fenfa_sshkey.exp file host dir\n"
exit 1
}
set file [ lindex $argv 0 ]
set host [ lindex $argv 1 ]
#set dir [ lindex $argv 2 ]
set password "123456"
spawn ssh-copy-id -i $file "-p 52113 lc@$host"
expect {
"yes/no" {send "yes\n";exp_continue}
"*password" {send "$password\n"}
}
expect eof
exit -onexit {
send_user "success!\n"
}
#expect fenfa_sshkey.exp ~/.ssh/id_das.pub 172.168.1.31
(2)[root@m01 ~]$ vim /server/scripts/fenfa_sshkey.sh
#!/bin/sh
. /etc/init.d/functions
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#1 create dsa key
ssh-keygen -t dsa -P ' ' -f ~/.ssh/id_dsa >/dev/null 2>&1
if [ $? -eq 0 ];then
action "create dsa 172.16.1.61" /bin/true
else
action "create dsa 172.16.1.61" /bin/false
exit 1
fi
#2 sed id_dsa.pub
for n in 8 31 41;do
expect fenfa_sshkey.exp ~/.ssh/id_dsa.pub 172.16.1.$n >/dev/null 2>&1
if [ $? -eq 0 ];then
action "sed id_dsa.pub 172.16.1.$n" /bin/true
else
action "sed id_dsa.pub 172.16.1.$n" /bin/false
fi
done
#3 install service
for n in 8 31 41;do
ssh -t -p 52113 lc@172.16.1.$n sudo yum install httpd -y >/dev/null 2>&1
if [ $? -eq 0 ];then
action "install httpd 172.16.1.$n" /bin/true
else
action "install httpd 172.16.1.$n" /bin/false
fi
done
[lc@m01 ~]$ sh /server/scripts/fenfa_sshkey.sh
最新文章
- Java程序员
- Code First :使用Entity. Framework编程(3) ----转发 收藏
- 3)Java容器
- 利用python scrapy 框架抓取豆瓣小组数据
- myeclipse 闪退解决方法
- Android带参数链接请求服务器
- iOS开发 改变UINavigationController的UINavigationBar的高度和背景图片
- 自己编写jQuery动态引入js文件插件 (jquery.import.dynamic.script)
- [AOP系列]Autofac+Castle实现AOP事务
- ajax访问controller,无法通过return $this->;goHome()跳转
- js 逻辑运算符优化
- 如何在ASP.NET Core程序启动时运行异步任务(2)
- AppUtils【获取手机的信息和应用版本号、安装apk】
- android颜色color.xml设置
- 增加 jQueryValidate的手机号验证功能
- sticky
- 商品分类选择 Jquery插件
- [smf]smf论坛也很漂亮
- 第五节,K-近邻算法(KNN)
- DP爬台阶问题
热门文章
- [Java] 数据分析--统计
- [笔记] c和指针
- 联想ThinkServer服务器安装CentOS7 Redhat7系统 驱动R110i RAID卡
- centos下如何查看命令由哪个包提供
- ltp
- ActiveMQ FileServer漏洞(详细)
- Linux_计划任务
- MyBatis 高级查询之多对多查询(十一)
- linux Generating /run/initramfs/rdsosreport.txt 问题
- Centos7 LVM管理的逻辑卷根目录扩容和/var目录扩容