蚊章汇 - 自动化
type: channel
link: https://linuxcn.bwsl.wang/tag/%E8%87%AA%E5%8A%A8%E5%8C%96/
items: Kubernetes 能否帮助解决自动化挑战？
items: 如何在 Linux 上使用 Bash 自动化任务
items: 使用自动化时的五个常见错误
items: 使用 Powershell 来自动化 Linux、macOS 以及 Windows 流程
items: 我如何使用 Ansible 和 anacron 实现自动化
items: 使用 Linux 自动化工具提高生产率
items: 如何提升自动化的 ROI：4 个小提示
items: IT 自动化的下一步是什么
items: IT 自动化：如何去实现
items: Fabric - 通过 SSH 来自动化管理 Linux 任务和布署应用

Kubernetes 能否帮助解决自动化挑战？
type: item
date: 2022-10-30T18:56:27+08:00
description: 组织层面的自动化一直是一个难以实现的目标，但 Kubernetes 或许能够改变这一切。当我在 2002 年采用 Gentoo Linux 作为我的主要操作系统时，我开始了我的自动化之旅。二十年后，自动化还没有完成。当我与客户和合作伙伴会面时，他们分享了团队内部的自动化成果，但他们也描述了在组织层面实现类似成功所面临的挑战。大多数 IT 组织都能够端到端地提供虚拟机，从而将过去 4 周的交付周期缩短到仅 5 分钟。这种级别的自动化本身就是一个复杂的工作流程，需要网络（IP 地址管理、DNS、代理、网络区域等）、身份访问管理、虚拟机管理程序、存储、备份、更新操作系统、应用最新的配置文件、监控、安全和强化以及合规性基准测试，等等。哇，这么多！满足高速、可扩展和按需自动化的业务需求并不容易。例如，来看看经典的网上商店或提交纳税申报表的在线政府服务，其工作负载有明确的峰值需要面对。处理此类负载的一种常见方法是拥有一个超大的服务器集群，以供 IT 专业人员的特定团队使用，监控客户或公民的季节性涌入。每个人都希望及时部署整个栈。他们希望基础架构在混合云场景的上下文中运行工作负载，使用“ 构建-消耗-回收 build-consume-trash ”模型来优化成本，同时从无限弹性中受益。换句话说，每个人都想要乌托邦式的“云体验”。云真的能交付吗？尚有一线机会，这主要归功于 Kubernetes 的设计方式。Kubernetes 的指数级普及推动了创新，取代了管理平台和应用的标准传统做法。 Kubernetes 需要使用 “ 万物皆代码 Everything-as-Code ”（EaC）来定义从简单的计算节点到 TLS 证书的所有资源的期望状态。Kubernetes 强制使用三种主要的设计结构：一个标准接口，以减少内部和外部组件之间的整合问题API 优先及仅 API 的方法来标准化其所有组件的 CRUD（创建、读取、更新、删除）操作使用 YAML 作为通用语言，以简单易读的方式定义这些组件的所有所需状态这三个关键组成部分基本上是选择自动化平台的相同要求，至少如果你想让跨职能团队轻松采用是这样的。这也模糊了团队之间的职责分工，有助于提高跨越孤岛的协作，这是一件好事！事实上，采用 Kubernetes 的客户和合作伙伴正在加速进入超自动化状态。Kubernetes 有机地推动团队采用多种 DevOps 基础和实践，如：EaC、使用 Git 进行版本控制、同行评审、 文档即代码 Documentation as Code ，并鼓励跨职能协作。这些实践有助于提高团队的自动化技能，并帮助团队在处理应用生命周期和基础架构的 GitOps 和 CI/CD 管道方面取得良好的开端。让自动化成为现实你没看错！网络商店或政府报告等复杂系统的整个栈可以用清晰、可理解、通用的术语定义，可以在任何本地或云提供商上执行。可以定义具有自定义指标的自动伸缩器以触发所需栈的即时部署，以解决季节性高峰期间客户或市民的涌入问题。当指标恢复正常，且云计算资源不再有存在的理由时，你将它们回收并恢复常规运营，而由一组核心资产在本地接管业务，直到下一次激增。鸡和蛋的悖论考虑到 Kubernetes 和云原生模式，自动化是必须的。但它提出了一个重要的问题：一个组织可以在解决自动化战略之前采用 Kubernetes 吗？似乎从 Kubernetes 开始可以激发更好的自动化，但这并不是一个一成不变的结论。工具不是对技能、实践和文化问题的解决方案。但是，设计良好的平台可以成为 IT 组织内学习、变革和跨职能协作的催化剂。开始使用 Kubernetes即使你觉得自己错过了自动化列车，也不要害怕从简单、不复杂的栈上开始使用 Kubernetes。当你 掌握了初始步骤，就可以拥抱这个出色的编排系统的简单性，并根据更复杂的需求进行迭代。via: https://opensource.com/article/22/10/kubernetes-solve-automation-challenges作者：Rom Adams 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出

