2.6 生产环境下的Shell和Python脚本分类
生产环境下的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 文件示例,命令如下:
cat /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