且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-08-18 20:41:53

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