如何在 Linux 上使用 Bash 自动化任务
type: item
date: 2022-08-31T02:20:00+08:00
description: Bash 有一些方便的自动化功能，可以让我在 Linux 上处理文件时更轻松。通过 Bash 命令行进行自动化任务是极好的一种方式。不论你使用运行在服务器上的 Linux 进行管理日志文件或其他文件，还是你在个人电脑上整理文件以使桌面保持整洁，使用 Bash 的自动化功能会使你的工作变得更轻松。自动执行文件任务：for如果你对一堆文件要同时处理，并且对每个文件进行相同的操作，请使用 for 命令。该命令会遍历文件列表，并执行一个或多个命令。for 命令如下所示：for 变量 in 列表 do 命令 done 我在示例中添加了额外的空白和换行，来分开 for 命令中不同的部分。看起来好像无法在命令行中同时运行多个命令，不过你可以使用 ; 将所有命令放在同一行中，就像这样:for 变量 in 列表 ; do 命令 ; done 让我们看看它的实际效果。我使用 for 命令来重命名一些文件。最近，我有一些截图，想要重命名。这些截图名称为 filemgr.png 或 terminal.png，我想将 screenshot 放在每个名称前。我可以使用 for 命令一次性将 30 个文件重命名。这是两个文件的示例：$ ls filemgr.png terminal.png $ for f in *.png ; do mv $f screenshot-$f ; done $ ls screenshot-filemgr.png screenshot-terminal.png for 命令使得在一系列文件中执行一种或多种操作变得容易。你可以用一些有意义的变量名，比如 image 或 screenshot，或者你用示例中“缩写的”变量 f。当我在使用 for 循环写脚本的时候，会选择有意义的变量名。但是当我在命令行中使用 for，我通常会选择缩写变量名，比如 f 代表文件，d 代表目录等。不论你选择怎样的变量名，请确保在引用变量时添加 $ 符号。这会将变量扩展为你正在处理的文件的名称。在 Bash 提示符下键入 help for 以了解有关 for 命令的更多信息。按条件执行：if当你需要对每个文件执行相同操作时，使用 for 循环遍历一些文件很有帮助。但是，如果你需要对某些文件做一些不同的事情怎么办？为此，你需要使用 if 语句进行条件执行。if 语句如下所示：if 测试 then 命令 fi 你也可以使用 if、else 语句进行判断：if 测试 then 命令 else 命令 fi 你可以使用 if、elif、else 语句来实现更复杂的程序。当我一次性需要自动处理很多文件时，我会在脚本中使用：if 测试1 then 命令 elif 测试2 then 命令 elif 测试3 then 命令 else 命令 fi if 命令可以让你进行各种判断，例如判断一个文件是否是一个文件，或者一个文件是否为空文件（零字节）。在命令行中输入 help test，可以立即查看使用 if 语句能够进行的各种测试。例如，假设我想清理一个包含几十个文件的日志目录。日志管理中的一个常见任务是删除所有空日志文件，并压缩其他日志。解决这个问题的最简单方法是删除空文件。没有可以完全匹配的 if 测试，但是我们有 -s 选项来判断是否是一个文件，并且判断该文件不是空的（大小不为零）。这与我们想要的相反，但我们可以使用 ! 来否定测试，以判断某些内容不是文件或为空。让我们用一个示例来看看这个过程。我创建了两个测试文件：一个是空的，另一个包含一些数据。我们可以使用 if 判断，如果文件为空打印消息 empty：$ ls datafile emptyfile $ if [ ! -s datafile ] ; then echo "empty" ; fi $ if [ ! -s emptyfile ] ; then echo "empty" ; fi empty 我们可以将 if 和 for 命令结合起来，检查日志文件列表中的空文件并删除：$ ls -l total 20 -rw-rw-r--. 1 jhall jhall 2 Jul 1 01:02 log.1 -rw-rw-r--. 1 jhall jhall 2 Jul 2 01:02 log.2 -rw-rw-r--. 1 jhall jhall 2 Jul 3 01:02 log.3 -rw-rw-r--. 1 jhall jhall 0 Jul 4 01:02 log.4 -rw-rw-r--. 1 jhall jhall 2 Jul 5 01:02 log.5 -rw-rw-r--. 1 jhall jhall 0 Jul 6 01:02 log.6 -rw-rw-r--. 1 jhall jhall 2 Jul 7 …

使用自动化时的五个常见错误
type: item
date: 2022-05-31T23:15:05+08:00
description: 随着自动化扩展到涵盖 IT 的更多方面，越来越多的管理员正在学习自动化技能并应用它们来减轻他们的工作量。自动化可以减轻重复性任务的负担，并为基础设施增加一定程度的一致性。但是，当 IT 工作人员部署自动化时，会出现可能对大大小小的基础设施造成严重破坏的常见错误。在自动化部署中通常会出现五个常见错误。缺乏测试初学者常犯的错误是自动化脚本没有经过全面测试。由于拼写错误或逻辑错误，简单的 shell 脚本可能会对服务器产生不利影响。将该错误乘以基础架构中的服务器数量，你可能会遇到一大堆问题需要清理。在大规模部署之前始终测试你的自动化脚本。意外负载经常发生的第二个错误是没有预测脚本可能对其他资源施加的系统负载。当目标是十几个服务器时，运行从仓库下载文件或安装包的脚本可能没问题。脚本通常在成百上千台服务器上运行。这种负载可以使支持服务停止或完全崩溃。不要忘记考虑端点影响或设置合理的并发率。离开脚本自动化工具的一种用途是确保符合标准设置。自动化可以轻松确保组中的每台服务器都具有完全相同的设置。如果该组中的服务器需要根据该基线进行更改，同时管理员不了解合规标准，那么可能会出现问题。安装和启用不需要和不想要的服务，从而导致可能的安全问题。缺乏文档管理员的一项固定职责应该是记录他们的工作。由于合同到期、升职或定期员工流动，公司可能会在 IT 部门频繁招聘新员工。公司内的工作组相互隔离也很常见。由于这些原因，重要的是记录哪些自动化已经到位。与用户运行脚本不同，自动化可能会在创建它的人离开组之后继续很长时间。管理员可能会发现自己在其基础设施中面临着来自未经检查的自动化的奇怪行为。缺乏经验列表中的最后一个错误是管理员对他们正在自动化的系统不够了解。管理员经常被雇用到他们没有接受过足够培训且没有人可以求教的职位上工作。自 COVID 以来，当公司努力填补空缺时，这一点尤其重要。然后管理员被迫处理他们没有设置并且可能不完全理解的基础设施。这可能会导致非常低效的脚本浪费资源或配置错误的服务器。结论越来越多的管理员正在学习自动化来帮助他们完成日常任务。因此，自动化正被应用于更多的技术领域。希望此列表将有助于防止新用户犯这些错误，并敦促经验丰富的管理员重新评估他们的 IT 策略。自动化旨在减轻重复性任务的负担，而不是为最终用户带来更多工作。via: https://fedoramagazine.org/five-common-mistakes-when-using-automation/作者：Gary Scarborough 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出

