天天看点

Linux集群和自动化维2.6 生产环境下的Shell和Python脚本分类

<b>2.6 生产环境下的shell和python脚本分类</b>

生产环境下的shell和python脚本的作用还是挺多的,这里根据2.1节所介绍的日常工作中shell脚本的作用,将生产环境下的shell脚本分为备份类、监控类、统计类、运维开发类和自动化运维类。前面3类从字面意义上看比较容易理解,后面的两类需要稍微解释一下,运维开发类脚本是利用shell或python实现一些非系统类的管理工作,比如svn的发布程序等;而自动化运维类脚本则是利用shell或python来自动替我们做一些烦琐的工作,比如自动生成并分配密码给开发组的用户,或者自动安装lnmp环境等。下面会就这些分类列举一些具体的实例,以便于大家理解。另外值得说明的一点是,这些实例都源自于笔者的线上环境,大家拿过来稍微改动一下ip或备份一下目录基本上就可以直接使用了。

另外,因为现在的线上业务大多采用的是aws ec2机器,基本上采用的都是amazon linux系统,所以这里先跟大家简单介绍下amazon linux系统。

amazon linux系统由amazon web services (aws)提供,旨在为amazon ec2 上运行的应用程序提供稳定、安全、高性能的执行环境。此外,它还包括能够与aws轻松集成的软件包,比如启动配置工具和许多常见的aws库及工具等。aws为运行amazon linux系统的所有实例提供持续的安全性和维护更新。

(1)启动并连接到amazon

linux实例

要启动amazon linux实例,请使用 amazon linux ami(映像)。aws向amazon ec2 用户提供amazon linux ami,无需额外费用。找到需要的ami后,记下ami id,然后就可以使用ami id 来启动并连接到相应的实例了。

默认情况下,amazon linux不支持远程根ssh。此外,密码验证已禁用,以防止强力 (brute-force)密码攻击。要在 amazon linux 实例上启用 ssh 登录,必须在实例启动时为其提供密钥对,还必须设置用于启动实例的安全组以允许 ssh 访问。默认情况下,唯一可以使用

ssh 进行远程登录的账户是

ec2-user;此账户还拥有 sudo 特权。如果希望启动远程根登录,请注意,其安全性不及依赖密钥对和二级用户。

有关启动和使用 amazon linux 实例的信息,请参阅启动实例。有关连接到amazon linux实例的更多信息,请参阅连接到linux实例。

(2)识别 amazon linux

ami 映像

每个映像都包含唯一的 /etc/image-id,用于识别 ami。此文件包含了有关映像的信息。

下面是/etc/image-id文件示例,命令如下:

cat

/etc/image-id

命令显示结果如下所示:

image_name="amzn-ami-hvm"

image_version="2015.03"

image_arch="x86_64"

image_file="amzn-ami-hvm-2015.03.0.x86_64.ext4.gpt"

image_stamp="366c-fff6"

image_date="20150318153038"

recipe_name="amzn

ami"

recipe_id="1c207c1f-6186-b5c9-4e1b-9400-c2d8-a3b2-3d11fdf8"

其中,image_name、image_version 和 image_arch 项目来自 amazon 用于构建映像的配方。image_stamp 只是映像创建期间随机生成的唯一十六进制值。image_date项目的格式为 yyyymmddhhmmss,是映像创建时的 utc 时间。recipe_name 和 recipe_id是amazon用于构建映像的构建配方的名称和id,用于识别当前运行的 amazon

linux 的版本。从yum存储库安装更新时,此文件不会更改。

amazon linux 包含 /etc/system-release 文件,用于指定当前安装的版本。此文件通过 yum 进行更新,是 system-release rpm 的一部分。

下面是 /etc/system-release 文件示例,命令如下:

/etc/system-release

amazon linux ami

release 2015.03

amazon linux系统这部分内容摘录自http://docs.aws.amazon.com/zh_cn/awsec2/latest/userguide/amazonlinuxamibasics.html#identifyinglinuxami_images