Ansible自动化部署安装openGauss3.1企业版单机
创始人
2024-03-12 10:28:04
0次

文章目录

  • 一、背景
  • 二、环境准备
  • 三、具体实施步骤
    • 3.1、安装ansible
    • 3.2、配置主机清单
    • 3.3、测试主机连通性
    • 3.4、创建相关目录
    • 3.5、下载openGauss软件包到files目录
    • 3.6、创建变量文件
    • 3.7、创建安装时需要的xml模板
    • 3.8、创建任务文件
  • 四、执行自动化安装
    • 4.1、校验语法
    • 4.2、自动化安装openGauss
    • 4.3、安装完成后验证

一、背景

由于IT建设的快速发展,当数据中心业务突增,需要快速部署多套的数据库时,给运维工作带来了不小的压力和挑战,作为运维人员该如何面对面对这种困境呢?另外由于个人的习惯等也会导致所部署的环境不一定与规划完全一致,那么对以后的运维也会产生一定的负面影响。很显然,这种传统的方式已经无法适应当前的情景了,自动化运维应运而生,ansible在自动化运维和devops 的应用中崭露头角。

本文基于ansible工具实现 openGauss 的一键批量部署,传统的部署方式是先修改系统配置、安装依赖包、创建omm用户和组、配置环境变量、上传安装包以及解压、安装等步骤。

按照这个流程和思路,我们把这些操作弄成剧本编排(playbook),交给ansible来做。

二、环境准备

2台主机:
一台为Ansible的管理主机(10.10.10.142),操作系统为CentOS Linux release 7.9.2009 (Core);
另外一台为需要部署openGauss的主机(10.10.10.150),操作系统为CentOS Linux release 7.9.2009 (Core)。

三、具体实施步骤

3.1、安装ansible

–在10.10.10.142上进行安装Ansible
yum install epel-release -y
yum install ansible –y

–配置/etc/ansible/ansible.cfg

# grep -v '^#' /etc/ansible/ansible.cfg |sed '/^$/d'[defaults]
host_key_checking = False
callback_whitelist = timer,profile_roles,log_plays
log_path = /var/log/ansible.log
strategy = free
bin_ansible_callbacks = True
[inventory]
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]
[callback_log_plays]
log_folder=/tmp/ansible/hosts/

3.2、配置主机清单

修改主机清单/etc/ansible/hosts,添加主机列表

# cat /etc/ansible/hosts
[openGaussdb]
10.10.10.150 ansible_ssh_user=root ansible_ssh_pass=123456

###10.10.10.150为本次需要安装openGauss的主机

3.3、测试主机连通性

# ansible -i /etc/ansible/hosts openGaussdb -m ping

在这里插入图片描述

3.4、创建相关目录

[root@cs79-mysql:~]# cd /etc/ansible/roles/
[root@cs79-mysql:/etc/ansible/roles]# mkdir -p openGauss_Install/{files,vars,tasks,templates}
[root@cs79-mysql:/etc/ansible/roles]# tree openGauss_Install/
openGauss_Install/
├── files
├── tasks
├── templates
└── vars

4 directories, 0 files

上述目录主要作用如下:
files:存放需要同步到异地服务器的安装文件或者配置文件;
tasks:openGauss安装过程需要进行的执行的任务;
templates:用于执行openGauss安装的模板文件,一般为脚本;
vars:安装openGauss定义的变量;

3.5、下载openGauss软件包到files目录

安装包下载地址:https://opengauss.org/zh/download.html

[root@cs79-mysql:/etc/ansible/roles]# cd openGauss_Install/files/
[root@cs79-mysql:/etc/ansible/roles/openGauss_Install/files]# # wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.0/x86/openGauss-3.1.0-CentOS-64bit-all.tar.gz
–2022-10-09 21:42:01-- https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.1.0/x86/openGauss-3.1.0-CentOS-64bit-all.tar.gz
Resolving opengauss.obs.cn-south-1.myhuaweicloud.com (opengauss.obs.cn-south-1.myhuaweicloud.com)… 121.37.63.38, 139.159.208.64, 139.159.208.243
Connecting to opengauss.obs.cn-south-1.myhuaweicloud.com (opengauss.obs.cn-south-1.myhuaweicloud.com)|121.37.63.38|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 123022609 (117M) [application/gzip]
Saving to: ‘openGauss-3.1.0-CentOS-64bit-all.tar.gz’

100%[==================================================================================================================================================================================================>] 123,022,609 38.4MB/s in 3.2s

2022-10-09 21:42:04 (37.1 MB/s) - ‘openGauss-3.1.0-CentOS-64bit-all.tar.gz’ saved [123022609/123022609]

3.6、创建变量文件

[root@cs79-mysql:~]# vi /etc/ansible/roles/openGauss_Install/vars/main.yml

#安装包名称
openGauss_software: openGauss-3.1.0-CentOS-64bit-all.tar.gz
#解压目录
install_dir: /opt/software/openGauss
#omm用户密码
omm_password: openGauss@123
#数据库密码
db_password: openGauss@123

