暂无图片
暂无图片
9
暂无图片
暂无图片
暂无图片

利用Ansible自动化安装MogDB-3.0.1

原创 鸿惊九天 2022-09-06
1570
Ansible是目前比较流行的一款开源的自动化工具,可以使用它来自动化任务,部署应用程序实现IT基础架构。

Ansible可以用来自动化日常任务,比如,服务器的初始化配置、安装和更新软件包等。Ansible架构相对比较简单,仅需通过SSH连接客户机执行任务即可。

本文将利用Ansible 剧本编排(playbook)实现如何对MogDB的自动化安装部署,具体步骤如下:

一、环境准备

2台主机:
一台为安装Ansible的主机(192.168.9.1),
另外一台为需要部署MogDB的主机(192.168.9.21)

二、Ansible安装和配置

1、Ansible安装

使用yum进行安装Ansible(需提前进行配置好yum源)
yum install epel-release -y
yum install ansible -y

安装完成后,查看ansible版本:

[root@cs79-mysql ~]# 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, Oct 14 2020, 14:45:30) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]

2、配置主机清单

修改主机清单/etc/ansible/hosts,添加主机列表
[root@cs79-mysql ansible]# pwd
/etc/ansible

#cat hosts
[dbserver]
192.168.9.21 ansible_ssh_user=root ansible_ssh_pass=123456

###192.168.9.21为本次需要安装MogDB的主机

3、测试主机连通性

[root@cs79-mysql ansible]# ansible dbserver -m ping

image.png

三、Ansible自动安装MogDB剧本编排思路

ansible-playbook配置思路:

通过vars中的main.yml配置变量,主要设置软件版本、存放目录、安装目录、密码等;

通过tasks中的main.yml将安装文件传输到远程服务器上存放目录;

通过tasks中的main.yml将MogDB安装到变量中定义的安装目录;

通过InstallMogDB.yml调用剧本(playbook)实现自动部署;

四、具体实现

1、创建相关目录

[root@cs79-mysql roles]# pwd
/etc/ansible/roles
[root@cs79-mysql roles]# mkdir -p MogDB_Install/{files,vars,tasks,templates}
[root@cs79-mysql roles]# cd MogDB_Install/
[root@cs79-mysql MogDB_Install]# ls
files tasks templates vars

#tree MogDB_Install
MogDB/
├── files
├── tasks
├── templates
└── vars

4 directories, 0 files

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

2、下载MogDB软件包到files目录

下载安装包放入到/etc/ansible/roles/MogDB_Install/files目录下

[root@cs79-mysql files]# wget https://cdn-mogdb.enmotech.com/mogdb-media/3.0.1/MogDB-3.0.1-CentOS-x86_64.tar.gz
–2022-09-05 22:43:53-- https://cdn-mogdb.enmotech.com/mogdb-media/3.0.1/MogDB-3.0.1-CentOS-x86_64.tar.gz
Resolving cdn-mogdb.enmotech.com (cdn-mogdb.enmotech.com)… 58.218.215.93
Connecting to cdn-mogdb.enmotech.com (cdn-mogdb.enmotech.com)|58.218.215.93|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 139264406 (133M) [application/gzip]
Saving to: ‘MogDB-3.0.1-CentOS-x86_64.tar.gz’

100%[==================================================================================================================================================================================================>] 139,264,406 12.8MB/s in 10s

2022-09-05 22:44:04 (12.9 MB/s) - ‘MogDB-3.0.1-CentOS-x86_64.tar.gz’ saved [139264406/139264406]

#ls
MogDB-3.0.1-CentOS-x86_64.tar.gz

下载完后,进行解压(安装需用到解压后的MogDB-3.0.1-CentOS-64bit.tar.gz这个包)
#tar -xf MogDB-3.0.1-CentOS-x86_64.tar.gz
#ls -lrt
total 274016
-rw-r–r-- 1 20001 20001 107200316 Aug 5 18:38 MogDB-3.0.1-CentOS-64bit.tar.gz
-rw-r–r-- 1 20001 20001 65 Aug 5 18:38 MogDB-3.0.1-CentOS-64bit.sha256
-rw-r–r-- 1 20001 20001 5078313 Aug 5 18:38 MogDB-3.0.1-CentOS-64bit-Libpq.tar.gz
-rw-r–r-- 1 20001 20001 410121 Aug 5 18:38 upgrade_sql.tar.gz
-rw-r–r-- 1 20001 20001 8028953 Aug 5 18:38 MogDB-3.0.1-CentOS-64bit-tools.tar.gz
-rw-r–r-- 1 20001 20001 65 Aug 5 18:38 upgrade_sql.sha256
-rw-r–r-- 1 20001 20001 14167708 Aug 5 18:38 MogDB-3.0.1-CentOS-64bit-om.tar.gz
-rw-r–r-- 1 20001 20001 65 Aug 5 18:38 MogDB-3.0.1-CentOS-64bit-om.sha256
-rw-r–r-- 1 20001 20001 6411863 Aug 5 18:38 MogDB-3.0.1-CentOS-64bit-cm.tar.gz
-rw-r–r-- 1 20001 20001 65 Aug 5 18:38 MogDB-3.0.1-CentOS-64bit-cm.sha256
-rw-r–r-- 1 root root 139264406 Aug 5 19:35 MogDB-3.0.1-CentOS-x86_64.tar.gz

