阿里云代理商-阿里云服务器-阿里云数据库-重庆典名科技

使用定义文件、自文档化的系统和流程

发布时间: 2020-08-25 11:25:39文章作者: 网站编辑阅读量: 239
  使用定义文件    基础设施即代码的基础实践是使用定义文件(definitionfile)。定义指定了基础设施元素以及应该如何配置它们。定义文件作为输入,供置备或配置这些元素实例的工具使用。例1-1就是一份数据库服务器节点的定义文件。
  
  例1-1 使用DSL的定义文件样例
  
  server: dbnode
  
  base_image: centos72
  
  chef_role: dbnode
  
  network_segment: prod_db
  
  allowed_inbound:
  
  from_segment: prod_app
  
  port: 1521  allowed_inbound:
  
  from_segment: admin
  
  port: 22
  
  基础设施元素可以是一台服务器、服务器的一部分(比如用户账号)、网络配置(比如负载均衡规则),等等。不同的工具对此有不同的术语,例如playbook(Ansible)、recipe(Chef)或者manifest(Puppet)。本书使用“配置定义文件”作为这些术语的统称。
  
  定义文件以文本文件的形式进行管理。它们可能会使用标准的格式,如JSON、YAML或者XML,也可能会定义自己的领域特定语言(domain-specific language,DSL)。
  
  将规格和配置放在文本文件中,比将它们存储在工具的内部数据库中有更好的可访问性。这些文件也可以被当成软件源代码,适用于很多成熟的开发工具。
  
  自文档化的系统和流程
  
  IT团队通常要尽全力保持文档的相关性、实用性和准确性。有人可能为一个新的流程起草了一份详尽的文档,但是随着流程的执行方式发生变更和改进,这样的文档很难保持更新。此外,文档也经常存在不足。不同的人会走不同的捷径,也会做出不同的改进。有些人会实现自己的脚本来让部分流程变得更容易一些。
  
  因此,即使文档通常被视为增强一致性和标准化甚至遵守法规的方式,这在实践中却只是对事实的虚幻构想。
  
  有了基础设施即代码,执行流程的步骤会保存在脚本、定义文件以及实现这个过程的工具中。人们只需要添加极少量的文档,就可以开始工作了。已经存在的文档应当离源代码很近,保证这些文档在人们做出变更时触手可及、触目可见。
  
  自动生成文档
  
  在某个项目中,我的同事Tom Duckering发现负责部署软件到产品环境的团队坚持采用手动方式。虽然Tom用ApacheAnt实现了自动化部署,但是产品团队仍然希望有一份手写的文档来指导人工操作。
  
  因此,Tom写了一个自定义的Ant task,可以打印出自动化部署的每个步骤。这样能生成一份包含具体步骤的文档,细致到要敲入的命令行。他所在团队的持续集成工具为每一次构建都生成了文档,这样可以保证文档的准确性和时效性。对部署脚本的任何修改都会自动包含在文档中,没有任何额外的成本。
联系客服免费领取更多阿里云产品新购、续费升级折扣,叠加官网活动折上折更优惠