使用 Powershell 来自动化 Linux、macOS 以及 Windows 流程
type: item
date: 2021-11-23T20:30:08+08:00
description: 自动化是 DevOps 的关键，但是，是否任何事都可以自动化？自动化控制了那些手工的、费力的和容易出错的过程，用运行自动化脚本的计算机代替了执行手工任务的工程师。每个人都认同手工流程是健康的 DevOps 模式的敌人。一些人认为自动化不是一件好事，因为它取代了辛勤工作的工程师，而另一些人则意识到它提高了一致性、可靠性和效率，节省了时间，（最重要的是）使工程师能够聪明地工作。“DevOps 并不只是自动化或者基础架构即代码。” — Donovan Brown自从上个世纪 80 年代早期开始使用自动化流程和工具链以来，每当我听到或读到“自动化一切”的建议时，我总是会激动不已。虽然在技术上可以实现一切自动化，但自动化是复杂的，并且需要付出开发、调试和维护方面的代价。如果你曾经重新启用一个许久不用的 Azure 资源管理器（ARM）模板或很久以前编写的宝贵维护脚本，并期望它在几个月或几年之后仍然能够完美地执行，那么你就会明白，自动化就像任何其他代码一样，是脆弱的，需要持续的维护和培养。所以，你应该对什么进行自动化并在何时进行自动化？当你手动执行自动化流程超过一两次当你需要经常地持续地执行自动化流程自动化任何可被自动化的更重要的是，什么是你不应该自动化的？不要自动化一次性的流程，因为不值得投入，除非你会重新使用它作为参考文档，并定期验证它的可用性不要自动化高度不稳定的流程，因为太复杂且昂贵不要自动化有问题的流程，在自动化前先修复它们举例来说，我的团队使用我们通用的协作和工程系统来不断的监控数百个用户活动。如果一个用户在三个月或者更长时间处于非活动状态，并且这个用户被分配了一个昂贵的许可证，我们就会重分配这个用户一个功能少一些但是免费的许可证。如图 1 所示，这是一个没有技术挑战性的流程。这是一个令人费解且容易出错的过程，尤其是在执行上下文时与其他开发和运维任务切换时。图 1 手工流程切换用户许可证顺带的，这里有一个用简单三步创建的价值流图的例子:可视化所有活动: 列出用户、过滤用户、重置许可证。确定利益相关者，即运营和授权团队。措施：* 总交货时间（TLT）= 13 小时 * 总周期时间（TCT） = 1.5 小时 * 总效率百分比 = TLT/TCT*100 = 11.5% 如果你在人群流量大和容易看到的区域挂一个这些可视化的副本，比如在你的团队的讨论区、餐厅，或在去洗手间的路上，你将引发大量的讨论和主动反馈。例如，从视觉上看，很明显，手工任务是一种浪费，主要是由于漫长的流程等待时间造成的。让我们研究一个简单的 PowerShell 脚本，它可以自动化该流程，如图 2 所示，将总交付时间从 13 小时减少到 4 小时加 60 秒，并将总体效率从 11.5 提高到 12.75%。图 2 半自动化的 PowerShell 脚本切换用户许可PowerShell 是一种开源的基于任务的脚本语言。它可以在 GitHub 上找到。它构建在 .NET 上，允许你自动化 Linux、macOS 和 Windows 流程。具有开发背景的用户，特别是 C# 用户，将享受到 PowerShell 的全部好处。下面的 PowerShell 脚本示例通过它的服务 REST API 与 Azure DevOps 进行通信。脚本结合了在图 1 中的手动列表用户和过滤用户任务，识别了 Demo 组织中的所有两个月没有活动的、使用基本许可证或更昂贵的基本+测试许可证的用户，并将用户的详细信息输出到控制台。很简单！首先，设置认证标头和其他变量，这些变量将在稍后的初始化脚本中使用：param( [string] $orgName = "DEMO", [int] $months = "-2", [string] $patToken = "<PAT>" ) # Basic authentication header using the personal access token (PAT) $basicAuth = ("{0}:{1}" -f "",$patToken) $basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth) $basicAuth = [System.Convert]::ToBase64String($basicAuth) $headers = @{Authorization=("Basic {0}" -f $basicAuth)} # REST API Request to get all entitlements $request_GetEntitlements = "https://vsaex.dev.azure.com/" + $orgName + "/_apis/userentit…

