离线安装
Module:
Pigsty 的 标准安装 流程需要访问互联网,然而生产环境的数据库服务器通常是与互联网隔离的。
因此 Pigsty 提供了离线安装的功能,允许您在没有互联网访问的环境中,同样完成安装与部署。
如果您有互联网访问,提前下载好预制的 离线软件包 也可以帮助您加速安装的过程,并增强安装过程的确定性与可靠性。
简短版本
在执行 标准安装 前首先下载好 Pigsty 软件包与 离线软件包 。
VERSION=v2.6.0 # Pigsty 版本号
DISTRO=el8 # 离线包系统版本可选值:el7, el8, el9, debian11, debian12, ubuntu20, ubuntu22
curl "https://get.pigsty.cc/${VERSION}/pigsty-${VERSION}.tgz" -o ~/pigsty.tgz # 软件包,通常放置于 ~/pigsty.tgz
curl "https://get.pigsty.cc/${VERSION}/pigsty-pkg-${VERSION}.${distro}.x86_64.tgz" -o /tmp/pkg.tgz # 离线包,默认放置于 /tmp/pkg.tgz
上传 Pigsty 软件包与离线软件包至管理节点,将离线包放置于 /tmp/pkg.tgz
,然后通过 bootstrap
过程启用。
./bootstrap # 变体:如果本机有互联网访问,使用 ./bootstrap -y 可自动下载对应系统的离线软件包
# 继续后面的配置与安装任务
./configure # 执行环境检测,并生成相应的推荐配置文件,如果你知道如何配置 Pigsty 可以跳过
./install.yml # 根据生成的配置文件开始在当前节点上执行安装,使用离线安装包大概需要10分钟完成
离线安装基本原理
Pigsty 会在安装过程中从互联网上游的 yum/apt 软件仓库,下载所需的 rpm/deb 包并构建一个本地软件源(默认位于 /www/pigsty
)。
本地软件源由 Nginx 对外提供服务,后续无论是本机还是其他节点,都默认会使用本地软件源进行安装,而不再需要访问互联网。
使用本地软件源有三个主要好处:
- 本地软件源可以避免重复的下载请求与流量消耗,显著加速安装速度并提高安装过程的可靠性。
- 构建本地软件源会对当前可用软件版本取快照,确保部署环境内节点所安装软件版本的一致性。
- 构建好的本地软件源可以整体打包,复制到安装有相同操作系统的隔离环境中用于离线安装。
离线安装的原理是:首先在一台具有相同操作系统,且有互联网访问的节点上,完成 标准安装 流程。
然后对构建好的本地软件源(默认位于 /www/pigsty
)取快照并打包,制作 成为 离线软件包,供安装有同样操作系统的生产环境网络隔离节点使用。
当 Pigsty 执行 安装 时,如果发现本地软件源已经存在,就会进入离线安装模式。 在此模式下,Pigsty 将跳过从互联网下载并构建本地软件源的过程,使用本地软件源完成整个安装过程,期间无需互联网访问。
进入离线安装模式的判定标准
判定本地软件源存在的标准是:默认位于 /www/pigsty/repo_complete
的标记文件存在。
这个标记文件会在标准安装过程中,下载完成后自动生成,说明这是一个可用的本地软件源。
删除本地软件源的 repo_complete
标记文件后,安装时将重新从上游下载 缺失的 软件包。
离线软件包
离线软件包是一个使用 gzip
与 tar
制作的标准 Tarball,以 .tgz
后缀结尾。通常放置于 /tmp/pkg.tgz
路径,并解压至 /www/pigsty
使用。
Pigsty 为 支持 的操作系统发行版提供了预制离线软件包。如果您使用相同的操作系统版本,可以开箱即用。
https://github.com/Vonng/pigsty/releases/download/v2.6.0/pigsty-pkg-v2.6.0.el7.x86_64.tgz # EL 7.9
https://github.com/Vonng/pigsty/releases/download/v2.6.0/pigsty-pkg-v2.6.0.el8.x86_64.tgz # EL 8.9
https://github.com/Vonng/pigsty/releases/download/v2.6.0/pigsty-pkg-v2.6.0.el9.x86_64.tgz # EL 9.3
https://github.com/Vonng/pigsty/releases/download/v2.6.0/pigsty-pkg-v2.6.0.debian11.x86_64.tgz # Debian 11.8
https://github.com/Vonng/pigsty/releases/download/v2.6.0/pigsty-pkg-v2.6.0.debian12.x86_64.tgz # Debian 12.4
https://github.com/Vonng/pigsty/releases/download/v2.6.0/pigsty-pkg-v2.6.0.ubuntu20.x86_64.tgz # Ubuntu 20.04.6
https://github.com/Vonng/pigsty/releases/download/v2.6.0/pigsty-pkg-v2.6.0.ubuntu22.x86_64.tgz # Ubuntu 22.04.3
https://get.pigsty.cc/${VERSION}/pigsty-pkg-v2.6.0.el7.x86_64.tgz # EL 7.9
https://get.pigsty.cc/${VERSION}/pigsty-pkg-v2.6.0.el8.x86_64.tgz # EL 8.9
https://get.pigsty.cc/${VERSION}/pigsty-pkg-v2.6.0.el9.x86_64.tgz # EL 9.3
https://get.pigsty.cc/${VERSION}/pigsty-pkg-v2.6.0.debian11.x86_64.tgz # Debian 11.8
https://get.pigsty.cc/${VERSION}/pigsty-pkg-v2.6.0.debian12.x86_64.tgz # Debian 12.4
https://get.pigsty.cc/${VERSION}/pigsty-pkg-v2.6.0.ubuntu20.x86_64.tgz # Ubuntu 20.04.6
https://get.pigsty.cc/${VERSION}/pigsty-pkg-v2.6.0.ubuntu22.x86_64.tgz # Ubuntu 22.04.3
离线软件包的适用系统版本
使用离线软件包安装时,请务必确保 OS 大版本精确匹配,尽可能确保系统小版本一致或尽可能接近。
OS 小版本不匹配的情况下通常也可以成功进行离线安装,但有概率出现部分软件包 依赖缺失或冲突。
Bootstrap
Ansible 是 Pigsty 的核心依赖,离线安装首先需要解决如何在没有互联网访问或本地源的情况下,离线安装 Ansible 的问题。
Pigsty 的离线软件包中默认已经包含了 ansible
及其依赖,从离线软件包中提取并安装 ansible
的这一过程,称为 Bootstrap。
Bootstrap 过程的逻辑
- 检查安装的前提条件是否满足(操作系统,芯片架构,内核)
- 检查本地离线安装包(
/tmp/pkg.tgz
)是否存在?
- 是 -> 解压到
/www/pigsty
并配置本地FS软件源启用它。 - 否 -> 进一步决定是否从互联网下载离线软件包?
- 是 -> 从 GitHub 或 CDN 下载离线软件包并解压
- 否 -> 是否添加操作系统基础的上游源地址以供从互联网下载 ?
- 是 -> 根据地区与操作系统版本写入对应的上游源:
/etc/yum.repos.d/
或/etc/apt/source.list.d
- 否 -> 用户自己搞定,或者当前系统的默认配置就带有 Ansible
- 是 -> 根据地区与操作系统版本写入对应的上游源:
- 现在,我们有了一个可用的本地软件源,可用来安装 Pigsty 所需的软件包,特别是 Ansible。
- 优先级顺序: 本地的
pkg.tgz
> 下载的pkg.tgz
> 原始上游 > 默认配置
- 从上一步配置的软件源中,安装一些基本的重要软件,不同版本的软件略有不同:
- el7:
ansible createrepo_c unzip wget yum-utils sshpass
- el8:
ansible python3-jmespath python3.11-jmespath createrepo_c unzip wget dnf-utils sshpass modulemd-tools
- el9:
ansible python3-jmespath python3.11-jmespath createrepo_c unzip wget dnf-utils sshpass modulemd-tools
- ubuntu/debian:
ansible python3-jmespath dpkg-dev unzip wget sshpass acl
- el7:
- 检查
ansible
是否成功安装。
bootstrap
脚本会帮助您自动解压位于 /tmp/pkg.tgz
的离线软件包,向节点添加并启用本地源,并安装 Ansible 及其依赖。
首先将离线软件包拷贝至生产环境管理节点上,并放置于 /tmp/pkg.tgz
路径下备用,然后执行 bootstrap
命令即可:
./bootstrap # 解压 /tmp/pkg.tgz,创建并启用本地软件源,然后从中安装 Ansible
从离线软件包本地 Bootstrap 的样例输出
如果离线软件包存在于 /tmp/pkg.tgz
, bootstrap 会直接使用它:
bootstrap pigsty v2.6.0 begin
[ OK ] region = china
[ OK ] kernel = Linux
[ OK ] machine = x86_64
[ OK ] release = 7.9.2009
[ OK ] sudo = vagrant ok
[ OK ] cache = /tmp/pkg.tgz exists
[ OK ] repo = extract from /tmp/pkg.tgz
[ OK ] repo file = use /etc/yum.repos.d/pigsty-local.repo
[ OK ] repo cache = created
[ OK ] install el7 utils
....(yum install ansible output)
[ OK ] ansible = ansible 2.9.27
[ OK ] boostrap pigsty complete
proceed with ./configure
如果您的环境有互联网访问,那么可以使用 bootstrap
的变体:
./bootstrap # 如果 /tmp/pkg.tgz 不存在,添加全球/中国/欧洲的仓库镜像并尝试在线安装 Ansible
./bootstrap -y # 如果 /tmp/pkg.tgz 不存在,从互联网下载预先制作好的离线软件包
从互联网下载离线软件包,在线 Bootstrap 的样例输出
从 Github / CDN 下载 pkg.tgz
并解压使用:
bootstrap pigsty v2.6.0 begin
[ OK ] region = china
[ OK ] kernel = Linux
[ OK ] machine = x86_64
[ OK ] release = 7.9.2009
[ OK ] sudo = vagrant ok
[ IN ] Cache /tmp/pkg.tgz not exists, download? (y/n):
=> y
[ OK ] download from Github https://get.pigsty.cc/v2.6.0/pigsty-pkg-v2.6.0.el7.x86_64.tgz to /tmp/pkg.tgz
....
[ OK ] repo = extract from /tmp/pkg.tgz
[ OK ] repo file = use /etc/yum.repos.d/pigsty-local.repo
[ OK ] repo cache = created
[ OK ] install el7 utils
...... (yum install createrepo_c sshpass unzip output)
==================================================================================================================
Package Arch Version Repository Size
==================================================================================================================
Installing:
createrepo_c x86_64 0.10.0-20.el7 pigsty-local 65 k
sshpass x86_64 1.06-2.el7 pigsty-local 21 k
unzip x86_64 6.0-24.el7_9 pigsty-local 172 k
Installing for dependencies:
createrepo_c-libs x86_64 0.10.0-20.el7 pigsty-local 89 k
Transaction Summary
==================================================================================================================
...... (yum install ansible output)
==================================================================================================================
Package Arch Version Repository Size
==================================================================================================================
Installing:
ansible noarch 2.9.27-1.el7 pigsty-local 17 M
Installing for dependencies:
PyYAML x86_64 3.10-11.el7 pigsty-local 153 k
libyaml x86_64 0.1.4-11.el7_0 pigsty-local 55 k
python-babel noarch 0.9.6-8.el7 pigsty-local 1.4 M
python-backports x86_64 1.0-8.el7 pigsty-local 5.8 k
python-backports-ssl_match_hostname noarch 3.5.0.1-1.el7 pigsty-local 13 k
python-cffi x86_64 1.6.0-5.el7 pigsty-local 218 k
python-enum34 noarch 1.0.4-1.el7 pigsty-local 52 k
python-idna noarch 2.4-1.el7 pigsty-local 94 k
python-ipaddress noarch 1.0.16-2.el7 pigsty-local 34 k
python-jinja2 noarch 2.7.2-4.el7 pigsty-local 519 k
python-markupsafe x86_64 0.11-10.el7 pigsty-local 25 k
python-paramiko noarch 2.1.1-9.el7 pigsty-local 269 k
python-ply noarch 3.4-11.el7 pigsty-local 123 k
python-pycparser noarch 2.14-1.el7 pigsty-local 104 k
python-setuptools noarch 0.9.8-7.el7 pigsty-local 397 k
python-six noarch 1.9.0-2.el7 pigsty-local 29 k
python2-cryptography x86_64 1.7.2-2.el7 pigsty-local 502 k
python2-httplib2 noarch 0.18.1-3.el7 pigsty-local 125 k
python2-jmespath noarch 0.9.4-2.el7 pigsty-local 41 k
python2-pyasn1 noarch 0.1.9-7.el7 pigsty-local 100 k
Transaction Summary
==================================================================================================================
...
Complete!
[ OK ] ansible = ansible 2.9.27
[ OK ] boostrap pigsty complete
proceed with ./configure
制作离线软件包
Pigsty 提供了制作离线软件包的脚本 bin/cache
。默认会将 /www/pigsty
目录压缩打包,放置于 /tmp/pkg.tgz
下。
bin/cache [version=v2.6.0]
[pkg_path=/tmp/pkg.tgz]
[repo_dir=/www/pigsty]
制作完成后,将其拷贝至生产环境管理节点,参考 bootstrap
过程使用即可,您也可以手工完成这一过程:
sudo rm -rf /www/pigsty # 谨慎清理先前遗留软件
sudo tar -xf /tmp/pkg.tgz -C /www # 解压离线软件包至目录
制作离线软件安装包的样例输出
例如,在标准安装完成后的 Ubuntu 22.04 系统上执行 bin/cache
脚本,即可创建离线软件包(/tmp/pkg.tgz
)。
vagrant@ubuntu22:~/pigsty$ bin/cache
[ OK ] create offline package on ubuntu22
[ OK ] pkg type = deb
[ OK ] repo dir = /www/pigsty
[ OK ] copy /www/pigsty to /tmp/pigsty-build/pigsty
[ OK ] grafana plugins = found, overwrite /tmp/pigsty-build/pigsty/plugins.tgz
knightss27-weathermap-panel marcusolsson-dynamictext-panel marcusolsson-json-datasource marcusolsson-treemap-panel volkovlabs-form-panel volkovlabs-image-panel
marcusolsson-calendar-panel marcusolsson-hourly-heatmap-panel marcusolsson-static-datasource volkovlabs-echarts-panel volkovlabs-grapi-datasource volkovlabs-variable-panel
[ OK ] ubuntu 22 = no packages needs to be cleansed
[ OK ] package = making pigsty-pkg-v2.6.0.ubuntu22.x86_64.tgz
pigsty/
pigsty/liblua5.2-0_5.2.4-2_amd64.deb
.................. # 许多软件包
pigsty/distro-info-data_0.52ubuntu0.6_all.deb
[ OK ] package = finish pigsty-pkg-v2.6.0.ubuntu22.x86_64.tgz 48f9cb2dd2cabb61b115bfe2ac9e002d
-rw-rw-r-- 1 vagrant vagrant 1.2G Feb 29 03:09 /tmp/pkg.tgz
scp ubuntu22:/tmp/pkg.tgz v2.6.0/pigsty-pkg-v2.6.0.ubuntu22.x86_64.tgz
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.