如何安装Puppet Bolt以自动化系统管理员任务?

在Ubuntu上安装Puppet Bolt…

Puppet Bolt是一个广泛使用的开源工具,用于自动化手动工作。

Bolt基于Ruby,它是一个命令行工具,可以通过SSH和WinRM在本地和远程服务器上执行脚本和命令。它帮助系统管理员以多种方式管理多个服务器。

  • 管理更新
  • 软件安装
  • 读取日志
  • 停止或启动服务
  • 执行命令

好消息是您不需要在服务器上安装任何代理程序。它是无代理的。

前提条件

以下示例是在Ubuntu上进行的,因此您需要具有对root的sudo访问权限的Ubuntu虚拟机。

更新系统

我们强烈建议您在系统上安装任何新软件包之前升级所有可用的存储库和软件包。执行以下命令,它会为您完成工作。

sudo apt-get update

安装Puppet Bolt

由于它是无代理的,因此您不需要在每个服务器上安装它。只需在作为主服务器的一台服务器上安装,这台服务器可以用于连接到远程服务器。Bolt是一个多平台工具,因此您可以在喜欢的操作系统上安装它。

  • Windows
  • macOS
  • RHEL
  • CentOS
  • Fedora
  • Debian
  • Ubuntu

有关最新可用版本,请参见official site。让我们在Ubuntu上安装它。

运行以下命令获取软件包。

sudo wget https://apt.puppet.com/puppet6-release-bionic.deb

然后,使用Debian软件包管理器命令安装上述下载的软件包。

sudo dpkg -i puppet6-release-bionic.deb

再次使用以下命令更新系统。

sudo apt-get update

最后,执行以下命令安装Bolt。

sudo apt-get install puppet-bolt

您已成功在服务器上安装了Puppet Bolt。

需要在要通过Bolt管理的所有服务器上执行此操作。

如前所述,Bolt通过SSH密钥连接到另一台服务器,因此我假设您已经在服务器之间交换了密钥。如果没有,请参考此链接进行操作guide to setup SSH key exchange

让我们连接到远程服务器并运行bolt命令。

要在单个节点上运行命令,请使用以下命令。

bolt command run  --nodes 

请将COMMAND替换为要执行的命令,将NODE替换为远程服务器的主机名或IP。类似地,您也可以在多个节点上运行命令。

bolt command run  -n 

如果需要将密码身份验证添加到命令中,则可以使用标志进行添加。

bolt command run  -n  -u  -p 

假设您想查看系统运行了多长时间,那么您需要使用`uptime`命令,像这样:

bolt command run uptime --nodes 35.185.68.71,35.231.9.135

您应该会看到以下输出。

sajid@Sajid-PC:~$ bolt command run uptime --nodes 35.185.68.71,35.231.9.135
Started on 35.185.68.71...
Started on 35.231.9.135...
Finished on 35.231.9.135:
STDOUT:
04:57:48 up 7 min, 0 users, load average: 0.00, 0.03, 0.02
Finished on 35.185.68.71:
STDOUT:
04:57:48 up 9 min, 0 users, load average: 0.00, 0.00, 0.00
Successful on 2 nodes: 35.185.68.71,35.231.9.135
Ran on 2 nodes in 5.96 seconds

可能你想运行一些包含空格的命令,所以你需要将命令用单引号括起来:

sajid@Sajid-PC:~$ bolt command run 'echo $HOME' --nodes 35.185.68.71,35.231.9.135
Started on 35.185.68.71...
Started on 35.231.9.135...
Finished on 35.231.9.135:
STDOUT:
/home/sajid
Finished on 35.185.68.71:
STDOUT:
/home/sajid
Successful on 2 nodes: 35.185.68.71,35.231.9.135
Ran on 2 nodes in 6.11 seconds

运行脚本

我们都有一套经常使用的脚本。

Bolt使得重复使用这些脚本变得容易,而无需进行任何修改,并可以同时在更多节点上运行它们。你只需要指定要运行的脚本的名称和路径。

bolt script run  --nodes 
bolt script run /home/sajid/Desktop/samplescript.sh --nodes 35.185.68.71,35.231.9.135

你应该看到类似这样的输出:

sajid@Sajid-PC:/$ bolt script run /home/sajid/Desktop/samplescript.sh --nodes 35.185.68.71,35.231.9.135
Started on 35.185.68.71...
Started on 35.231.9.135...
Finished on 35.231.9.135:
STDOUT:
Hello World
Finished on 35.185.68.71:
STDOUT:
Hello World
Successful on 2 nodes: 35.185.68.71,35.231.9.135
Ran on 2 nodes in 15.18 seconds

只要远程系统上安装了适当的解释器,你可以运行任何语言的脚本。

使用任务进行自动化

任务是一组在远程机器上运行的操作。

任务可以用任何在远程节点上运行的语言编写。任务使得重复使用和共享脚本变得容易,并帮助你实现自动化。你可以从Puppet Forge下载一些现有的任务,并根据需要上传你的任务。

例如,如果你想检查vim包的状态,你可以使用以下命令。

bolt task run package action=status name=vim --nodes 35.185.68.71,35.231.9.135

你将看到类似这样的输出:

sajid@Sajid-PC:~$ bolt task run package action=status name=vim --nodes 35.185.68.71,35.231.9.135
Started on 35.185.68.71...
Started on 35.231.9.135...
Finished on 35.185.68.71:
{
"status": "install ok installed",
"version": "2:7.4.1689-3ubuntu1.3"
}
Finished on 35.231.9.135:
{
"status": "install ok installed",
"version": "2:7.4.1689-3ubuntu1.3"
}
Successful on 2 nodes: 35.185.68.71,35.231.9.135
Ran on 2 nodes in 19.15 seconds

如果你发现vim包未安装,则可以使用以下命令进行安装。

bolt task run package action=install name=vim --nodes 35.185.68.71,35.231.9.135

你可以运行计划来设置nodejs并将其连接到负载均衡器,你可以通过将已安装Bolt的目标节点与Puppet Bolt结合使用来完成此操作。

bolt plan run nodejs::myplan load_balancer=lb.myorg.com

你可以使用Puppet Bolt在远程节点上复制文件。你可以使用`bolt file upload`命令将文件或目录简单地上传到远程节点。你只需要指定本地机器上文件的路径和远程节点上的目标。

bolt file upload   --nodes 

你可以同时在多个远程节点上上传文件,像这样:

bolt file upload sample_file.txt /tmp/remotesample_file.txt --nodes 35.185.68.71,35.231.9.135

如你所见,有很多可能性。

创建清单文件

Bolt允许您创建一个存储有关节点、任务和配置信息的清单文件。您可以在组中指定不同的节点,默认情况下,清单文件存储在项目目录下的inventory.yaml中。以下是创建清单文件的示例。

---
# 示例清单文件
groups:
- name: 节点组
nodes:
- node1
- node2
- node3
config:
ssh:
host-key-check: false
ssl: false

您可以将这些node1、node2、node3替换为实际的节点域名或节点的IP地址。现在,您可以将此清单文件添加到bolt命令中,以在指定的节点上执行任务。

bolt command run  --inventoryfile ./inventory.yaml

结论

我希望现在您对Bolt有了一定的了解,以及它如何帮助您进行自动化。您可能还对学习Puppet感兴趣。

类似文章