我如何使用 Ansible 和 anacron 实现自动化
type: item
date: 2021-10-14T18:44:00+08:00
description: 有了 anacron，我可以把脚本和 Ansible 剧本放到合适的地方，以完成各种琐碎的任务。自动化是伟大的 IT 和 DevOps 理想，但根据我的经验，可能根本不存在什么不方便的东西。有很多次，我为某些任务想出了一个很好的解决方案，我甚至会编写脚本，但我没有让它真正实现自动化，因为在我工作的机器上不存在易于自动化的基础设施。我最喜欢的简易自动化工具曾经是 cron 系统，它古老、可靠、面向用户，而且简单（除了一个我永远无法记住的调度语法之外）。然而，cron 的问题是，它假定一台电脑每天 24 小时都在工作。在错过了太多预定的备份之后，我发现了 anacron，一个基于时间戳而非预定时间的 cron 系统。如果你的电脑在通常情况下运行时处于关闭状态，anacron 会确保它在电脑重新开启时运行。创建一个作业只需要简单地把一个 shell 脚本放到三个目录中：cron.day、cron.weekly 或者 cron.monthly （如果你想的话，你可以定义更多）。有了 anacron，我发现自己把脚本和 Ansible 剧本用在了各种琐碎的任务中，包括弹出到期和事件提醒。这是一个现代问题的简单而明显的解决方案，但如果 anacron 没有安装在电脑上，那它对我就没有用。用 Ansible 进行软件设置任何时候我设置一台新的计算机，无论是笔记本电脑、工作站还是服务器，我都会安装 anacron。这很简单，但是 anacron 的安装只提供了 anacron 命令。它并没有设置 anacron 的用户环境。所以我创建了一个 Ansible 剧本来设置用户需要什么来使用 anacron 并安装 anacron 命令。首先，标准的 Ansible 模板：--- - hosts: localhost tasks: 用 Ansible 创建目录接下来，我创建了用于 Anacron 的目录树。你可以把它看成是一种透明的 crontab。 - name: create directory tree ansible.builtin.file: path: "{{ item }}" state: directory with_items: - '~/.local/etc/cron.daily' - '~/.local/etc/cron.weekly' - '~/.local/etc/cron.monthly' - '~/.var/spool/anacron' 这个语法可能看起来有点奇怪，但它实际上是一个循环。with_items: 指令定义了四个要创建的目录，Ansible 在 ansible.buildin.file: 指令中为每个目录迭代一次（目录名填充了 {{ item }} 变量）。与 Ansible 中的一切一样，如果目录已经存在，不会有错误或冲突。用 Ansible 复制文件ansible.buildin.copy 模块将文件从一个地方复制到另一个地方。为了让它工作，我需要创建一个叫做 anacrontab 的文件。它不是 Ansible 剧本，所以我把它放在我的 ~/Ansible/data 目录下，那里是我的剧本的支持文件。 - name: copy anacrontab into place ansible.builtin.copy: src: ~/Ansible/data/anacrontab dest: ~/.local/etc/anacrontab mode: '0755' 我的 anacrontab 文件很简单，模仿了一些发行版默认安装在 /etc/anacron 中的文件：SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin 1 0 cron.day run-parts $HOME/.local/etc/cron.daily/ 7 0 cron.wek run-parts $HOME/.local/etc/cron.weekly/ 30 0 cron.mon run-parts $HOME/.local/etc/cron.monthly/ 登录时运行 anacron大多数 Linux 发行版将 anacron 配置为从 /etc/anacron 读取作业。我主要是作为一个普通用户使用 anacron，所以我从我的登录账号 ~/.profile 启动 anacron。我不想让自己记住这些配置，所以我让 Ansible 来做。我使用 ansible.buildin.lineinfile 模块，它会在 ~/.profile 不存在时创建它，并插入 anacron 的启动行。 - name: add local anacrontab to .profile ansible.bu…

