↑ 关注“少安事务所”公众号,欢迎⭐收藏,不错过精彩内容~
前倾回顾
前面介绍了“光环”数据库的基本情况和安装办法。
-  哈喽,国产数据库!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 多平台发布