如何在 Debian 12 上安装 SaltStack IT 自动化框架
本教程适用于这些操作系统版本
- Debian 12(书虫)
- Debian 11(靶心)
在此页面上
- 先决条件
- 设置/etc/hosts文件
- 添加 SaltStack 存储库
- 设置 UFW
- 安装盐大师
- 安装 Salt Minion
- 将 Salt Minion 添加到 Salt Master
- 通过 SaltStack 运行任意命令
- 为 LAMP 堆栈安装创建盐状态
- 结论
Salt 或 Saltstack 是一个用 Python 编写的开源 IT 自动化框架。它允许管理员直接在远程多台机器上执行命令。
Salt采用Master和Minion架构设计。 Salt master是Salt配置管理的中央控制器,Minions是Salt master管理的服务器,或者你将minions命名为目标服务器。
本指南将向您展示如何在 Debian 12 服务器上安装 SaltStack。我们将向您展示如何安装 Salt Master 和 Minion,如何通过 Salt 运行任意命令,然后创建用于安装 LAMP Stack 的第一个 Salt 状态。
先决条件
在开始之前,请确保您具备以下条件:
- 两个或三个 Debian 12 服务器 - 在此示例中,我们将使用 192.168.5.15 上的 master 服务器和 192.168.5.15 上的 minion1 服务器>192.168.5.21。
- 具有管理员权限的非 root 用户。
设置/etc/hosts文件
在本节中,您将设置 /etc/hosts 文件,以便每个服务器都可以通过主机名进行连接,这比使用 IP 地址更容易。
使用以下 Nano 编辑器打开 /etc/hosts 文件。
sudo nano /etc/hosts
将详细主机和 IP 地址插入文件中。确保使用您的信息更改 IP 地址和主机名。
192.168.5.15 master
192.168.5.21 minion1
完成后保存并退出文件。
添加 SaltStack 存储库
设置/etc/hosts 文件后,您必须将SaltStack 存储库添加到所有Debian 服务器。 SaltStack 为大多数 Linux 发行版提供了官方存储库,包括最新的 Debian 12。
首先,使用以下命令创建一个新目录 /etc/apt/keyrings。
mkdir /etc/apt/keyrings
使用以下命令下载 SaltStack 存储库的 GPG 密钥。
sudo curl -fsSL -o /etc/apt/keyrings/salt-archive-keyring-2023.gpg https://repo.saltproject.io/salt/py3/debian/12/amd64/SALT-PROJECT-GPG-PUBKEY-2023.gpg
下载 GPG 密钥后,使用以下命令添加 SaltStack 存储库。
echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.gpg arch=amd64] https://repo.saltproject.io/salt/py3/debian/12/amd64/latest bookworm main" | sudo tee /etc/apt/sources.list.d/salt.list
现在更新并刷新您的 Debian 软件包索引。
sudo apt update
您可以在下面看到添加到 Debian 服务器的 SaltStack 存储库。
设置 UFW
在此示例中,您将在 Debian 服务器上设置并启用 UFW(简单防火墙)。因此,您将安装 UFW,打开 SSH 端口,然后启动并启用 UFW。
使用以下命令在 Debian 系统上安装 UFW。
sudo apt install ufw -y
安装 UFW 后,执行以下命令以启用 OpenSSH 应用程序配置文件。您将看到添加的输出规则。
sudo ufw allow OpenSSH
现在使用以下命令启用 UFW。输入 y 确认、启动并启用 UFW。
sudo ufw enable
启动并启用 UFW 后,您将收到输出“防火墙已激活...”。
安装盐大师
完成上面的任务后,您就可以安装 SaltStack 了。您将在主服务器上安装并配置Salt Master。
在 master 服务器上,运行以下命令来安装 salt-master 软件包。输入 Y 确认安装。
sudo apt install salt-master
安装完成后,使用下面的 nano 编辑器命令打开默认的 Salt Master 配置 /etc/salt/master。
sudo nano /etc/salt/master
使用您的本地 IP 地址更改默认接口。在此示例中,主服务器 IP 地址为 192.168.5.15。
interface: 192.168.5.15
保存文件并在完成后退出。
现在运行以下命令来重新启动 salt-master 服务并应用您的更改。
sudo systemctl restart salt-master
然后验证 salt-master 服务以确保该服务正在运行。
sudo systemctl status salt-master
如果正在运行,您将看到诸如活动(正在运行)之类的输出。
接下来,运行以下命令打开 Salt Master 将使用的 TCP 端口 4505 和 4506。
sudo ufw allow 4505,4506/tcp
最后,使用以下命令检查主服务器中的端口列表。确保允许访问端口 4505 和 4506。
sudo ufw status
安装 Salt Minion
现在您已经配置了 Salt Master,继续在 minion1 服务器上配置 Salt Manion。您将安装 salt-minion,然后将其配置为连接到 Salt Master 服务器。
使用以下命令将 salt-minion 包安装到 minion1 服务器。输入 Y 确认安装。
sudo apt install salt-minion
安装完成后,使用 nano 编辑器命令打开 Salt Minion 配置 /etc/salt/minion。
sudo nano /etc/salt/minion
将您的 Salt Master IP 地址输入到 master 参数中,如下所示:
master: 192.168.5.15
保存文件并退出编辑器。
接下来,运行以下命令重新启动 salt-minion 服务并应用更改。
sudo systemctl restart salt-minion
最后,验证 salt-minion 服务以确保该服务正在运行。 Salt Minion 将自动注册到 Salt Master 服务器。
sudo systemctl status salt-minion
确保 salt-minion 服务正在运行,如下所示:
将 Salt Minion 添加到 Salt Master
配置 Salt Minion 后,您仍然需要接受来自 Minion 服务器的注册密钥。
首先,运行以下命令来验证主服务器上的列表密钥。
salt-key --finger-all
如果一切顺利,您可以看到 minion1 服务器或 Salt Minion 服务器的密钥。
现在运行以下命令以接受 minion1 服务器的密钥。输入 Y 确认并接受密钥。
salt-key -a minion1
接下来,再次验证 minion1 服务器上的列表密钥。您将看到 接受的密钥 部分中列出的 minion1 服务器的密钥。
salt-key --finger-all
现在您可以使用命令测试与 Salt Minion 服务器的连接。您可以使用主机名指定目标服务器,也可以使用“*”字符来定位所有可用的 Salt Minion 服务器。
salt minion1 test.ping
salt * test.ping
如果与 Salt Minion 的连接成功,您将看到输出“True”。
最后,使用以下命令验证 Salt 版本。
salt minion1 test.version
在此示例中,安装了Salt Minion 3007.0。
通过 SaltStack 运行任意命令
配置完所有内容后,您将通过从主服务器在 minion1 服务器上运行任意命令来测试 SaltStack 安装。
运行以下命令来更新 Minion 服务器的存储库包索引。
salt '*' pkg.refresh_db
现在运行以下命令以在目标服务器上打包更新。
salt '*' pkg.list_upgrades
接下来,运行以下命令以显示有关 apache2 包的信息。
salt '*' pkg.show apache2
要检查 Minion 服务器上正在运行的服务,请运行以下命令。
salt '*' service.get_running
salt '*' service.execs
为 LAMP 堆栈安装创建盐状态
在本节中,您将了解如何创建第一个 SaltState 以将 LAMP Stack(Apache、MariaDB 和 PHP)安装到 minion1 服务器。
首先,使用以下命令创建一个新目录 /srv/salt/lamp。
mkdir -p /srv/salt/lamp
现在使用以下 Nano 编辑器创建一个新的 Salt 状态初始化文件 /srv/salt/lamp/init.sls。
nano /srv/salt/lamp/init.sls
将以下配置添加到文件中。这样,您将在目标服务器上安装 LAMP Stack(Apache、MariaDB 和 PHP)。
lamp_stack:
pkg.installed:
- pkgs:
- apache2
- mariadb-server
- php
- libapache2-mod-php
apache2:
service.running:
- enable: True
- reload: True
mariadb:
service.running:
- enable: True
- reload: True
保存文件并退出。
现在运行以下命令来根据 Salt Minion 验证您的 Salt 状态配置。确保您没有任何错误。
sudo salt * state.show_sls lamp
接下来,运行以下命令将 Salt 状态“lamp”应用到 minion1 服务器。
sudo salt minion1 state.apply lamp
该过程完成后,您将得到以下输出:
最后,运行以下命令来验证 minion1 服务器上的 Apache 和 MariaDB 服务。
salt '*' service.get_running
确保 apache2 和 mariadb 服务都在运行。
结论
恭喜!您已在 Debian 12 服务器上完成 SaltStack(Salt Master 和 Minion)的安装。您还学习了如何对 Minion 服务器运行任意命令,并创建用于安装 LAMP Stack(Apache2、MariaDB 和 PHP)的第一个 Salt 状态。