使用 Linux 自动化工具提高生产率
type: item
date: 2021-04-30T19:12:00+08:00
description: 用 AutoKey 配置你的键盘，纠正常见的错别字，输入常用的短语等等。AutoKey 是一个开源的 Linux 桌面自动化工具，一旦它成为你工作流程的一部分，你就会想，如何没有它，那该怎么办。它可以成为一种提高生产率的变革性工具，或者仅仅是减少与打字有关的身体压力的一种方式。本文将研究如何安装和开始使用 AutoKey ，介绍一些可以立即在工作流程中使用的简单方法，并探讨 AutoKey 高级用户可能会感兴趣的一些高级功能。安装并设置 AutoKeyAutoKey 在许多 Linux 发行版中都是现成的软件包。该项目的 安装指南 包含许多平台的说明，也包括了从源代码进行构建的指导。本文使用 Fedora 作为操作平台。AutoKey 有两个变体：为像 GNOME 等基于 GTK 环境而设计的 autokey-gtk 和基于 QT 的 autokey-qt。你可以从命令行安装任一变体：sudo dnf install autokey-gtk 安装完成后，使用 autokey-gtk（或 autokey-qt）运行它。探究界面在将 AutoKey 设置为在后台运行并自动执行操作之前，你首先需要对其进行配置。调出用户界面（UI）配置：autokey-gtk -c AutoKey 提供了一些预设配置的示例。你可能希望在熟悉 UI 时将他们留作备用，但是可以根据需要删除它们。左侧窗格包含一个文件夹式的短语和脚本的层次结构。“ 短语 Phrases ” 代表要让 AutoKey 输入的文本。“ 脚本 Scripts ” 是动态的、程序化的等效项，可以使用 Python 编写，并且获得与键盘击键发送到活动窗口基本相同的结果。右侧窗格构建和配置短语和脚本。对配置满意后，你可能希望在登录时自动运行 AutoKey，这样就不必每次都启动它。你可以通过在 “ 首选项 Preferences ”菜单（“ 编辑 -> 首选项 Edit -> Preferences” ”）中勾选 “ 登录时自动启动 AutoKey Automatically start AutoKey at login ”进行配置。使用 AutoKey 纠正常见的打字排版错误修复常见的打字排版错误对于 AutoKey 来说是一个容易解决的问题。例如，我始终键入 “gerp” 来代替 “grep”。这里是如何配置 AutoKey 为你解决这些类型问题。创建一个新的子文件夹，可以在其中将所有“打字排版错误校正”配置分组。在左侧窗格中选择 “My Phrases” ，然后选择 “ 文件 -> 新建 -> 子文件夹 File -> New -> Subfolder ”。将子文件夹命名为 “Typos”。在 “ 文件 -> 新建 -> 短语 File -> New -> Phrase ” 中创建一个新短语。并将其称为 “grep”。通过高亮选择短语 “grep”，然后在 输入短语内容 Enter phrase contents 部分（替换默认的 “Enter phrase contents” 文本）中输入 “grep” ，配置 AutoKey 插入正确的关键词。接下来，通过定义缩写来设置 AutoKey 如何触发此短语。点击用户界面底部紧邻 “ 缩写 Abbreviations ” 的 “ 设置 Set ”按钮。在弹出的对话框中，单击 “ 添加 Add ” 按钮，然后将 “gerp” 添加为新的缩写。勾选 “ 删除键入的缩写 Remove typed abbreviation ”；此选项让 AutoKey 将任何键入 “gerp” 一词的替换为 “grep”。请不要勾选“ 在键入单词的一部分时触发 Trigger when typed as part of a word ”，这样，如果你键入包含 “grep”的单词（例如 “fingerprint”），就不会尝试将其转换为 “fingreprint”。仅当将 “grep” 作为独立的单词键入时，此功能才有效。限制对特定应用程序的更正你可能希望仅在某些应用程序（例如终端窗口）中打字排版错误时才应用校正。你可以通过设置 窗口过滤器 Window Filter 进行配置。单击 “ 设置 Set ” 按钮来定义。设置 窗口过滤器 Window Filter 的最简单方法是让 AutoKey 为你检测窗口类型：启动一个新的终端窗口。返回 AutoKey，单击 “ 检测窗口属性 Detect Window Properties ”按钮。单击终端窗口。这将自动填充窗口过滤器，可能的窗口类值为 gnome-terminal-server.Gnome-terminal。这足够了，因此单击 “OK”。保存并测试对新配置满意后，请确保将其保存。 单击 “ 文件 Fi…

如何提升自动化的 ROI：4 个小提示
type: item
date: 2018-07-28T06:09:28+08:00
description: 想要在你的自动化项目上达成强 ROI？采取如下步骤来规避失败。在过去的几年间，有关自动化技术的讨论已经很多了。COO 们和运营团队（事实上还有其它的业务部门）对于可以重新定义成本随着工作量的增加而增加的这一事实而感到震惊。 机器人流程自动化 Robotic Process Automation （RPA）似乎预示着运营的 圣杯 Holy Grail ：“我们提供了开箱即用的功能来满足你的日常操作所需 —— 检查电子邮件、保存附件、取数据、更新表格、生成报告、文件以及目录操作。构建一个机器人就像配置这些功能一样简单，然后用机器人将这些操作链接到一起，而不用去请求 IT 部门来构建它们。”这是一个多么诱人的话题。低成本、几乎不出错、非常遵守流程 —— 对 COO 们和运营领导来说，这些好处真实可及。RPA 工具承诺，它从运营中节省下来的费用就足够支付它的成本（有一个短的回报期），这一事实使得业务的观点更具有吸引力。自动化的谈论都趋向于类似的话题：COO 们和他们的团队想知道，自动化操作能够给他们带来什么好处。他们想知道 RPA 平台特性和功能，以及自动化在现实中的真实案例。从这一点到概念验证的实现过程通常很短暂。 在实现人工智能技术方面的建议，可以查看我们相关的文章，[制定你的人工智能策略：3 个小提示]。但是自动化带来的现实好处有时候可能比你所预期的时间要晚。采用 RPA 的公司在其实施后可能会对它们自身的 ROI 提出一些质疑。一些人没有看到预期之中的成本节省，并对其中的原因感到疑惑。你是不是自动化了错误的东西？在这些情况下，自动化的愿景和现实之间的差距是什么呢？我们来分析一下它，在决定去继续进行一个自动化验证项目（甚至是一个成熟的实践）之后，我们来看一下通常会发生什么。在确定实施自动化所采用的路径之后，COO 一般会问运营领导和他的团队们，应该在哪个流程或者任务上实施自动化。虽然从原则上说应该鼓励他们参与进来，但是有时候这种方式产生的决策往往会产生一个次优选择。原因如下：首先，团队领导经常会是“视野较窄”：他们对自己的流程和任务非常熟悉，但是对他们不参与的流程和任务并不是那么熟悉（特别是在他们没有太多运营经验的情况下）。这意味着他们在自己的工作领域内可能会找出比较适合自动化的候选者，但是在跨整个运营的其它领域中可能并不一定会找出最适合的。另外其它的像“我希望我的流程成为第一个实施自动化的候选者”这样的“软性”因素也会影响决定。其次，候选流程的选择有时候会被自动化特性和能力的匹配度所支配，而不是根据自动化所带来的价值所决定的。一个常见的误解是，任何包括像电子邮件或目录监视、下载、计算等活动的任务都是自动化的最佳候选者。如果对这些任务实施自动化不能为组织产生价值，那么它们就不是正确的候选者。那么，对于领导们来说，怎么才能确保实施自动化能够带来他们想要的 ROI 呢？实现这个目标有四步：1. 教育团队在你的团队中，从 COO 职位以下的人中，很有可能都听说过 RPA 和运营自动化。同样很有可能他们都有许多的问题和担心。在你开始启动实施之前解决这些问题和担心是非常重要的。对运营团队进行积极的教育可以大大地提升他们对自动化的热情和信心。培训主要关注于自动化和机器人是什么，它们在流程中一般扮演什么样的角色，哪个流程和任务最适合自动化，以及自动化的预期好处是什么。建议：邀请你的自动化合作伙伴去进行这些团队教育工作，你要有所控制：他们可能会非常乐意帮助你。在领导层将这些传播到更大范围的团队之前，你应该对他们的教育内容进行把关。“实施自动化的第一步是更好地理解你的流程。”2. 审查内部流程实施自动化的第一步是更好地理解你的流程。每个 RPA 实施之前都应该进行流程清单、动作分析、以及成本/价值的绘制练习。这些练习对于理解流程中何处产生价值（或成本，如果没有价值的情况下）是至关重要的。并且这些练习需要在每个流程或者每个任务这样的粒度级别上来做。这将有助你去识别和优先考虑最合适的自动化候选者。由于能够或者可能需要自动化的任务数量较多，流程一般需要分段实施自动化，因此优先级很重要。建议：设置一个小的工作团队，每个运营团队都参与其中。从每个运营团队中提名一个协调人 —— 一般是运营团队的领导或者团队管理者。在团队级别上组织一次研讨会，去构建流程清单、识别候选流程、以及推动购买。你的自动化合作伙伴很可能有“加速器” —— 调查问卷、计分卡等等 —— 这些将帮助你加速完成这项活动。3. 为优先业务提供强有力的指导实施自动化经常会涉及到在运营团队之间，基于业务价值对流程选择和自动化优先级上要达成共识（有时候是打破平衡）虽然团队的参与仍然是分析和实施的关键部分，但是领导仍然应该是最终的决策者。建议：安排定期会议从工作团队中获取最新信息。除了像推动达成共识和购…

