运维趋势 第 0 期 运维自动化
【人物】基于开源服务的运维自动化实现
【国际前沿】什么是 DevOps ?
【运维漫画阁】正则表达式有什么用?
【命令行 & 工具】面向 Linux 系统管理员的开源工具链
【命令行 & 工具】自动化开源工具一览
【实战】 Kickstart 无人值守安装搭建 RHCE 实验室
【实战】戏说 Cobbler : Linux 网络安装的革命
1 【人物】运维专家李洋:漫谈基于开源服务的运维自动化实现
随着各种业务对 IT 的依赖性渐重以及云计算技术的普及,企业平均的 IT 基础架构规模正不断扩张。有些 Web2.0 企业可能会需要在两个星期内增加上千台服务器,因此对运维而言,通过手动来一个一个搭建的方法不仅麻烦、效率低下,而且非常不利于维护和扩展。即使是在传统的企业当中,日常的备份、服务器状态监控和日志,通过手动的方式来进行的效率也很低,是一种人力的浪费。因此,自动化早已是每个运维都必须掌握的看家本领。在不同的企业中,自动化的规模、需求与实现方式都各不相同,因此在技术细节层面,运维之间很难将别的企业的方法整个套用过来。然而在很多情况下,自动化的思路是有共通之处的。因此, 51CTO 系统频道最近邀请了中国移动通信研究院的项目经理李洋先生,就运维自动化实现,尤其是基于开源工具的运维自动化,谈了谈自己的经验和看法。
李洋,博士毕业于中科院计算所。 10 多年来一直从事计算机网络信息安全研发工作,曾主持和参与多项国家重点项目以及信息安全系统和企业信息安全系统的研发工作。具有 Linux 系统应用、管理、安全及内核的研发经验,擅长网络安全技术、协议分析、 Linux 系统安全技术、 Linux 系统及网络管理、 Linux 内核开发等。
51CTO :能否先大致谈谈您的运维经历?李洋:
我的运维经历分 3 个阶段:
(1)靠纯手工、重复地进行软件部署和运维;
(2)通过编写脚本方便地进行软件部署和运维;
(3)借助第三方工具高效、方便地进行软件部署和运维。
这几个阶段是随着我知识、经验、教训不断积累而不断演进的。而且,第 2 个阶段和第 3 个阶段也可以说是齐头并进的。 Linux 下的第三方工具虽说已经不少了,但是 Linux 下的脚本编写对运维工作的促进是绝对不可以忽视的。所以我在实践中一直是两种方式都采用。 51CTO :在 Linux 下有哪些运维工具是让您感觉特别好用、眼睛一亮的?李洋:其实 Linux 下的运维工具不算太多,我觉得比较好用的包括 RedHat 提供的 Kickstart Installations 自动安装解决方案,不过该方案相对比较繁琐;目前有的工程师认为 Cobbler 是让人眼前一亮的好工具,个人感觉也挺不错。另外,其实 Linux 下能够方便地通过编写 shell 脚本、使用 CronTab 等方法来进行运维,个人认为这也是非常不错的选择。 51CTO :有人理解自动化就是运维为了减少重复枯燥的工作而建立的流程方法,而除此之外,自动化还能够带来减少人为错误、及时报警与故障恢复、提高业务可用性等好处。您对运维能意识对于运维的重要程度如何?李洋:运维工作自动化确实包含上述 2 个方面,归纳总结来其实就是:把零碎的工作集中化,把复杂的工作简单有序化,把流程规范化,最大化地解放生产力,也就是解放运维人员。自动化的技能 / 意识对于运维工作至关重要。运维工作不是简单的使用工具,这里面还有很多技巧和意识。具体的技巧 / 意识包括:
( 1 )如何驾驭这些琳琅满目的工具为己所用
( 2 )如何根据不同的应用环境来选用不同的工具
( 3 )如何根据应用来组合使用工具等等等等。
一定要记住一点:工具是来帮助人进行运维的,这中间还需要人的干预和决策,工具不能代替完全的运维工作。 51CTO :自动化针对的范围可以大致分为安装自动化、部署自动化、监控自动化等方面。除此之外,还有哪些方面是您比较关注的?(比如软件发布、更新、备份等)对于这几个方面的技术实现,您一般采用哪些工具?这些工具相比其他同类工具的优势在哪里?李洋:自动化其实还包括软件发布自动化、升级自动化、安全管控自动化、优化自动化等等。我个人比较关注管理和安全方面的技术实现,比如说 HP 和 IBM 出品的一些 ITIL 和 ITSM 产品等我都在使用,比如 HPOpenview , IBMTivoli 等等。这些工具都有 Linux 的版本,与其他同类工具相比的优势应该在于他们的商业应用成熟度,都是老品牌了。 51CTO :针对一个小规模的网站,到百万量级、千万量级的网站,您在考虑工具的选择上会有怎样的不同?李洋:我在选择上对于百万量级、千万量级的网站尤其会考虑选择成熟的工具、性能高的工具、熟悉的工具。而对于小规模的网站,则会考虑选择一些开源的、免费的工具。这个原则就是以应用为导向,百万量级、千万量级的网站牵涉的面广、要求高,不成熟的工具往往很难说服我使用,所以主要是在成熟度方面。 51CTO :很明显,自动化的实现不是单纯学习几个工具就能够做好的,甚至于规划不好的情况,自动化不仅没有节省人力,反而带来了更多的问题。您建议运维人员在考虑自动化流程的过程中应该遵循怎样的原则或思路?李洋:其实前面多多少少也谈到这个问题了。归纳一下,包括如下几点原则:
( 1 )根据应用选择工具
( 2 )对于关键应用,选择成熟度高的工具
( 3 )不能过分依赖一种工具,需要进行对比和分析
( 4 )对工具的特性做到精通
( 5 )是人驾驭工具,人要监督工具,而不是工具来驾驭人
( 6 )别忘了脚本。
51CTO :您推荐运维人员可以通过哪些资源、渠道来学习有关自动化方面的经验知识?据我个人的经验,很多专业网站,比如 51CTO 、网管员世界等都是很不错的媒体,我看有这方面的很多文章,运维人员可以多多涉猎和学习;另外,运维人员还可以根据选择的自动化工具,登陆该工具的网站进行学习,一般这样的网站都会有一些运维的基础知识来辅助运维人员更快地熟悉工具使用。原文链接:
http://os.51cto.com/art/201009/224077.htm
2 正则表达式有什么用?
Perl ( PracticalExtractionandReportLanguage )是一种脚本语言,最初由 LarryWall 于 1987 年 12 月 18 日发表。被称之为 “ 一种拥有各种语言功能的梦幻脚本语言 ” 、 “Unix 中的王牌工具 ” 。
推荐阅读:
善用脚本让你的 Nagios 记录系统监控日志自动分析黑名单及白名单的 iptables 脚本
正则表达式完全学习手册:
菜鸟入门指导
全面分析 Linux 正则表达式(一)
全面分析 Linux 正则表达式(二)
全面分析 Linux 正则表达式(三)
全面分析 Linux 正则表达式(四)
全面分析 Linux 正则表达式(五)
全面分析 Linux 正则表达式(六)
3 【命令行 & 工具】面向 Linux 系统管理员的开源工具链
命令行 & 工具 | 开源工具链
原文: Open Source Toolchains for Linux Systems Administrators 作者: MarkHinkle 译者:哲婷
今天的系统管理有两大明显趋势,它们是 DevOps 和进展稍微迟缓的敏捷运维运动。这些措施流行于许多 Web2.0 和云计算公司,比如 Twitter 、谷歌还有雅虎,当然也不乏像 Facebook 这样其产品高度依赖 IT 技术的公司。但是,实际上这种做法也同样非常适合传统企业中的 IT 管理员们,这些企业往往都有大规模的基础架构和不切实际的工作负荷,需要提高工作效率来达成其业务目标。 DevOps 鼓励与开发者们共同进行产品研发。系统管理员的角色经历了不断的变化,已经从被动执行重复系统建设任务的基础架构维护者演变成现在的系统设计和建设工程师。在过去,系统管理员可能在一批随机的脚本中搜集他们的专业领域知识;但是现在,精明的系统工程师们已经开始编写基础架构,并可以确保对于这些编码的理解和制度化能够遍及整个公司。 DevOps 和 Agile 并不被定义为是一次技术性改变,而是专业和文化上的改变。它们重新定义了 IT 管理员的职能:从系统和 IT 架构维护向管理和定义可复制的、有弹性的和高度可用的 IT 系统转变。这一变化势必会带来一些战术上的改善,用以达成更高的可用性和工作效率。以下做法是
3.1 敏捷系统工程师们最常使用的办法:
1 、基础架构自动化
相比起执行重复任务而言,管理员们需要创建机械化进程,让它们有效的使用工具。这些工具可以用来生成一致的结果并被团队中的其他成员所分享。
2 、服务器版本控制
任何变化并不直接应用到服务器上,而是应用到一个中央软件库内。所有改变从中央软件库推送到服务器上,从而建立一个在出现错误的时候的回滚机制。
3 、频繁的改进和发布 / 更新
旧的思维方式是,尽可能减少对服务器和架构进行改变(无论是次数还是规模)来降低风险。而敏捷的运维思路是,通过频繁的微小变化来改善服务器的性能,而由于每次的变化都很小,当出现问题的时候,他们可以轻易地跟踪那些影响架构的不利变化。为了实现这些目标,系统工程师需要一个更强大的工具包。幸运的是,开源界为了这一目标已经研发了大量的工具。
3.2 开源工具链
软件开发者们对于工具链相当熟悉:一个程序的输出构成了另一个程序的录入,从而组成了一系列程序。比如说,使用 GNUEmacs 编辑器, GNUbin-utils 和 GNU 编译器集( GCC )的组合。软件开发者们编写很多在其它程序中调用的程序与流程,而不是将同一段代码在所有的地方都重复一遍。有了新生的 DevOps 和敏捷运维运动,运维人员们组成了社区,帮助人们用自己所喜爱的工具来定义属于自己的工具链。 DevOps 的工具链项目就是这些社区当中的一员。正如软件开发商有不同的专用工具来串联成一条软件工具链(比如编辑、编译、构建脚本等),系统管理员也可以运用由这些能够实现自动管理功能和维护 Linux 服务器的工具组成的工具链。它们可以分为三大类:预备、配置管理和监控。
1 、预备类工具可以使 Linux 服务器上的软件安装包自动化。它们借助服务器上的软件包系统比如 rpm 或者 apt 来安装软件包,有些甚至会做一些粗略的配置工作。
2 、配置管理和自动化是用来设置参数或者开启一个新服务器上的服务。它们也可以用来把系统还原到遇到错误之前的状态。
3 、监控工具用来收集服务器数据,从而生成可用性、性能和其它系统状态的报告。
整合系统管理工具
开源工具链十分善于维护高服务水平,因为自动化和准确无误的运作比手动解决问题更快、更有效率。如果你想保持五个九的可用服务水平( 99.999% 的正常运行时间),那么你在每一年中只允许有 5 分 15 秒的停机时间。对于一个管理员而言,这样的时间甚至来不及接收错误报告页,更不用说登陆到服务器进行问题诊断了。构建工具链可以从使用服务器自动构建工
可以在系统安装完毕后进行服务的自动更新。开源工具链的另外一个例子是将预备、配置和自动化集成到一起的工具,比如由红帽资助的 Genome 项目。
Genome 是一系列用于维持云架构的工具,可以部署多层次的网络应用,包括 Apache 反向代理层, JBoss 应用服务器层,以及 PostgresSQL 数据库层。上述大部分工具都是主动类的工具,可以用来进行变动并执行任务。然而,它们却缺乏关于当前系统状况的信息,于是监控工具就有了用武之地。对于传统系统管理员而言,监控无非是在发生错误的时候通过一个页面或者一封邮件提醒他们。但是,监控工具(如 Nagios/OpenNMS/ZenossCore )能够提供更为完善的服务器性能检测,可以告诉管理员们所
具开始。服务器自动构建工具可以加速部署速度,并可以在短时间内大规模部署服务器,同时也可以让构建过程更容易复制。在发生严重故障时,还可以重建架构。在早期, Linux 用户可能会整理出一个软件包列表,发至 rpm 进行批量软件安装。后来,我们用 Kickstart 来执行无人值守的 Linux 安装。现在, Cobbler 把这个功能提升到了一个新的高度:它实现了物理机与虚拟机的并行系统构建,并且可以进行 DHCP 和 DNS 的配置。 Cobbler 还集成了其它的工具,比如用于配置管理自动化的 Puppet 等软件。这个工具有运行中的服务的状态。它们中的一些甚至可以提供在其它工具中开启程序的界面,比如 ZenossCore 可以在一个检测状态台上通过Cfengine 、 Chef 或者 Puppet 来重新配置服务。
。
相关阅读:
" 全世界系统管理员日 " 的由来 via Microsoft
Linux 批量安装五大开源软件挨个看 via51CTO
系统频道系统管理员应该定期完成的九件事 via51CTO 系统频道
4 【命令行 & 工具】自动化开源工具一览
4.1 预备类
4.1.1 Kickstart
【描述】针对红帽 Linux/Fedora 等发行版的自动化安装方式,简单的讲就是让系统在安装过程中从一个 ks.cfg 配置文件中自动获取所有需要配置的参数。源于 Anaconda 项目。
【技术支持】红帽 /Fedora 社区
【起始于】 2004 年之前
【维基】http://fedoraproject.org/wiki/Anaconda/Kickstart
4.1.2 Cobbler
【描述】为了实现快速网络安装环境的 Linux 安装服务器,可以为数量众多的 Linux 服务自动化执行任务。
【发起人】 MichaelDeHaan
【技术支持】红帽 /Fedora 社区
【起始于】 2007 年之前
【官方网站】https://fedorahosted.org/cobbler/
4.1.3 OpenQRM
【描述】针对数据中心管理的开源平台,针对设备的部署、监控等多个方面通过可插拔式架构实现自动化的目的,尤其面向云计算/基于虚拟化的业务。
【发起人】Matt Rechenburg
【起始于】2005 年之前
【官方网站】http://www.openqrm.com/
Spacewalk
【描述】针对红帽/Fedora 等发行版的软件更新管理软件,同时也提供预备和监控的功能。这个项目衍
生了红帽 Network Satellite 产品。
【技术支持】红帽
【起始于】2001(Red Hat Network)/2008
【官方网站】http://spacewalk.redhat.com/
4.2 配置管理类
4.2.1 Chef
【描述】一个系统集成框架,可以用 Ruby 等代码完成服务器的管理配置并编写自己的库。
【技术支持】 OpsCode
【起始于】 2009 年 1 月
【官方网站】http://www.opscode.com/chef/
4.2.2 ControlTier
【描述】一个开源、跨平台的构建 / 部署服务器的自动化框架,可以在多个节点、多个应用层上进行服务扩展及管理等工作。
【技术支持】 ControlTier 社区( Google Group)
【起始于】2007 年之前
【官方网站】
http://controltier.org
4.2.3 Func
【描述】全称为 Fedora Unified Network Controller,Fedora 统一网络控制器,用于自动化的远程服务器管理。
【发起人】Michael DeHaan 等
【技术支持】红帽/Fedora 社区
【官方网站】https://fedorahosted.org/func/
4.2.4 Puppet
【描述】一个开源的数据中心自动化/配置管理框架,用于 Puppet 自己的声明语言自动化重现任意的系统配置。
【技术支持】Puppet Labs
【官方网站】http://www.puppetlabs.com/
4.3 监控类
4.3.1 Nagios
【描述】一个强大的监控预警系统,可以监控系统、应用、服务以及各种进程的运行状况,并提供了多种警报机制。
【技术支持】 NagiosEnterprises
【发起人】 EthenGalstad
【起始于】 1999 年
【官方网站】http://www.nagios.org/
4.3.2 OpenNMS
【描述】一个网络管理应用平台,可以自动识别网络服务,事件管理与警报,性能测量等任务。【技术支持】 openNMSgroup
【起始于】 2005 年之前
【官方网站】http://www.opennms.org/
4.3.3 Zabbix
【描述】用于监控网络上的服务器/服务以及其他网络设备状态的网络管理系统,后台基于 C,前台由
PHP 编写,可与多种数据库搭配使用。提供各种实时报警机制。
【技术支持】Zabbix 公司
【发起人】Alexei Vladishev
【起始于】1998 年
【官方网站】http://www.zabbix.com/
4.3.4 ZenossCore
【描述】一个基于 Zope 应用服务器的应用/服务器/网络管理平台,提供了 Web 管理界面,可监控可用性、配置、性能和各种事件。
【技术支持】Zenoss Inc.
【起始于】2002 年
【官方网站】http://zenoss.com/
5 【实战】 Kickstart 无人值守安装搭建 RHCE 实验室
实战 |Kickstart
作者:抚琴煮酒本文记录了用 Kickstart 搭建 RHCE 实验室环境的详细步骤。文中使用的环境为 RHEL5 ,也同样适用于 CentOS 。文章作者抚琴煮酒( AndrewYu )是经验丰富的 Linux/Unix 系统工程师,并曾经担任过一段时间的 RHCE 讲师的工作。
5.1 原理和概念
什么是 PXE
严格来说, PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡( NIC ),即网卡中必须要有 PXE 客户端。 PXE ( Pre-bootExecutionEnvironment ,直译为预启动执行环境)协议使计算机可以通过网络启动。协议分为 client 和 server 端, PXEclient 在网卡的 ROM 中,当计算机引导时, BIOS 把 PXEclient 调入内存执行,由 PXEclient 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP服务器和 TFTP 服务器。 DHCP 服务器用来给 PXEclient (将要安装系统的主机)分配一个 IP 地址,由于是给 PXEclient 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXEclient 的 ROM 中,已经存在了 TFTPClient 。 PXEClient 通过 TFTP 协议到 TFTPServer 上下载所需的文件。
什么是 KickStart
KickStart 是一种无人职守安装方式,其工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件;在其后的安装过程中(不局限于生成 KickStart 安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart 生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果所有的 Kickstart 参数都设置好,安装者完全可以只告诉安装程序从何处取 ks.cfg 文件,然后去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中设置的重启选项来重启系统,并结束安装。
PXE+KickStart 安装的条件
执行 PXE+KickStart 安装需要的设备为:
1.DHCP 服务器
2.TFTP 服务器
3.KickStart 所生成的 ks.cfg 配置文件
4. 一台存放系统安装文件的服务器,如NFS 、 HTTP 或 FTP 服务器
5. 带有一个 PXE 支持网卡的将安装的主机
5.2 安装步骤。
【实战】 Kickstart 无人值守安装搭建 RHCE 实验室
一、安装 httpd
yum -y install httpd*
二、挂载 RHEL5 的 DVD 光盘,并复制第一张光盘下的所有内容(文件
和文件夹)到/var/html/www 下
mount /dev/cdrom /mnt
cp –rf /mnt/* /var/html/www
三、安装 tftp-server,并启用 tftp 服务,重启 xinetd 进程
rpm -ivh tftp-server-0.39-1.i386.rpm
vi /etc/xinetd.d/tftp
# default: off
# description: ...
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no #disable 的值由 yes 变为 no
per_source = 11
cps = 100 2
flags = IPv4
}
service xinetd restart
四、配置支持 PXE 启动
注意我已经把第一张光盘的内容复制到/var/www/html 目录中了,所以所需要的文件我只需要从/var/ftp 目录中复制就行了。
1、进入 tftpboot 文件夹,没有就建一个,有了就不用建了。
cd /tftpboot/
2、把 pxelinux.0 复制到/tftpboot/中
cp /usr/lib/syslinux/pxelinux.0 /tftpboot
3、把 Linux 第一张安装光盘上/image/pxeboot/initrd.img 和vmlinux 复制到/tftpboot/中
cp /var/ftp/image/pxeboot/initrd.img /tftpboot
cp /var/ftp/image/pxeboot/vmlinux /tftpboot
4、 复制第一张安装光盘上的 isolinux/*.msg 到/tftpboot/中
cp /var/ftp/isolinux/*.msg /tftpboot
5、 在 tftpboot 中新建一个 pxelinux.cfg 目录
mkdir pxelinux.cfg
6、 把 Linux 第一张安装光盘上 isolinux 目录中的 isolinux.cfg 复制到pxelinux.cfg 目录中,并同时更改文件名称为 default
cd pxelinux.cfg
cp /var/ftp/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
五、安装 dhcp 服务,同时修改配置
1、 安装
rpm -ivh dhcp-3.0.1-12_EL.i386.rpm
2、 复制配置模板文件到指定的目录中,并重命名
cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample
/etc/dhcpd.conf
3、 修改配置文件,添加一行:filename "/pxelinux.0",其他的修改自己完成就行了。这文件的位置一定要注意,不然会失败,切记
[[email protected] isolinux]# vim /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
next-server 192.168.1.14;#PXE 服务器 IP 地址
filename "/pxelinux.0";#注意此行的位置,写在 subnet 下面的话会失败
subnet 192.168.1.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;
option nis-domain "example.com";
option domain-name "example.com";
option domain-name-servers 192.168.1.254;
option time-offset -18000;
# 其他配置参数
#
}
4、 启动 dhcp 服务
service dhcp start
六、 安装 kickstart 并进行配置
首先安装 Kickstart:
rpm -ivh system-config-kickstart-2.5.16-2.noarch.rpm
在 gnome 环境下配置 kickstart 的指令如下:
system-config-kickstart
之后的配置步骤如下:
1. 基本配置,按自己需求来就好
2. 安装方法,选择 httpd 安装,切记不要输入任何的帐号,我们采
用的匿名安装
3. 引导安装程序选项,不需要做更改
4. 分区信息,创建三个分区
5. 网络配置,我使用的静态分配地址(动态同样如此)
6. 显示配置,按自己需求来就好
7. 软件包的选择,我选择了 Kernel Developent 和 Development
Tools 安装(但千万不要选择这两个软件包,不然的话在安装的时
候会报错的)
8. 其他的都是默认设置,没有做修改
9. 生成文件 ks.cfg,保存到/var/www/html 下
七、修改/tftpboot/pxelinux.cfg/default 文件,指定读取 ks.cfg 的方法
(ks=http://192.168.1.40/ks.cfg)
vi /tftpboot/pxelinux.cfg/default
auth --useshadow --enablemd5
key --skip #这行一定要,跳过注册号输入,不然会失败
bootloader --location=mbr
clearpart –all –initlabel
text
firewall --disabled
firstboot --disable
keyboard us
lang en_US
logging --level=info
url --url=http://192.168.1.14/
network --bootproto=dhcp --device=eth0 --onboot=on
reboot
rootpw --iscrypted $1$HEJKfwF9$r1l0JoPz74ToF9NbE3Qs1
selinux --disabled
timezone --isUtc Asia/Shanghai
intall
xconfig --defaultdesktop=GNOME -depth=8
--resolution=640x480
part swap --bytes-per-inode=4096 --fstype="swap"
--size=512
part /boot --bytes-per-inode=4096 --fstype-"ext3"
--size=200
part / --bytes-per-inode=4096 --fstype="ext3" --grow
--size=1
%packages
#下面指定软件包列表即可
最后,重新引导安装就可以了。
以上是我的配置步骤,如果没有出入的话,是一定可以成功的!
【实战】戏说 Cobbler : Linux 网络安装的革命
从前,我们一直在做装机民工这份很有前 途的职业。自打若干年前 Red Hat 推出了Kickstart,此后我们顿觉身价倍增。不再需要 刻了光盘一台一台地安装 Linux,只要搞定PXE、DHCP、TFTP,还有那满屏眼花缭乱不知所云的 Kickstart 脚本,我们就可以像哈里 波特一样,轻点魔棒,瞬间安装上百台服务器。这一堆花里胡哨的东西可不是一般人都能整明 白的,没有大专以上学历,通不过英语四级,根本别想玩转。总而言之,这是一份多么有前 途,多么有技术含量的工作啊。