Postgres部署脚本是一种简单的方式来部署PostgreSQL、EDB Postgres
项目描述
入门
edb-deployment
工具是一种简单的方式来配置云资源并部署 PostgreSQL、EDB Postgres Advanced Server 和工具(高可用性、备份/恢复、监控、连接池)。edb-deployment
还可以用于在现有基础设施(如物理服务器(裸机)或本地虚拟机)上部署 Postgres 架构。
支持的云提供商是 AWS、Azure 和 Google Cloud。
edb-deployment
帮助用户部署 Postgres 参考架构。参考架构的列表和详细信息可以在此处找到。
edb-deployment
是一个开源工具,并由 EDB 支持团队非官方支持。它由本仓库的 GitHub 会员维护和支持。请通过提交问题和提供拉取请求来提供反馈。
在开始深入研究此存储库之前,最好熟悉特定云(AWS、Azure 和 Google Cloud)部署过程中的步骤。
先决条件
edb-deployment
依赖于以下组件。在使用之前,请安装以下组件。
- Python 3
pip3
第三方先决条件
-
最新版本的 云 CLI 或 SDK(AWS、Azure 或 Google Cloud)
根据云提供商,在系统上安装以下内容的最新版本:AWS CLI、Azure CLI 或 Google Cloud SDK。
-
Terraform >= 1.3.6
-
Ansible >= 2.10.8
-
AWS CLI >= 2.0.45
-
Azure CLI >= 2.23.0
-
Google Cloud CLI >= 329.0.0
为了帮助安装上述第三方先决条件,edb-deployment
提供了适用于 Linux 和 Darwin(macOS)的 setup
子命令。请参阅先决条件安装部分。
安装
从源代码
使用 pip3
命令进行安装。一旦代码被下载(无论是通过克隆存储库还是下载发布版),请转到创建的文件夹并运行 pip3 install
命令。
$ cd postgres-deployment
$ sudo pip3 install . --upgrade
从 PyPI
$ sudo pip3 install edb-deployment
通过运行以下命令确保工具已正确安装:
$ edb-deployment --version
Shell 自动完成
edb-deployment
支持使用 tab
键的命令行自动完成。
支持的 shell 是 bash
和 zsh
。
要启用当前会话中的自动完成,必须运行以下命令:
$ eval "$(register-python-argcomplete edb-deployment)"
要为所有会话启用自动完成,必须将上述命令添加到您的 ~/.bashrc
文件或 ~/.zshrc
文件末尾,具体取决于您使用的 shell。
先决条件安装
为了简化第三方先决条件工具(如 aws
、terraform
、ansible
等)的安装,edb-deployment
提供了 setup
子命令。
要执行 setup
子命令,需要以下包:gcc
(仅限 Linux)、python3-devel
(仅限 Linux)、unzip
、wget
、tar
。这些包应通过常规包管理器(dnf
、apt
、brew
等)安装。
针对 Debian 用户:必须存在 libffi-dev
包。
最后,必须以 root
权限安装 Python virtualenv
。
$ sudo pip3 install virtualenv
先决条件自动化安装
$ edb-deployment <CLOUD_VENDOR> setup
用法
每个新的部署将在一个专用命名空间下完成,这是 <PROJECT_NAME>
。
edb-deployment
命令行界面功能通过子命令实现。每个子命令可以像这样执行
$ edb-deployment <CLOUD_VENDOR> <SUB_COMMAND> [<PROJECT_NAME>]
云提供商列表
aws
:Amazon Web Servicesaws-pot
:在 AWS 云上的 EDB POT(技术证明)aws-rds
:Amazon Web Services RDS for PostgreSQLaws-rds-aurora
:Amazon Auroraazure
:Microsoft Azure Cloudazure-pot
:在 Azure 云上的 EDB POT(技术证明)azure-db
:Microsoft Azure Databasegcloud
:Google Cloudgcloud-pot
:在 Google Cloud 上的 EDB POT(技术证明)gcloud-sql
:Google Cloud SQL for PostgreSQL
本地测试
baremetal
:裸金属服务器和虚拟机vmware
:VMWare Workstationvirtualbox
:Virtualbox
子命令
configure
:新项目初始化和配置provision
:云资源供应destroy
:云资源销毁deploy
:Postgres 和工具部署show
:显示配置display
:显示项目清单passwords
:显示项目密码list
:列出项目specs
:显示云提供商默认规范logs
:显示项目日志remove
:删除项目
使用方法
新项目的部署应遵循以下工作流程
配置云凭证
此步骤取决于目标云提供商。
如果已使用setup
子命令安装了云工具,建议更新PATH
环境变量以包含工具二进制位置
$ export PATH=$PATH:$HOME/.edb-cloud-tools/bin
AWS凭证配置
AWS凭证配置将通过aws
工具完成。对于此步骤,我们需要获取您的AWS访问密钥ID和AWS秘密访问密钥。有关Amazon访问密钥管理的更多信息,请访问官方文档页面。
运行以下命令并输入访问密钥ID和秘密访问密钥
$ aws configure
Azure凭证配置
可以使用az
工具通过以下命令实现Azure云凭证配置
$ az login --use-device-code
GCloud凭证配置
GCloud凭证配置比其他云提供商的步骤更多。GCloud项目ID是必需的。
- 使用您的电子邮件地址登录
$ gcloud auth login <LOGIN_EMAIL> --no-launch-browser
- 在浏览器中打开链接并复制提供的验证码。
- 项目配置
$ gcloud config set project <PROJECT_ID>
- 要查找服务的IAM账户,请输入以下命令以列出服务账户
$ gcloud iam service-accounts list
- 最后,要创建和下载新的服务账户密钥
$ gcloud iam service-accounts keys create ~/accounts.json --iam-account=<IAM_ACCOUNT>
必须保留JSON文件$HOME/accounts.json
,并且edb-deployment
将需要它。
项目配置
一旦配置了云提供商的凭证,就可以进行项目配置步骤。
云提供商规范
edb-deployment
为要配置的云资源提供默认配置值,例如实例类型、磁盘大小、操作系统镜像、附加卷等。
要更改这些配置值,首先需要使用以下命令导出默认值
$ edb-deployment <CLOUD_VENDOR> specs > my_configuration.json
在裸金属服务器上部署时,必须通过规范执行IP地址和SSH用户配置
$ edb-deployment baremetal specs --reference-architecture EDB-RA-1 > baremetal-edb-ra-1.json
baremetal-edb-ra-1.json
文件将包含
{
"ssh_user": null,
"pg_data": null,
"pg_wal": null,
"postgres_server_1": {
"name": "pg1",
"public_ip": null,
"private_ip": null
},
"pem_server_1": {
"name": "pem1",
"public_ip": null,
"private_ip": null
},
"backup_server_1": {
"name": "backup1",
"public_ip": null,
"private_ip": null
}
}
然后,您可以编辑并更新存储在JSON文件中的资源配置。
项目初始化
项目初始化将通过configure
子命令完成
$ edb-deployment <CLOUD_VENDOR> configure <PROJECT_NAME> \
-a <REFERENCE_ARCHITECTURE_CODE> \
-o <OPERATING_SYSTEM> \
-t <PG_ENGINE_TYPE> \
-v <PG_VERSION> \
-u "<EDB_REPO_USERNAME>:<EDB_REPO_PASSWORD>" \
-r <CLOUD_REGION> \
-s my_configuration.json
注意
-
REFERENCE_ARCHITECTURE_CODE
参考架构代码名称。允许的值是:针对具有一个备份服务器和一个PEM监控服务器的单个Postgres节点部署的EDB-RA-1,针对具有基于法定多数的同步复制和自动故障转移的3个Postgres节点部署的EDB-RA-2,针对扩展EDB-RA-2以包含3个PgPoolII节点的EDB-RA-3,以及针对设置2层配置以进行OLTP工作负载基准测试的
HammerDB-TPROC-C
。默认:EDB-RA-1 -
OPERATING_SYSTEM
操作系统。允许的值是:CentOS7、RockyLinux8、RedHat7和RedHat8。默认:RockyLinux8
-
PG_ENGINE_TYPE
Postgres引擎类型。允许的值是:PG用于PostgreSQL,EPAS用于EDB Postgres Advanced Server。默认:PG
-
PG_VERSION
PostgreSQL或EPAS版本。允许的值是:11、12、13和14。默认:14
-
"EDB_REPO_USERNAME:EDB_REPO_PASSWORD"
EDB软件包仓库凭证。必需。
-
CLOUD_REGION
云提供商区域。默认值取决于云提供商。
有关更多详细信息,请使用
$ edb-deployment <CLOUD_VENDOR> configure --help
云资源配置
在项目配置完成后,我们可以继续进行云资源配置
$ edb-deployment <CLOUD_VENDOR> provision <PROJECT_NAME>
组件部署
最后,我们可以使用deploy
子命令部署组件
$ edb-deployment <CLOUD_VENDOR> deploy <PROJECT_NAME>
其他功能
项目列表
$ edb-deployment <CLOUD_VENDOR> list
执行Ansible预部署剧本
$ edb-deployment <CLOUD_VENDOR> deploy --pre-deploy-ansible pre_deploy_playbook.yml <PROJECT_NAME>
执行Ansible后部署剧本
$ edb-deployment <CLOUD_VENDOR> deploy --post-deploy-ansible post_deploy_playbook.yml <PROJECT_NAME>
显示项目清单
$ edb-deployment <CLOUD_VENDOR> display <PROJECT_NAME>
显示项目密码
$ edb-deployment <CLOUD_VENDOR> passwords <PROJECT_NAME>
云资源销毁
$ edb-deployment <CLOUD_VENDOR> destroy <PROJECT_NAME>
项目树删除
$ edb-deployment <CLOUD_VENDOR> remove <PROJECT_NAME>
打开与项目一个主机的SSH连接
$ edb-deployment <CLOUD_VENDOR> ssh <PROJECT_NAME> <NODE_NAME>
注意:可以通过执行display
子命令找到节点名称列表。可以是:epas1
、epas2
、pemserver1
等...
获取SSH密钥和ssh_config文件的副本。文件已复制到当前目录
$ edb-deployment <CLOUD_VENDOR> get_ssh_keys <PROJECT_NAME>
注意:此子命令仅适用于aws-pot
、azure-pot
和gcloud-pot
。
许可证
原始作品版权所有 2019-2020,EnterpriseDB公司
版权所有。
在满足以下条件的情况下,允许重新分发和使用源代码和二进制代码,无论是否修改
-
源代码重新分发必须保留上述版权声明、本条件列表和以下免责声明。
-
二进制形式重新分发必须复制上述版权声明、本条件列表和以下免责声明在随分发提供的文档和其他材料中。
-
未经具体事先书面许可,不得使用EnterpriseDB或其贡献者的名称认可或推广源自本软件的产品。
本软件由版权所有者和贡献者提供,“按原样”以及任何明示或暗示的保证,包括但不限于对适销性和针对特定目的的适用性的暗示保证均予以否认。在任何情况下,版权所有者或贡献者不应对任何直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论此类损害是由于何种原因造成的,以及基于何种责任理论,无论是合同、严格责任还是侵权(包括疏忽或其他)。
项目详情
edb-deployment-3.15.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c2ec0d0900e39f5ff95922d04c63b1d5cdefa7e922b3f12880f6bd2cdc8e4b3f |
|
MD5 | cbed2292cd9dfed644a1fc9e2f6b6cf0 |
|
BLAKE2b-256 | d9897ccd952ff678fde39007eeb1e197f472cb9d7f8c36245f8236dad470d122 |