IT 自动化的下一步是什么
type: item
date: 2018-07-24T08:36:00+08:00
description: 自动化专家分享了一点对 自动化不远的将来的看法。请将这些保留在你的视线之内。我们最近讨论了 推动 IT 自动化的因素，可以看到当前趋势正在增长，以及那些给刚开始使用自动化部分流程的组织的 有用的技巧 。噢，我们也分享了如何在贵公司进行自动化的案例及 长期成功的关键的专家建议。现在，只有一个问题：自动化的下一步是什么? 我们邀请一系列专家分享一下 自动化不远的将来的看法。 以下是他们建议 IT 领域领导需密切关注的六大趋势。1、 机器学习的成熟对于关于 机器学习（与“自我学习系统”相似的定义）的讨论，对于绝大多数组织的项目来说，实际执行起来它仍然为时过早。但预计这将发生变化，机器学习将在下一次 IT 自动化浪潮中将扮演着至关重要的角色。Advanced Systems Concepts, Inc. 公司的工程总监 Mehul Amin 指出机器学习是 IT 自动化下一个关键增长领域之一。“随着数据化的发展，自动化软件理应可以自我决策，否则这就是开发人员的责任了”，Amin 说。 “例如，开发者构建了需要执行的内容，但通过使用来自系统内部分析的软件，可以确定执行该流程的最佳系统。”假设将这个系统延伸到其他地方中。Amin 指出，机器学习可以使自动化系统在必要的时候提供额外的资源，以需要满足时间线或 SLA，同样在不需要资源以及其他的可能性的时候退出。显然不只有 Amin 一个人这样认为。“IT 自动化正在走向自我学习的方向” ，Sungard Availability Services 公司首席架构师 Kiran Chitturi 表示，“系统将会能测试和监控自己，加强业务流程和软件交付能力。”Chitturi 指出自动化测试就是个例子。脚本测试已经被广泛采用，但很快这些自动化测试流程将会更容易学习，更快发展，例如开发出新的代码或将更为广泛地影响生产环境。2、 人工智能催生的自动化上述原则同样适合与相关的（但是独立的） 人工智能的领域。根据对人工智能的定义，机器学习在短时间内可能会对 IT 领域产生巨大的影响（并且我们可能会看到这两个领域的许多重叠的定义和理解）。假定新兴的人工智能技术将也会产生新的自动化机会。SolarWinds 公司技术负责人 Patrick Hubbard 说，“人工智能和机器学习的整合普遍被认为对未来几年的商业成功起至关重要的作用。”3、 这并不意味着不再需要人力让我们试着安慰一下那些不知所措的人：前两种趋势并不一定意味着我们将失去工作。这很可能意味着各种角色的改变，以及全新角色的创造。但是在可预见的将来，至少，你不必需要对机器人鞠躬。“一台机器只能运行在给定的环境变量中——它不能选择包含新的变量，在今天只有人类可以这样做，” Hubbard 解释说。“但是，对于 IT 专业人员来说，这将需要培养 AI 和自动化技能，如对程序设计、编程、管理人工智能和机器学习功能算法的基本理解，以及用强大的安全状态面对更复杂的网络攻击。”Hubbard 分享一些新的工具或功能例子，例如支持人工智能的安全软件或机器学习的应用程序，这些应用程序可以远程发现石油管道中的维护需求。两者都可以提高效益和效果，自然不会代替需要信息安全或管道维护的人员。“许多新功能仍需要人工监控，”Hubbard 说。“例如，为了让机器确定一些‘预测’是否可能成为‘规律’，人为的管理是必要的。”即使你把机器学习和 AI 先放在一边，看待一般的 IT 自动化，同样原理也是成立的，尤其是在软件开发生命周期中。Juniper Networks 公司自动化首席架构师 Matthew Oswalt ，指出 IT 自动化增长的根本原因是它通过减少操作基础设施所需的人工工作量来创造直接价值。在代码上，操作工程师可以使用事件驱动的自动化提前定义他们的工作流程，而不是在凌晨 3 点来应对基础设施的问题。“它也将操作工作流程作为代码而不再是容易过时的文档或系统知识阶段，”Oswalt 解释说。“操作人员仍然需要在[自动化]工具响应事件方面后发挥积极作用。采用自动化的下一个阶段是建立一个能够跨 IT 频谱识别发生的有趣事件的系统，并以自主方式进行响应。在代码上，操作工程师可以使用事件驱动的自动化提前定义他们的工作流程，而不是在凌晨 3 点来应对基础设施的问题。他们可以依靠这个系统在任何时候以同样的方式作出回应。”4、 对自动化的焦虑将会减少SolarWinds 公司的 Hubbard 指出，“自动化”一词本身就产生大量的不确定性和担忧，不仅仅是在 IT 领域，而且是跨专业领域，他说这种担忧是合理的。但一些随之而来的担忧可能被夸大了，甚至与科技产业本身共存。现实可能实际上是这方面的镇静力：当自动化的实际实施和实践帮助人们认识到这个列表中的第 3 项时，我们将看到第 4 项的出…

