今天这篇文章主要将eip的设置,在开始前先讲下基本的概念,aws 对Ip管理分为 public_ip和eip两种,后者也叫弹性ip, 一般创建完一个实例后,会带一个public_ip地址,默认没有分配eip,那到底这两个ip有什么区别呢,这个概念如果不清楚,后续上了业务你是要吃大亏的,既然这么重要,那咱们就不能绕过它们了,接下来咱们就细说下它们之间的区别:它们之间最大的区别就是eip分配到某实例后,实例不管如何操作,重启,关机等,eip都不会变化,如果是public_ip,如果实例在关机重启后,ip就会不见了,会新分配一个ip给实例,这个地方就是比较坑爹的地方,如果你不懂它们的区别,上了业务,[……]
aws 用boto脚本创建新instance
其实做为AWS管理员每天开操作平台其实风险还是比较高的,因为很多选项是支持多选的,有时候你可能不知道多选择了一个实例,在操作的时候很容易出现人为事故,比如终止一个实例,不小心终止了其它实例,是件非常恶心的事,所以当平台熟悉后就要多用下脚本操作平台,很多时候你根本不用登录平台就可以完成很多操作,今天因为开很多实例,抽空研究了怎么用boto实现创建一个实例的方法,如果你熟悉了平台操作,基本上脚本也很容易写了,写脚本不难,难在于你对create instance的理解,建立一个实例都需要制定什么条件,我们一起来看看:
1、需要一个镜像文件
2、需要指定访问的key或创建一个key[……]
aws s3 做静态网站站点
最近看s3内容,发现很好玩,s3竟然支持静态网站内容的设置,也就意味着,如果你的网站全部是静态页面,就可以全部放到s3上了(存储超级便宜),不用部署任何apache、nginx程序了,而且还非常合适,那今天我们就看看如何设置S3做website的吧,首先,我们创建一个bucket的,然后上传我们的网站内容,最后进行访问,因为s3是建立bucket是不区分region的,所以创建的名称不能与其他人的相同,在创建的时候要检查是否已经有同名的bucket了,如果存在就打日志,如果没有就可以创建了,以下是这部分代码实现:
[crayon-68740902b635e97528054[……]
aws boto获取安全组内容
大家都知道aws是用安全组来控制每台 instance的访问权限的,如果设置了安全组,操作系统就不建议再设置了iptables或windows防火墙了,因为如果你一旦设置错误,把自己关闭在防火墙外面,那就比较麻烦了,因为亚马逊没有提供类似远程控制卡终端登录的管理功能,你得通过重新挂盘来解决,不过今天咱们重点不是它,如果有兴趣,下次我单独写一篇文章来说明具体如何操作,返回来再说我们的安全组问题,因为安全组设置多了,其实检查起来很费事费眼,因为在web页面上看,真是不容易的事,有时候刚看一眼回头看另一个安全组策略时,就不太记得刚才看的具体是什么策略了,反正安全组设置太多了,就会出现这种情况,另外呢[……]
aws用boto实现获取全部实例信息并发邮件
我们公司在亚马逊上分项目和事业部建立的不同的账号,基本每个事业部或业务线要使用云资源了,就来建立一个账号,管理起来会稍微麻烦些,有时候信息会与事业部运维同事信息不同步,比如你新开了几个实例,过了一段时间其实他不用了,他可能忘记给你说了,这就造成了白白浪费钱,所以呢,亚马逊实例的信息情况及时跟业务运维同步非常重要,能避免一些问题发生,同时呢,也方便业务对自己的资源进行及时管理和调整,这篇文章就是解决这个问题的,但就单单解决这个问题来说,方法有太多了,当时也想过其方法,不过感觉都很low(可能我这个方法更low,呵呵),所以就搞点有技术含量的,所以就写了个脚本定期发邮件给业务运维,脚本思路是:先获[……]
aws 实例由key认证修改为密码登录
在亚马逊平台上建立好实例后,会生成key文件,然后可以通过key登录细新建的系统,key可以重用,不必每次都建立,但第一次登录新实例,一定需要下载key,这是官方推荐的登录方式,这种方式呢,有一个弊端(当时我个人认为,实则是亚马逊真正提高了安全性),就是创建的登录用户key是一个普通用户,是ec2-user这个用户,所以要在系统里修改底层的文件,就一定要用到sudo,对我这种用root习惯的人来讲,多少有那么一定不顺手,所以我登录一般都是直接用的root用户,操作方式也很简单,以下我假设你已经用key登录到了系统,开始下面的操作:
[crayon-68740902b6a6d5160[……]
aws实例添加新磁盘
自动用上了亚马逊,发现运维真的成了一种乐趣, 分分钟 提供你所需求的所有基础资源,让你可以轻轻松松部署你所需要的运维环境,我只能说,简直TMD的方便了,所以我要说,云普及是早晚的事,逐步会淘汰老旧的运维资源管理方式,好了废话不多说了, 有时间我单独写篇问章吹吹,呵呵, 不过我事先声明,我真不是给亚马逊做广告,我本人也不在亚马逊就职,纯属是自己使用的感受,好了,言归正传,开始咱们亚马逊实例添加磁盘的方法讲解,开始前我先模拟一个场景:
你在公司负责基础运维资源管理,有一天突然一个业务同事一头汗的跑过来,跟你讲:现在我们机器磁盘利用率99%了,#@¥&*(*&%¥#@“,你问监[……]
自动从搜狐镜像ftp服务器上下载apache文件
这几天搭建apache环境,网上搜索找到了mirrors.sohu.com这个站点,内容比较全,也正好练习python 就简答写了个一个ftp下载工具,比较简单,不过满足日常需求是没有任何问题,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#!/usr/bin/env python #This is for python 2.7 import ftplib FTPSERVER = 'mirrors.sohu.com' def downfile_conn_ftp(path, username, email): ftp = ftplib.FTP(path, username, email) files = ftp.dir() print files #download file ftp.cwd('/apache') list = ftp.nlst() #for name in enumerate(list,1): # print name #f = open('/tmp/httpd-2.4.12.tar.bz2', 'wb') #ftp.retrbinary("RETR " + "httpd-2.4.12.tar.bz2", f.write) outfile = open('/tmp/README.html', 'w') ftp.retrlines("RETR " + "README.html", lambda s, w=outfile.write: w(s+"\n") ) ftp.quit() if __name__ == '__main__': downfile_conn_ftp(path=FTPSERVER, username='anonymous', email='test@163.com') |
我稍微解释下代码意思,注释的行不用看,是我测试用的一些代码,ftplib支持2中方式下载,一种是二进制下载,一种ascii文件下载,ftp.retrbinary,方式是二进制下载,ftp.retrlines是ascii下载,我代码用的是ascii文件下载,注释的行可用于二进制文件下载,不用修改,去掉注释即可,这两个函数都需[……]
fabric api应用实例讲解
什么是fabric?如果你还不知道请自己找度娘解释,如果不理解,我想也不必理解了,估计也是不是干运维这行的,这篇文章主要针对搞运维开发的兄弟快速学习用的,大家都知道,干运维经常有需要自动批量处理的命令脚本,机器一旦上百,基本要自动化了,不可能一台一台维护了,我入道的时候,就管理4台机器,那时候根本不用什么自动化,有问题,我连接4个session,就搞定了,像fabric这个高级玩意儿,根本用不到,我写这篇文章前也上网搜了下相关文章,写的基本大同小异,代码也都一样,有的写的的确不错,看了几篇,但都缺少对fabric整体功能的介绍,还有都是写的password登录,我还是说一句,在实际工作中可能让[……]
利用python第三方模块paramiko 远程查看主机内存
不得不说paramiko真的很强大,不过官方文档貌似没有中文,反正我是百度了半天没看到,基本全是英文介绍,比较痛苦的是所有文档竟然没有实际例子,今天基本看完了,核心的几个class也学习了,今天试试手写了个查看远程机器内存的脚步,网上大部分都是用用户和密码登录的,实际上做运维的人都知道,实际工作中基本不可太能让你把明文密码写到脚本里,如果有,我只能说你太low了,所以呢,机器的信任是必须的,这个脚本就是基于信任关系的,指定了key,以下是全部脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#!/usr/bin/env python #This program is show remote host meminfo #python version 2.7.9 import argparse import paramiko COMMAND = 'free -m' def show_remote_meminfo(hostnmae, port, user, keyfilename): sh = paramiko.SSHClient() sh.load_system_host_keys() pkey = keyfilename key=paramiko.RSAKey.from_private_key_file(pkey) sh.connect(hostname, port, user, pkey=key, timeout=10) stdin, stdout,stderr = sh.exec_command(COMMAND) result=stdout.read(),stderr.read() if result: for line in result: print line sh.close() if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--host', action="store", dest="host", default='x.x.x.x') parser.add_argument('--port', action="store", dest="port", default=22, type=int) parser.add_argument('--user', action="store", dest="user", default="root") parser.add_argument('--keyfile', action="store", dest="keyfile", default="/root/.ssh/id_rsa") args = parser.parse_args() hostname, port, user, keyfilename = args.host, args.port, args.user, args.keyfile show_remote_cpuinfo(hostname, port, user, keyfilename) |
以上就是全部代码了,不过这还没有完,如果 你用以上代码运行,多半会出现以下警[……]