3、创建变量文件

[root@cs79-mysql playbook]# vi /etc/ansible/roles/MogDB_Install/vars/main.yml

MogDB_version: MogDB-3.0.1-CentOS-64bit.tar.gz
#解压目录地址
dir: /opt/mogdb/
#软件安装目录名
MogDB_dir: /opt/mogdb/software
#数据目录
datadir: /opt/mogdb/data
#数据库密码
MogDB_password: Enmo@123

4、创建任务文件

[root@cs79-mysql playbook]# vi /etc/ansible/roles/MogDB_Install/tasks/main.yml

- name: 关闭防火墙
  shell: systemctl disable firewalld.service && systemctl stop firewalld.service
  ignore_errors: true
- name: 关闭selinux
  shell: sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  ignore_errors: true
- name: 创建组
  group: name=dbgrp gid=2000

- name: 创建用户
  user:
    name=omm  uid=2000 group=dbgrp
- name: 修改密码
  shell: echo 'Enmo@123' | passwd --stdin omm

- name: 新建目录
  file: path="{{item}}"  state=directory mode=0755 owner=omm group=dbgrp
  with_items:
      - /opt/mogdb/
      - /opt/mogdb/software/
      - /opt/mogdb/data/

- name: 上传安装包
  copy: src={{MogDB_version}} dest={{dir}}  owner=omm group=dbgrp mode=0644
  tags: install
  
- name: "解压软件包"
  unarchive: src={{dir}}/{{MogDB_version}} dest={{MogDB_dir}} copy=no list_files=yes

- name: "安装依赖包"
  yum: name="gcc,gcc-c++,libaio-devel" state=installed 

- name: "配置环境变量"
  shell: echo -e "export GAUSSHOME={{MogDB_dir}}\nexport PATH={{MogDB_dir}}/bin:\$PATH\nexport LD_LIBRARY_PATH=\$GAUSSHOME/lib:\$LD_LIBRARY_PATH" >> /home/omm/.bashrc

- name: "修改属主属组"
  shell: chown omm:dbgrp -R /opt/mogdb/ warn=false 
- name: "初始化数据库"
  shell: su - omm -c " gs_initdb --pgdata={{datadir}} --nodename=primary --pwpasswd={{MogDB_password}} --encoding=UTF-8 --locale=en_US.UTF-8 "

- name: "修改初始化参数"
  shell: |
         echo -e "port=26000\nlisten_addresses = '0.0.0.0'\npassword_encryption_type = 0\nlog_directory = 'pg_log'\nremote_read_mode=non_authentication" >> {{datadir}}/postgresql.conf && chown omm.dbgrp {{datadir}}/postgresql.conf	    
         echo -e "host all all 0.0.0.0/0 md5" >> {{datadir}}/pg_hba.conf && chown omm.dbgrp {{datadir}}/pg_hba.conf
- name: "启动MogDB"
  shell: ss -anpt|grep 26000 && su - omm -c "gs_ctl restart -D {{datadir}} " || su - omm -c "gs_ctl start -D {{datadir}} "
- name: "登录数据库"
  shell: ss -anpt|grep 26000 && su - omm -c "gsql -d postgres -p26000 -r -l"

5、创建MogDB角色文件,用于调用MogDB_Install

[root@cs79-mysql playbook]# vi /etc/ansible/playbook/InstallMogDB.yml

- name: Install MogDB
  hosts: dbserver
  remote_user: root
  roles:
  - MogDB_Install

6、检验yml文件

image.png

yml文件校验没有问题,开始进行自动化安装

7、自动化安装MogDB

[root@cs79-mysql playbook]# ansible-playbook InstallMogDB.yml
image.png

8、登录数据库

安装完成后,登录数据库进行验证

[root@MogDB ~]# su - omm
Last login: Tue Sep  6 10:40:28 CST 2022 from 192.168.9.1 on pts/1
[omm@MogDB ~]$ gsql -d postgres -p26000
gsql ((MogDB 3.0.1 build 1a363ea9) compiled at 2022-08-05 17:31:04 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

MogDB=# \l
                              List of databases
   Name    | Owner | Encoding |   Collate   |    Ctype    | Access privileges 
-----------+-------+----------+-------------+-------------+-------------------
 postgres  | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +
           |       |          |             |             | omm=CTc/omm
 template1 | omm   | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/omm           +
           |       |          |             |             | omm=CTc/omm
(3 rows)

MogDB=# 

image.png
至此,自动化部署MogDB完毕,如果有多台机器需要部署,添加主机相关信息到/etc/ansible/hosts即可,大大提高效率。

最后修改时间:2022-09-07 09:37:05
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论