IT 自动化：如何去实现
type: item
date: 2018-06-07T03:08:45+08:00
description: 想要你的整个团队都登上 IT 自动化之旅吗？ IT 执行者们分享了他们的战略。在任何重要的项目或主动变更刚开始的时候，IT 的管理者在前进的道路上面临着普遍的抉择。第一条路径看上去是提供了一个从 A 到 B 的最短路径：简单的把项目强制分配给每个人去执行，本质来说就是你要么按照要求去做要么就不要做了。第二条路径可能看上去会不是很直接，因为要通过这条路径你需要花时间去解释项目背后的策略以及原因。你会沿着这条路线设置停靠站点而不是从起点到终点的马拉松：“这就是我们正在做的 —— 和为什么我们这么做。”猜想一下哪条路径会赢得更好的结果？如果你选的是路径 2，你肯定是以前都经历过这两条路径——而且经历了第一次的结局。让人们参与到重大变革中总会是最明智的选择。IT 领导者也知道重大的变革总会带来严重的恐慌、怀疑，和其他的挑战。IT 自动化确实是很正确的改变。这个术语对某些人来说是很可怕的，而且容易被曲解。帮助人们理解你的公司需要 IT 自动化的必要性的原因以及如何去实现是达到你的目标和策略的重要步骤。阅读我们的相关文章，[IT自动化最佳实践：持久成功的7个关键点。]考虑到这一点，我们咨询了许多 IT 管理者关于如何在你的组织中实现 IT 自动化。1、向人们展示它的优点我们要面对的一点事实是：自我利益和自我保护是本能。利用人们的这种本能是一个吸引他们的好方法：向他们展示自动化策略将如何让他们和他们的工作获益。自动化将会是软件管道中的一个特定过程意味着将会减少在半夜呼叫团队同事来解决故障？它将能让一些人丢弃技术含量低的技能，用更有策略、高效的有序工作代替手工作业，这将会帮助他们的职业生涯更进一步？“向他们传达他们能得到什么好处，自动化将会如何让他们的客户和公司受益，”来自 ADP 全球首席技术官 vipual Nagrath 的建议。“将现在的状态和未来光明的未来进行对比，展现公司将会变得如何稳定，敏捷，高效和安全。”这样的方法同样适用于 IT 领域之外的其他领域；只要在向非技术领域的股东们解读利益的时候解释清楚一些术语即可，Nagrath 说道。设置好前后的情景是一个不错的帮助人们理解的更透彻的故事机。“你要描述一幅人们能够联想到的当前状态的画面，” Nagrath 说。“描述现在是什么工作，但也要重点强调是什么导致团队的工作效率不够敏捷。”然后再阐释自动化过程将如何提高现在的状态。2、将自动化和特定的商业目标绑定在一起一个强有力的案列的一部分要确保人们理解你不只是在追逐潮流趋势。如果只是为了自动化而自动化，人们会很快察觉到进而会更加抵制的——也许在 IT 界更是如此。“自动化需要商业需求的驱动，例如收入和运营开销，” Cyxtera的副总裁和首席信息安全官 David Emerson 说道。“没有自动化的努力是自我辩护的，而且任何技术专长都不应该被当做一种手段，除非它是公司的一项核心能力。”像 Nagrath 一样，Emerson 建议将达到自动化的商业目标和奖励措施挂钩，用迭代式的循序渐进的方式推进这些目标和相关的激励措施。3、 将自动化计划分解为可管理的条目即使你的自动化策略字面上是“一切都自动化”，对大多数组织来说那也是很艰难的，而且可能是没有灵活性的。你需要制定一个强有力的方案，将自动化目标分解为可管理的目标计划。而且这将能够创造很大的灵活性来适应之后漫长的道路。“当制定一个自动化方案的时候，我建议详细的阐明推进自动化进程的奖励措施，而且允许迭代朝着目标前进来介绍和证明利益处于一个低风险水平，”Emerson 说道。GA Connector 的创始人 Sergey Zuev 分享了一个为什么自动化如此重要的快节奏体验的报告——它将怎样为你的策略建立一个强壮持久的论点。Zuevz 应该知道：他的公司的自动化工具将公司的客户关系应用数据导入谷歌分析。但实际上是公司的内部经验使顾客培训进程自动化从而出现了一个闪耀的时刻。“起初， 我们曾尝试去建立整个培训机制，结果这个项目搁浅了好几个月，”Zuev 说道。“认识到这将无法继续下去之后，我们决定挑选其中的一个能够有巨大的时效的领域，而且立即启动。结果我们只用了一周就实现了其中的电子邮件序列的目标，而且我们已经从被亵渎的体力劳动中获益。”4、 出售主要部分也有好处循序渐进的方法并不会阻碍构建一个宏伟的蓝图。就像以个人或者团队的水平来制定方案是一个好主意，帮助人们理解全公司的利益也是一个不错的主意。“如果我们能够加速达到商业需求所需的时间，那么一切质疑将会平息。”AHEAD 的首席技术官 Eric Kaplan 赞同通过小范围的胜利来展示自动化的价值是一个赢得人心的聪明策略。但是那些所谓的“小的”的价值揭示能够帮助你提高人们的整体形象。Kaplan 指出个人和组织间的价值是每个人都可以容易联…