3.7、创建安装时需要的xml模板

[root@cs79-mysql:~]# vi /etc/ansible/roles/openGauss_Install/templates/cluster_config.j2


{ ansible_hostname }}" />{ inventory_hostname }}"/>{ ansible_hostname }}"/>{ inventory_hostname }}"/>{ inventory_hostname }}"/>

3.8、创建任务文件

[root@cs79-mysql:~]# vi /etc/ansible/roles/openGauss_Install/tasks/main.yml
- name: 关闭防火墙shell: systemctl disable firewalld.service && systemctl stop firewalld.serviceignore_errors: truetags: 01_os_syscfg
- name: 关闭selinuxshell: sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configignore_errors: truetags: 01_os_syscfg
- name: 设置时区shell: timedatectl set-timezone Asia/Shanghaitags: 01_os_syscfg
- name: 关闭RemoveIPClineinfile:path:  /etc/systemd/logind.confstate: presentline: "RemoveIPC=no"tags: 01_os_syscfg
- name: 重启systemd-logind服务shell: systemctl daemon-reload && systemctl restart systemd-logindtags: 01_os_syscfg
- name: 创建组group: name=dbgrp gid=2000tags: 02_user_add
- name: 创建用户user:name=omm  uid=2000 group=dbgrptags: 02_user_add
- name: 修改密码shell: echo "{{omm_password}}" | passwd --stdin ommtags: 02_user_add
- name: 新建目录file: path="{{item}}"  state=directory mode=0755 owner=omm group=dbgrpwith_items:- /opt/software/- /opt/software/openGausstags: 03_unzip_db
- name: 上传安装包copy: src={{openGauss_software}} dest={{install_dir}}  owner=omm group=dbgrp mode=0644tags: installtags: 03_unzip_db
- name: "解压软件包"shell: cd {{install_dir}} && tar -zxvf *all.tar.gz && tar -zxvf *om.tar.gzbecome: yesbecome_user: ommtags: 03_unzip_db
- name: "安装依赖包"yum: name="libaio-devel,flex,bison,ncurses-devel,glibc-devel,patch,redhat-lsb-core,python3,bzip2,readline-devel,net-tools,tar,gcc,gcc-c++" state=installed tags: 04_os_yum
- name: 替换python3版本shell: mv /usr/bin/python  /usr/bin/python2_bak && ln -s /usr/bin/python3 /usr/bin/python && python -Vtags: 05_replace_py
- name: 配置xml文件template: src=cluster_config.j2 dest={{install_dir}}/clusterconfig.xmltags: 06_config_xml
- name: 执行预安装脚本shell: '{{install_dir}}/script/gs_preinstall -U omm -G dbgrp -X {{install_dir}}/clusterconfig.xml --non-interactive'register: preinstalltags: 07_pre_install
- debug: var=preinstall.stdout_linesignore_errors: truetags: 07_pre_install
- name: 检查预安装环境shell: '{{install_dir}}/script/gs_checkos -i A -h {{ ansible_hostname }} --detail'register: checkostags: 08_check_os
- debug: var=checkos.stdout_linesignore_errors: truetags: 08_check_os
- name: 更改权限shell: chmod -R 755 {{install_dir}}tags: 09_gs_install
- name: 执行gs_installshell: su - omm -c "{{install_dir}}/script/gs_install -X {{install_dir}}/clusterconfig.xml --gsinit-parameter="--pwpasswd={{db_password}}""register: gsinstalltags: 09_gs_install
- debug: var=gsinstall.stdout_linesignore_errors: truetags: 09_gs_install
- name: 启动数据库shell: ss -anpt|grep 26000 && su - omm -c "gs_ctl restart " || su - omm -c "gs_om -t start "tags: 10_db_start
- name: "登录数据库"shell: ss -anpt|grep 26000 && su - omm -c "gsql -d postgres -p26000 -r -l"tags: 10_db_start

3.9、创建剧本调用文件
[root@cs79-mysql:~]# vi /etc/ansible/playbook/InstallopenGauss.yml

  • name: Install openGauss
    hosts: openGaussdb
    remote_user: root
    roles:
    • openGauss_Install

四、执行自动化安装

4.1、校验语法

# ansible-playbook -C /etc/ansible/playbook/InstallopenGauss.yml 

在这里插入图片描述

校验语法通过后,执行下一步安装

4.2、自动化安装openGauss

# ansible-playbook /etc/ansible/playbook/InstallopenGauss.yml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3、安装完成后验证

在这里插入图片描述

至此,整个自动化部署openGauss完毕,如果有多台机器需要部署,添加主机相关信息到/etc/ansible/hosts,再执行ansible-playbook即可。

作者:鸿惊九天
openGauss: 一款高性能、高安全、高可靠的企业级开源关系型数据库。

🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连点赞评论收藏就更好啦!谢谢各位大佬给予的支持!

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...