Script-Server:每个人都应该使用(或至少知道)的开源工具
每个人都喜欢开源:)
为什么? `因为它是免费的。这很有帮助。它很灵活。有时它是唯一有效的方法,仅仅是因为开发开源解决方案的社区已经遇到了您刚刚遇到的问题,并且许多伟大的思想已经聚集在一起使用开源的力量来创建一个伟大的定制解决方案。
在这篇博文中,我将讨论一个特定的开源工具,它不是很多技术人员知道的,被Bugy称为“Script-Server”。
它是什么?
Script-Server 是一个智能 Web-UI(也可以通过命令行运行),您可以在其中以用户友好的设置公开脚本/Ansible Playbook。您无需修改脚本 — 您将每个脚本的配置添加到 Script-Server,它会负责正确的 UI、验证、执行等。含义-每个人都可以使用它并运行脚本(参见Demo),不需要任何技术知识,也不需要任何权限,因为脚本运行时在后端设置了权限,与最终用户权限无关。
这是给谁的?
如果您有脚本、Ansible 剧本等,并且您希望公司中的非技术人员可以访问它们,从而减少他们对您的 IT/系统/DevOps 团队的依赖 — 此工具适合您。
我是如何开始使用它的?
来自非技术团队的同事(我们称她为 Betty)有一个每月任务(不是在固定日期)从外部位置下载zip文件,在特定服务器上解压缩,分析统计数据和哈希在文件上并将报告发送回贝蒂。
作为一名 DevOps 工程师,我的口头禅之一就是将简单的事情自动化。我将 Betty 的重复性任务确定为自动化的绝佳候选者,并创建了一个 Ansible 剧本来执行此流程。
但是每个月 Betty 都会打开一张 Jira 票,要求我的团队运行它,因为她没有运行 Ansible 剧本的访问权限。
大约在那个时候,一位团队成员分享了他曾使用过“Script-Server”,这是一个为非技术人员公开服务的工具;我很快意识到,这个工具可能是让 Betty 独立获取报告并减少对我团队的不必要依赖的好方法。
作为解决方案的一部分,我向 Betty 提供了 Script-Server 的链接(托管在我端的服务器上),并授予她登录访问权限,这使她能够独立运行此过程(并最大限度地减少了 Jira 的数量)她打开的门票,而在它😉)。
这是 Betty 在登录并输入她需要的特定脚本后看到的屏幕截图(下面的输出是单击“执行”后)-
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--qUWwWuM4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/1024/1%2AAK7M59kThXtyqzQfzAVPYg.png)
那么......是什么让这个工具如此出色?
毫无疑问,Script-Server 的主要价值在于它以量身定制的方式包装脚本/剧本,允许暴露变量/参数下拉列表、复选框、文本等。(Ansible 中的额外变量,常规脚本中的参数)。用户体验方面,这意味着在运行中,脚本参数/变量在 UI 中被请求(因此无需检查脚本本身以查看它期望获得哪些参数)。
例如,上面的屏幕截图显示了一个名为“batch_date”(2019-04)的变量。 “batch_date”实际上是在 Ansible 剧本“playbook.yml”中定义的额外变量,并通过配置脚本将 Ansible 中的变量名称映射到 UI 中的变量名称链接到 Script-Server .
为了说明这是如何工作的示例,请参见下面的脚本:
{ “name”: “Very parameterized”, “script\_path”: “scripts/parameterized.sh”, “working\_directory”: “./samples”, “description”: “This script does nothing except accepting a lot of parameters and printing them”, “allowed\_users”: [ “\*” ], “include”: “${Simple Text}.json”, “parameters”: [ { “name”: “Simple Int”, “param”: “ — simple\_int”, “type”: “int” }, { “name”: “Simple Boolean”, “param”: “ — simple\_bool”, “no\_value”: true, “description”: “Boolean One” }, { “name”: “Multiple selection”, “param”: “ — multiselect”, “type”: “multiselect”, “description”: “Multiselect list”, “values”: [ “Black cat”, “Brown dog”, “Green parrot”, “Red fox” ] } ] }
在这个例子中,我们有一个配置脚本调用执行脚本“scripts/parameterized.sh”,配置脚本定义了执行脚本的参数和变量。
Script-Server 的工作方式本质上是,如果您的执行脚本需要参数,则必须使用配置脚本运行它 — 如果它只是执行不带任何参数的命令,您可以直接从 Script-Server 运行它(在演示站点中) “colortest”就是一个例子)。
完整的文件可以在这里找到。
Script-Server 支持哪些脚本?
Script-Server 与语言无关 — 它可以运行任何语言的脚本,从 Perl、PHP 到 Python; Ansible playbook 也可以运行(需要稍微包装一下,但付出的代价很小)。它支持您在配置脚本中定义的多种类型的输入或“参数”(列表/自由文本/硬编码),以允许脚本使用的灵活性(通过命令行需要任何参数 — 它们可以通过以下方式提供脚本服务器 UI)。
用户管理
Script-Server 还支持身份验证(Gmail SAML)和授权,通过定义哪些用户/组可以访问每个“域”(域是您运行脚本的区域 - 它可以是单个脚本或整个文件夹ansible-playbooks 如果你愿意)。来自演示的示例- 定义用户 X 以能够运行“计算器”但不能运行“井字游戏”。
会话中执行
在浏览器中运行 Script-Server 会话是防弹的——它基于最终用户的会话,所以即使最终用户关闭浏览器并重新打开它——他/她会看到会话保持不变并且运行没有没有被中止。
Script-Server 作为开源的力量
即使您还没有弄清楚如何在您的公司中使用此工具,或者您在最终实施它时遇到了一些限制,该工具的创建者也非常敏感,因此您可以打开一个 GitHub 问题,您将获得快速有效的响应(我可以根据个人经验证明,当我错过了几次特定功能时,我在 GitHubScript-Server存储库上打开了一个问题,并且Bugy对我的问题做出了回应,甚至采取了行动根据我的建议添加我要求的特性/功能)。您还可以为该项目做出贡献,并使该工具更加强大,并且适用于更多用例。
总结
开源社区正在成长。就连蓝色巨人在最近收购红帽时也认识到了开源的力量。这种增长只会让开源项目变得更好、更安全 —— 因为越来越多的人正在测试和修复代码。开源社区的发展在技术层面对我们的职业生涯产生了积极影响 — 通过提供各种解决方案来实施,并在个人层面通过提供回馈社区的方式。
Script-Server 是一个非常强大和灵活的工具,允许从一个中心位置运行脚本和剧本,以一种“简单易懂”的外观,无需权限或预先了解脚本的工作原理,而且我强烈建议检查一下。
更多推荐

所有评论(0)