Fabric - 通过 SSH 来自动化管理 Linux 任务和布署应用
type: item
date: 2016-08-22T17:55:32+08:00
description: 当要管理远程机器或者要布署应用时，虽然你有多种命令行工具可以选择，但是其中很多工具都缺少详细的使用文档。在这篇教程中，我们将会一步一步地向你介绍如何使用 fabric 来帮助你更好得管理多台服务器。使用 Fabric 来自动化地管理 Linux 任务Fabric 是一个用 Python 编写的命令行工具库，它可以帮助系统管理员高效地执行某些任务，比如通过 SSH 到多台机器上执行某些命令，远程布署应用等。在使用之前，如果你拥有使用 Python 的经验能帮你更好的使用 Fabric。当然，如果没有那也不影响使用 Fabric。我们为什么要选择 Fabric：简单完备的文档如果你会 Python，不用增加学习其他语言的成本易于安装使用使用便捷支持多台机器并行操作在 Linux 上如何安装 FabricFabric 有一个特点就是要远程操作的机器只需要支持标准的 OpenSSH 服务即可。只要保证在机器上安装并开启了这个服务就能使用 Fabric 来管理机器。依赖Python 2.5 或更新版本，以及对应的开发组件Python-setuptools 和 pip（可选，但是非常推荐）gcc我们推荐使用 pip 安装 Fabric，但是你也可以使用系统自带的包管理器如 yum, dnf 或 apt-get 来安装，包名一般是 fabric 或 python-fabric。如果是基于 RHEL/CentOS 的发行版本的系统，你可以使用系统自带的 EPEL 源 来安装 fabric。# yum install fabric [适用于基于 RedHat 系统] # dnf install fabric [适用于 Fedora 22+ 版本] 如果你是 Debian 或者其派生的系统如 Ubuntu 和 Mint 的用户，你可以使用 apt-get 来安装，如下所示：# apt-get install fabric 如果你要安装开发版的 Fabric，你需要安装 pip 来安装 master 分支上最新版本。# yum install python-pip [适用于基于 RedHat 系统] # dnf install python-pip [适用于Fedora 22+ 版本] # apt-get install python-pip [适用于基于 Debian 系统] 安装好 pip 后，你可以使用 pip 获取最新版本的 Fabric。# pip install fabric 如何使用 Fabric 来自动化管理 Linux 任务现在我们来开始使用 Fabric，在之前的安装的过程中，Fabric Python 脚本已经被放到我们的系统目录，当我们要运行 Fabric 时输入 fab 命令即可。在本地 Linux 机器上运行命令行按照惯例，先用你喜欢的编辑器创建一个名为 fabfile.py 的 Python 脚本。你可以使用其他名字来命名脚本，但是就需要指定这个脚本的路径，如下所示：# fabric --fabfile /path/to/the/file.py Fabric 使用 fabfile.py 来执行任务，这个文件应该放在你执行 Fabric 命令的目录里面。例子 1：创建入门的 Hello World 任务：# vi fabfile.py 在文件内输入如下内容：def hello(): print('Hello world, Tecmint community') 保存文件并执行以下命令：# fab hello Fabric 工具使用说明例子 2：新建一个名为 fabfile.py 的文件并打开：粘贴以下代码至文件：#! /usr/bin/env python from fabric.api import local def uptime(): local('uptime') 保存文件并执行以下命令：# fab uptime Fabric: 检查系统运行时间让我们看看这个例子，fabfile.py 文件在本机执行了 uptime 这个命令。在远程 Linux 机器上运行命令来执行自动化任务Fabric API 使用了一个名为 env 的关联数组（Python 中的词典）作为配置目录，来储存 Fabric 要控制的机器的相关信息。env.hosts 是一个用来存储你要执行 Fabric 任务的机器的列表，如果你的 IP 地址是 192.168.0.0，想要用 Fabric 来管理地址为 192.168.0.2 和 192.168.0.6 的机器，需要的配置如下所示：#!/usr/bin/env python from fabric.api import env env.hosts = [ '192.168.0.2', '192…