当企业追求数字化转型战略以开拓新的收入来源或仅仅保持竞争力时,一个主要驱动因素就是对速度的需求——或者说快速提供真正出色的客户体验的能力。 随着组织采用 DevOps 方法,他们发现当前的网络架构是一个限制因素。 传统的网络架构是静态的,容易受到人为错误的影响,并且需要大量的运营投资来管理。 作为扩展的持续集成/开发 (CI/CD) 管道的一部分,不仅必须自动化支持应用部署的网络基础设施,还必须自动化 DNS 和负载均衡等网络服务。
通过网络自动化,组织可以实现更高的灵活性,从而实现更加动态和可靠的网络、提高运营效率、缩短部署时间并实现更加一致的应用部署。
可编程性是操作自动化的关键推动因素。 多年来,F5 一直秉承这一理念,并支持所有 F5® BIG-IP®应用交付控制器 (ADC) 的可编程性,从而实现应用网络服务结构的灵活性和可扩展性。 BIG-IP ADC 的物理版本和虚拟版本均具有灵活且可编程的管理、控制和数据平面:
全面的网络可编程方法有助于运营根据需要对运营和业务事件或机会做出反应。 F5 的产品组合提供网络可编程性,帮助企业实现自动化和高效协调。
F5 和 Puppet 合作通过全面的解决方案满足现代企业对支持持续集成和持续部署 (CI/CD) 的敏捷性需求。 Puppet 提供商业支持的配置管理工具 Puppet Enterprise,它提供统一的、软件定义的方法来自动管理计算、网络和存储资源,并帮助组织以更无缝的方式交付应用。
Puppet Enterprise 凭借其声明式、基于模型的 IT 自动化方法,使您能够执行从自动执行简单重复任务到部署大规模公共、私有和混合云的功能。 在这些云环境中建模、测试和部署配置更改的能力可确保高效利用您的基础设施资源;借助 Puppet 通过模块的可扩展性,组织可以在现有框架的基础上构建以支持其 BIG-IP 设备。
典型的 Puppet 基础设施在每个管理系统上都安装了软件代理。 这些代理定期向 Puppet 主服务器发送有关系统的多条信息(称为“事实”)。 作为回报,Puppet 主机使用收到的事实以及清单(由 Puppet 代码组成的 Puppet 程序,用于编译定义最终配置的目录),然后将目录发送回代理。 然后,代理可以按照目录定义执行系统状态。
与软件代理直接在节点中运行的服务器情况不同,Puppet 基础设施允许您设置运行 BIG-IP 设备代理的代理。 现在,您可以将 BIG-IP 设备纳入 Puppet 管理,并享受该解决方案带来的好处。 Puppet 代理可以与 Puppet 主机位于不同的服务器上,也可以在同一台服务器上运行。
Puppet 语言文件称为清单,以.pp文件扩展名命名。 Puppet 语言的核心是声明资源。 该语言的其他每个部分都存在,以增加声明资源的方式的灵活性和便利性。 Puppet Master 始终使用当前节点环境设置的主清单,您可以在其中以声明的方式描述资源。
F5 和 Puppet 联合解决方案的数据流如图 1 所示。
此次联合实施的两个关键功能是 iControl API 和 Puppet 网络设备管理。 F5 iControl API 提供 Puppet 代理和 F5 BIG-IP 设备之间的通信,而 Puppet Network Device Management 可帮助组织配置网络设备。 使用 Puppet 网络设备和 F5 iControl API,您可以部署 Puppet F5 模块并将 Puppet 管理引入 BIG-IP 设备。 Puppet F5 模块提供用于管理 BIG-IP 对象的资源,包括部署和管理虚拟服务器,以及配置和管理池和池成员。 Puppet 使用 F5 模块查找为 BIG-IP 设备定义的资源,并自动加载存储在 F5 模块中的任何自定义类或定义类型。
F5 与 Puppet 联合解决方案可帮助您:
Puppet F5 模块可以创建和配置典型应用部署所需的 BIG-IP 对象(包括服务器节点、池、虚拟服务器)。 在部署多个 BIG-IP 设备时,组织可以使用 Puppet 模块自动执行所有初始 BIG-IP 入职任务,例如设备许可、DNS 和 NTP 设置、内部和外部 VLAN、自身 IP 和路由域。
要在 BIG-IP 设备上配置典型的 HTTP应用,您必须设置节点、监视器和配置文件;部署虚拟 IP 地址等等。 这似乎可以在没有单个 BIG-IP 设备上实现自动化的情况下实现,但配置可能跨多个数据中心的多个 F5 设备来交付大型企业应用非常复杂、耗时,并且容易出错。 通过声明性的、基于模型的 Puppet 清单,组织可以管理和自动化跨数据中心的多个 BIG-IP 设备上的应用部署。
要开始部署,请安装 Puppet 主机并创建能够运行 Puppet 代理的代理系统。 此外,您必须将所有依赖项(包括 iControl gem 和 Faraday gem)安装到代理主机(Puppet 代理)上的 Puppet Ruby 环境中。 部署如图 2 所示。
在使用 F5 模块之前,您必须在 Puppet 代理上的 Puppet 配置目录( /etc/puppet或/etc/puppetlabs/puppet )中创建一个device.conf文件:
[bigip1] 类型 f5 网址 https://admin:admin@10.192.74.111
在上面的例子中, 管理员:admin@10.192.74.111 指的是Puppet对F5设备的登录:<USERNAME>:<PASSWORD>@<IP ADDRESS OF BIGIP>。
接下来,在 site.pp、<devicecertname>.pp 节点清单或某些 profiles::<profile_name> 清单文件中的相关类语句或节点声明中输入配置。 以下是用于在 BIG-IP 平台上配置 HTTP应用的示例 Puppet 清单文件 (site.pp):
node bigip1 { f5_node { '/Common/web_server_1': ensure => 'present', address => '10.1.20.11', description => 'Web 服务器节点 1', availability_requirement => 'all', health_monitors => ['/Common/icmp'], }-> f5_node { '/Common/web_server_2': ensure => 'present', address => '10.1.20.12', description => 'Web 服务器节点 2', availability_requirement => 'all', health_monitors => ['/Common/icmp'], }-> f5_node { '/Common/web_server_3': ensure => 'present', address => '10.1.20.13', description => 'Web 服务器节点 3', availability_requirement => 'all', health_monitors => ['/Common/icmp'], }-> f5_pool { '/Common/web_pool': Ensure => 'present', members => [ { name => '/Common/web_server_1', port => '80', }, { name => '/Common/web_server_2', port => '80', }, { name => '/Common/web_server_3', port => '80', }, ], availability_requirement => 'all', health_monitors => ['/Common/http_head_f5'], }-> f5_virtualserver { '/Common/http_vs': Ensure => 'present', provider => 'standard', default_pool => '/Common/web_pool', destination_address => '10.1.10.240', destination_mask => '255.255.255.255', http_profile => '/Common/http', service_port => '80', protocol => 'tcp', source => '0.0.0.0/0', source_address_translation => 'automap' } }
此示例包含三个任务:
在运行puppet device (Puppet Network Device 命令)之前,BIG-IP 设备上没有配置虚拟服务器、池或节点。 运行puppet device -v --user=root命令将使设备代理节点生成证书并将您的分类应用于 F5 设备。
如下所示,所有任务均成功完成,没有失败。
$ sudo puppet device -v --user=root –trace 信息:开始将配置应用于 https://10.192.74.111:443 上的 bigip1 信息: 检索插件信息 信息: 正在检索插件 信息: bigip1 的缓存目录 信息: 应用配置版本“1498175426” 通知:/Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_1]/ensure:已创建 通知:/Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_2]/ensure:已创建 通知:/Stage[main]/Main/Node[bigip1]/F5_node[/Common/web_server_3]/ensure:已创建 通知:/Stage[main]/Main/Node[bigip1]/F5_pool[/Common/web_pool]/ensure:已创建 通知:/Stage[main]/Main/Node[bigip1]/F5_virtualserver[/Common/http_vs]/ensure:已创建 信息: 节点[bigip1]: 取消安排 Node[bigip1] 上的所有事件 注意: 0.50 秒内应用目录
Puppet 现在已经创建了一个新的、完全配置的虚拟服务器(图 3)。 该服务器正在新创建的池中平衡 HTTP应用的负载(图 4)。 该池包括三个新创建的 Web 服务器(图 5)。
所有 Puppet F5 模块都是幂等的,这意味着仅当节点状态与配置或期望状态不匹配时才会执行任务。 换句话说,如果再次运行相同的清单,Puppet 不会重新配置这些对象。
信息:开始将配置应用于 https://10.192.74.111:443 上的 bigip1 信息: 检索插件信息 信息: 正在检索插件 信息: bigip1 的缓存目录 信息: 应用配置版本“1498522983” 注意: 1.51 秒内应用目录
自动化是 DevOps 和 CI/CD 的关键组件,通常从配置管理开始。 F5 和 Puppet 联合解决方案使运营团队能够部署、自动化和管理整个应用基础设施堆栈的配置。 这使应用开发人员能够弹性地扩大和缩小基础设施资源、自动化应用测试并缩短应用开发时间。 因此,组织可以实现前所未有的敏捷性和可扩展性。
如需了解 F5 和 Puppet 联合解决方案如何帮助您的业务,请访问forge.puppet.com/f5/f5