↑ 关注“少安事务所”公众号,欢迎⭐收藏,不错过精彩内容~
前倾回顾
前面介绍了“光环”数据库的基本情况和安装办法。
-
哈喽,国产数据库!Halo DB! -
三步走,Halo DB 安装指引
以及 HaloDB 的 Oracle 和 MySQL 兼容模式:
-
HaloDB 的 Oracle 兼容模式 -
HaloDB 的 MySQL 兼容模式
★HaloDB是基于原生PG打造的新一代高性能安全自主可控全场景通用型统一数据库。 业内首次创造性的提出插件式内核架构设计,通过配置的方式,适配不同的应用场景,打造全场景覆盖的能力,满足企业大部分数据存储处理需求。从而消除数据孤岛,降低系统复杂度,保护企业既有投资,降低企业成本。同时支持x86、arm等异构平台之间的混合部署。
但有同学问,三步走还是太复杂,有没有更简单的安装方式。
答案是有的,《HaloDB产品吐槽群》群里提供了shell版本的一键安装脚本,留言带你进群。
言归正传。
本文将介绍另外一种快速部署的实现,编写 Ansible 脚本快速安装 HaloDB。
环境信息
本文实操环境为 CentOS 7.9 和 HaloDB 1.0.14
系统版本:
$ hostnamectl
Static hostname: centos7.shawnyan.cn
...
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.118.1.el7.x86_64
Architecture: x86-64
halo 安装包:
halo_14.el7.x86_64.build231130.tar.gz
Ansible 是什么
Ansible 是红帽转为企业运维涉及的一个开源的自动化平台,它允许系统管理员自动化云提供商、企业网络和数据中心的配置、部署、更新、监控和安全管理。
Ansible 使用SSH来管理节点,因此不需要在目标服务器上安装代理。Ansible 使用YAML语言编写剧本(playbooks),语法简单,易于理解和编写。
Ansible 拥有丰富的模块库,可以执行各种系统管理任务。Ansible 可以并行执行任务,同时安装多台机器,提高自动化效率,节约部署时间。
(几个Ansible和HaloDB的彩蛋)
-
tux
< TASK [Hello, HaloDB!] >
-----------------------
\
\
.--.
|o_o |
|:_/ |
// \ \
(| | )
/'\_ _/`\
\___)=(___/
-
elephant
< TASK [Hello, HaloDB!] >
-----------------------
\ /\ ___ /\
\ // \/ \/ \\
(( O O ))
\\ / \ //
\/ | | \/
| | | |
| | | |
| o |
| | | |
|m| |m|
-
dragon
< TASK [Hello, HaloDB!] >
-----------------------
\ / \ //\
\ |\___/| / \// \\
/0 0 \__ / // | \ \
/ / \/_/ // | \ \
@_^_@'/ \/_ // | \ \
//_^_/ \/_ // | \ \
( //) | \/// | \ \
( / /) _|_ / ) // | \ _\
( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-.
(( / / )) ,-{ _ `-.|.-~-. .~ `.
(( // / )) '/\ / ~-. _ .-~ .-~^-. \
(( /// )) `. { } / \ \
(( / )) .----~-.\ \-' .~ \ `. \^-.
///.----..> \ _ -~ `. ^-` ^-_
///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~
/.-~
如何使用 Ansible 快速部署 Halo
使用 Ansible 快速部署 HaloDB 数据库通常涉及以下步骤:
1. 安装Ansible
确保你的控制节点(运行Ansible的机器)上安装了Ansible。
yum install ansible python-psycopg2
ansible --version
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /bin/ansible
python version = 2.7.5 (default, Nov 14 2023, 16:14:06) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
2. 编写Playbook
创建一个名为 deploy_halo.yml
的 Ansible playbook 来定义部署步骤。
接下来分析一下 deploy_halo.yml 都包含哪些模块。
-
yum 模块
定义了一个变量packages,它包含一个列表,列表中包含要安装的软件包名称。
使用yum模块来安装HaloDB的依赖包。
yum:
name: "{{ packages }}"
vars:
packages:
- sysstat
- ...
-
user 模块
使用user模块创建halo系统用户,该用户用于管理halo数据库。
user:
name: halo
uid: 2024
group: halo
state: present
参数含义如下:
-
name: 要创建的用户的名称。 -
uid: 指定用户的用户ID。 -
group: 指定用户的主要组。 -
state: 指定期望的状态,present表示确保用户存在。
-
shell 模块
使用shell模块执行shell命令,这里用于解压软件包、复制文件和修改文件所有权。
- name: unpackge halo
shell: |
mkdir -p /opt/halo
chown -R halo:halo /opt/halo
-
command 模块
使用command模块执行命令,这里用于初始化和启动数据库。
- name: inin halo db
become_user: halo
become_flags: "-i"
command: pg_ctl init
参数含义如下:
-
become_user: 指定以哪个用户身份执行命令。 -
become_flags: 指定用户身份执行命令的标志,-i表示使用该用户环境变量。
-
postgresql_query 模块
postgresql_query:
db: halo0root
port: 1921
login_user: halo
query: SELECT version()
参数含义如下:
-
db: 指定要查询的数据库名称,这里指定为 halo0root。 -
port: 指定数据库服务监听的端口,halodb默认端口为1921。 -
login_user: 指定用于登录数据库的用户名。 -
query: 指定要执行的SQL查询,这里是查询halodb的版本。
3. 执行Playbook
运行playbook来自动化部署过程。
准备好了playbook,我们就可以运行脚本部署halodb,执行命令如下。
ansible-playbook deploy_halo.yml
安装日志输出如下:
Tue May 28 20:56:57 CST 2024
PLAY [Deploy HaloDB] *************************************************************************************************************************
...
TASK [start halo db] *************************************************************************************************************************
changed: [localhost]
TASK [query db version] **********************************************************************************************************************
ok: [localhost]
TASK [debug] *********************************************************************************************************************************
ok: [localhost] => {
"msg": {
"version": "羲和(Halo) 1.0.14.10 (231130) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit"
}
}
PLAY RECAP ***********************************************************************************************************************************
localhost : ok=11 changed=8 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Tue May 28 20:57:06 CST 2024
总结
到此,我们借助Ansible实现了快速部署并拉起Halo数据库,安装效率比纯手工提高了很多。
好了,这一部分内容先介绍到这里,如果你对HaloDB感兴趣,欢迎留言,带你进《HaloDB产品吐槽群》。
🌻 往期精彩 ▼
-
哈喽,国产数据库!Halo DB! -
从 PG 技术峰会南京站汲取的那些干货 -
PG 扩展推荐:pgpasswd & PG 密碼長度 -
即将告别PG 12,建议升级到PG 16.3版本 -
PG Style! 盘点几个常用的 Postgres 环境变量 -
后 EL 7 时代,PG 16 如何在 CentOS 7 上运行
-- / END / --
如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)
本文由 mdnice 多平台发布