什么样的运维神通,才配得上IT在银行业的江湖地位?

声明:

本文是笔者在阅读了《银行新系统架构》、《Ansible自动化运维技术与最佳实践》以及红帽多篇技术文档后,加上自己实践后书写完成,本文只代表笔者的个人观点。

IT在银行业的江湖地位

谈到IT在各个行业中的地位,除了IT行业本身之外,金融行业中IT的重要性应该是最高的了,属于银行业的“老炮”了。

什么样的运维神通,才配得上IT在银行业的江湖地位?

长久以来,IT架构服务于银行的业务架构,并为其发展提供了有利的支撑。

话说,在“很久”以前的20世纪:

  • 60年代,台式机的出现使银行的核心账户处理可以实现计算机处理;

  • 80年代,C/S架构的出现推动了银行ATM/POS的快速发展;

  • 90年代,电子商务和新支付手段的出现,拓展了银行业的业务范围;

  • 当下,第三平台(云计算、大数据、移动平台、社交媒体)促进银行业的业务创新。

在当下时代,也就是信息化银行的建设中,IT的地位已经大为提升,开始引领业务发展的趋势。

银行业务与银行中IT的关系,可以从战略和架构两个方面看。

一、从战略层面看(两大战略)

在银行业,无论IT地位如何高,它都是服务于业务的。也就是IT战略必须满足业务战略 当IT战略与业务战略相匹配时,它就会成为后者发展的助推器,否则会成为业务发展的鸡肋,就犹如生产力和生产关系两者的关系。

银行业的业务战略有很多种:客户战略、渠道战略、营销战略、融资战略、品牌战略等。

IT战略对业务战略支撑的四种类型:

1)支持型:IT提供基本的工具支持业务的发展

2)运营型:IT支撑业务的基本运作

3)变革型:IT推动业务的转型变革

4)战略型:IT全面引领业务的战略发展。

二、从架构层面看(两大架构、三小架构):

业务战略对应业务架构;IT战略对应IT架构。

业务架构:在逻辑层面阐述了理想的业务视图。例如我们看一张城商行的业务架构图(需要注意的是,业务架构不是银行的应用架构,应用架构只是IT架构的一个分支):

而IT架构有细分三个子架构:应用架构(银行中高层管理者和业务人员关注)、数据架构(数据主管部门关注)、技术架构(技术设施运维人管关注)。

IT架构的三小架构作用:

1应用架构:回答业务功能在哪实现的问题;

2数据架构:回答数据在哪产生在哪使用的问题;

3技术架构:回答计算和存储资源如何安全、灵活、高效部署和运维的问题;

事实上,IT厂商的产品技术人员(尤其是基础架构),在工作上所有对银行的所有认知,通常不会超过IT架构的范畴。所以IT厂商技术人员,很难说精通银行的业务架构,能一定程度了解银行的应用架构,已经很不容易了。

我们看一张银行业应用架构的图:

银行数据架构图:

网上银行技术架构图

银行业IT推广自动化运维的必然性

在银行业,“随着IT的江湖地位越来越高,IT运维显得越来与越重要,所以需要IT自动化运维”,这还是从IT的角度看IT。

这次,我们档次高一些,“浓眉大眼”些。从业务的角度看,随着金融机构全面放开*款贷**利率管制,依赖传统存利差保护的银行盈利模式面临绝大的挑战,银行之间的同行业竞争加剧,银行为了提升业务的竞争力,必然要求IT层面更为高效、弹性,风险更低。而从这个层面看,自动化运维有助于提升银行IT的质量,从而促进银行也能能力的提升。对于银行业来说,通过自动化运维,降低IT系统的风险,提升IT系统的质量,将IT运维人员从琐碎、重复的事务中解放出来。在此基础之上,大力发展新型业务,如流程银行、渠道协同、互联网金融等,这才是银行业需要做的事。

什么样的绝世神通?

谈到自动化运维工具,混运维圈的通常能来个贯口,说上十个八个的。而在众多工具中,Ansible、Puppet、SaltStack、Chef应该是知名度最高的四个。

而经过笔者的经验,目前银行业或者说金融业,受关注度最高的应该是Ansible、SaltStack和Puppet三个。这其中,Ansible算是后起之秀,但大有后来居上的态势。

接下来我们看看三者的对比(这张图源自google搜索):

从上图看,整体而言,Ansible不需要客户端(agent)这点上,很符合很多大行的监管要求的。在支持的操作系统平台上,Ansible与Puppet、SaltStack基本打个平手,但不要一点,由于ansible不需要客户端,并且可以通过openssh认证,就决定了它不仅忽略可以管理各种OS(作为自动化工具的基本功,就像售前必须会讲PPT),它还能支持很多其他类型的平台和设备。

Ansible几乎支持数据中心的一切自动化,包括系统本身各种自动化工作,同时它还支持:

  • 系统层面:从Linux(物理机、虚拟机、云环境), Unix,到Windows。

  • 虚拟化平台:VMware、Docker、Cloudstack、LXC、Openstack等。

  • 商业化硬件:F5、ASA、Citrix、Eos以及各种服务器设备的管理。

  • 系统应用层:Apache、Zabbix、Rabbitmq、SVN、GIT等.

  • 红帽解决方案:支持几乎所有红帽解决方案的一键部署和配置:Openshift、Ceph、Gluster等。

  • 云平台:支持的云平台有AWS、Azure、Cloudflare、Red Hat CloudForms、Google、Linode、Digital Ocean等

在上图中,关于是否支持web ui这一项,ansible写明是需要商业版本。其实这指的是Ansible Tower。因为Ansible是免费使用的,Ansible Tower是付费产品。

关于Ansible Tower收费这个问题,很多朋友问过我怎么破,我的观点是,根本无需破。因为在我所关注的金融行业,尤其是银行业,自动化工具是否收费的优先级排名,远远低于这个工具的安全性和可控性。

我们想象一个场景,IT管理员要删除/var/log下的所有文件,正常的操作是这样的:

如果是这样呢?

如果使用了自动化运维工具,在1000个Linux上进行了这样的操作呢?

当然,首先这种错误很低级,犯这种错误概率很低。但一个运维工程师职业生涯中犯过一次类似这样的错误,他的职业生涯和被犯错误的IT系统所承载业务系统的公司,很可能就Over了。

所以,Ansible Tower除了提供ansible的 UI,它更是(如果我们把ansible理解成esxi,那可以将ansible tower理解成vCenter):

一个简约的按角色/权限/控制的的集中自动化平台,与操作/日志/审计/版本控制结合的一个数据中心自动化管控平台。AnsibleTower本质上是Ansible的统一管理界面,类似虚拟化中的管理平台。它可以和AD,LDAP等认证方式做对接、通过统一图形化界面直观地看到被管系统的状态。

所以说,Ansible Tower是能够匹配IT在银行业江湖地位的自动化运维工具。因为他安全可控,他靠谱。

不看广告看疗效--两个例子:

接下来我们看看Ansible本身的易用性。我们,举两个例子:

第一个例子:

实现目的:批量给大量Linux操作系统修改密码,修改密码的用户名和密码参数化,并且在执行过程中输入:

ok,接下来看干货。首先写个简单的playbook:

然后,本地执行,确认有效:

接下来,通过ansible tower依赖此playbook先创建项目,再创建模板:

创建项目:

创建模板:

然后,在模板最下方,注明prompt变量:

这样,当我们运行模板时,会提示输入变量,也就是需要修改多台Linux主机的那些用户,并且将密码修改成什么(不用担心密码明文,后台都是以MD5方式传输和注入密码的)

执行成功:

第二个例子:

目的:为500个Linux操作系统进行基线检查,检查结果生成excel表格,统一展示。

首先,我们先看一个Linux系统执行效果:

/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 167772159 82836480 8e Linux LVM
-------------------------
/dev/mapper/rhel-root 50G 8.7G 42G 18% /
/dev/sda1 1014M 173M 842M 18% /boot
/dev/mapper/rhel-home 26G 37M 26G 1% /home
-------------------------
192.168.137.42 kdump_is_enabled True
192.168.137.42 selinux_is_disabled True
192.168.137.42 runlevel_is_3 False
192.168.137.42 bonding_conf N/A
192.168.137.42 ntp_conf True
192.168.137.42 logrotate_conf False
192.168.137.42 audit_conf False
192.168.137.42 filesystem False
192.168.137.42 ulimit_conf False
192.168.137.42 crontab_disable_mail True
192.168.137.42 password_aging False
192.168.137.42 password_complexity False
192.168.137.42 password_multiplexing False
192.168.137.42 password_locking True
192.168.137.42 no_uid0_except_root False
192.168.137.42 no_emptypassword True
192.168.137.42 systemaccount_disabled False
192.168.137.42 unused_service_disabled False
192.168.137.42 shell_history_time_format False
192.168.137.42 shell_prompt_command False
192.168.137.42 shell_history_ignoredups False
192.168.137.42 shell_histsize False
192.168.137.42 shell_timeout_set False
192.168.137.42 file_umask_set False
192.168.137.42 disable_usb_storage True
192.168.137.42 ctrl_alt_del_disabled True
192.168.137.42 grub_password_protect False
192.168.137.42 Xwin_disabled False
192.168.137.42 sshd_port_22 True
192.168.137.42 sshd_proto_v2 True
192.168.137.42 sshd_disable_root_login False
192.168.137.42 sshd_loglevel_info True
192.168.137.42 sshd_MaxAuthTries_set False
192.168.137.42 sshd_disable_EmptyPassword True
192.168.137.42 sshd_banner_set False
192.168.137.42 vsftpd_conf False
192.168.137.42 issue_file_updated False
192.168.137.42 file_permissions_conf False
192.168.137.42 dangerous_file_removed True
192.168.137.42 command_su_conf False

那么,基线设置如何实现的呢?

首先,我们先为不同版本RHEL设置不同的基线项:

进入到rhel7目录中,查看一个基线检查项(检查密码复杂度)的描述:

这个检查项的设置是:密码长度至少是8位(minlen=8);密码必须至少包含一个大写字母(ucredit)、一个小写字母(lcredit)、一个数字(dcredit)、一个标点符号(ocredit)。

而基线检查的playbook,正是将几十个基线检查项的参数设置汇总,对指定多的linux主机进行查看,并生成excel表格的。

什么样的运维神通,才配得上IT在银行业的江湖地位?

什么样的运维神通,才配得上IT在银行业的江湖地位?

可能有人会问,这个工作量大不大?实话实说,不小。但是,我们已经在金融行业,尤其是银行业,通过项目,积累了大量的经验和playbook,可以为我们的客户使用。