文章目录

  • 一、核心功能描述
  • 二、roles内容
    • 2.1 文件结构
    • 2.2 主配置文件
    • 2.3 tasks文件内容
  • 三、files文件内容
  • 四、vars文件内容

免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn

一、核心功能描述

这个 Ansible Role 的核心功能是:​自动化部署 IBM DB2 v10.5 FP11 数据库服务器。

  1. 系统依赖安装

    • 安装必备库 pam.i686,并创建符号链接 /lib/libpam.so确保兼容性
  2. DB2 软件包部署

    • 解压两个核心安装包:语言包 (nlpack) 和服务端包 (server_t) 到 /data/software/db2

    • 执行安装脚本 install_db2.sh,以非交互模式安装 DB2 服务端组件(选择 SERVER类型,跳过示例数据库)

  3. 用户与组管理

    • 创建 DB2 所需的系统组:dasadm1(GID 101), db2iadm1(GID 201), db2fadm1(GID 202)。

    • 创建关联用户

      • db2inst1:实例所有者(UID 201),主目录 /home/db2inst1/db2home,归属组 db2iadm1dasadm1

      • dasusr1:管理服务用户(UID 101)。

      • db2fenc1:隔离防护用户(UID 202)。

    • 通过脚本 user_passwd.sh设置 db2inst1的密码。

  4. ​​存储配置

    • 通过 node_exporter_version 变量控制软件版本

      • 使用脚本 create_db2_disk.sh自动化完成:

      • 分区磁盘 (/dev/sdb2) 并格式化为 LVM 物理卷。

      • 创建卷组 data_vg和逻辑卷:

        • db2data_lv(10G):数据存储 (/home/db2inst1/db2data)。

        • db2logs_lv(2G):日志存储 (/home/db2inst1/db2logs)。

        • db2work_lv(8G):工作区 (/home/db2inst1/db2work)。

      • 格式化为 ext4 文件系统,挂载目录,并写入 /etc/fstab实现持久化。

    • 递归设置目录属主为 db2inst1和组 db2iadm1

  5. 实例与配置

    • 创建 DB2 管理服务器实例:dascrt -u dasusr1

    • 创建数据库实例:db2icrt -s ese -u db2fenc1 db2inst1

    • 关键参数优化(通过 db2set):

      • 启用跳过插入行锁 (DB2_SKIPINSERTED=ON)。

      • 允许读取未提交数据 (DB2_EVALUNCOMMITTED=ON)。

      • 设置通信协议为 TCP/IP (DB2COMM=TCPIP)。

      • 指定中文代码页 (DB2CODEPAGE=1386)。

      • 开启实例自启动 (DB2AUTOSTART=YES)。

  6. 服务管理

    • 禁用不必要的系统服务(如 abrtd, abrt-ccpp等),减少资源占用和潜在冲突。​

可以根据自己的实际需求修改脚本

二、roles内容

2.1 文件结构

roles/
└── db2├── files│   ├── create_db2_disk.sh│   ├── db2set.sh│   ├── install_db2.sh│   ├── install_instance.sh│   └── user_passwd.sh├── tasks│   ├── db2set.yml│   ├── directory.yml│   ├── disk.yml│   ├── group.yml│   ├── install.yml│   ├── instance.yml│   ├── main.yml│   ├── service.yml│   ├── unarchive.yml│   ├── user.yml│   └── yum.yml└── vars└── main.yml

2.2 主配置文件

---
- hosts: allremote_user: rootserial: 5roles:- db2

2.3 tasks文件内容

  • main.yml
[root@ansible ansible]# cat roles/db2/tasks/main.yml
- include: yum.yml
- include: unarchive.yml
- include: install.yml
- include: group.yml
- include: user.yml
- include: directory.yml
- include: instance.yml
- include: disk.yml
- include: db2set.yml
- include: service.yml
  • include: yum.yml
[root@ansible ansible]# cat roles/db2/tasks/yum.yml
- name: install libyum: name=pam.i686 state=present
- name: create lib linkfile: src=/lib/libpam.so.0.83.1 dest=/lib/libpam.so state=link force=yes
  • include: unarchive.yml
- name: unzip pkgunarchive: src={{ item.name }} dest=/data/software/db2loop:- { name: '{{ nlpack_version }}.tar.gz'}- { name: '{{ server_t_version }}.tar.gz'}
  • include: install.yml
- name: install scriptscript: install_db2.sh
  • include: group.yml
- name: create db2 groupsgroup: name={{ item.name }} system=yes gid={{ item.gid }}loop:- { name: 'dasadm1', gid: '101' }- { name: 'db2iadm1', gid: '201' }- { name: 'db2fadm1', gid: '202' }
  • include: user.yml
- name: create home directoryfile: path=/home/db2inst1  state=directory
- name: create db2inst1 useruser: name={{ item.name }} uid={{ item.uid }} group={{ item.group }} groups={{ item.groups }} system=yes home={{ item.home }} create_home=yes  state=presentloop:- { name: 'db2inst1', uid: '201', group: 'db2iadm1', groups: 'dasadm1', home: '/home/db2inst1/db2home'}
- name: create other useruser: name={{ item.name }} uid={{ item.uid }} group={{ item.group }} system=yesloop:- { name: 'dasusr1', uid: '101', group: 'dasadm1'}- { name: 'db2fenc1', uid: '202', group: 'db2fadm1'}
- name: create db2inst1 passwdscript: user_passwd.sh
- name: chown home directoryfile: path=/home/db2inst1 owner=db2inst1 group=db2iadm1 recurse=yes
  • include: directory.yml
- name: create directoryfile: path=/home/db2inst1/{{ item }} state=directory owner=db2inst1 group=db2iadm1loop:- db2data- db2work- db2logs
  • include: instance.yml
- name: create instanceshell: chdir=/opt/ibm/db2/V10.5/instance/ ./dascrt -u dasusr1
  • include: disk.yml
- name: create db2 diskscript: create_db2_disk.sh
  • include: db2set.yml
- name: db2manager setshell: chdir=/opt/ibm/db2/V10.5/instance/ ./db2icrt -s ese -u db2fenc1 db2inst1
- name: db2setshell: su - db2inst1 -c "db2set DB2_SKIPINSERTED=ON;db2set DB2_EVALUNCOMMITTED=ON;db2set DB2COMM=TCPIP;db2set DB2CODEPAGE=1386;db2set DB2AUTOSTART=YES"
  • include: service.yml
- name: disable servicesservice: name={{ item }} state=stopped enabled=noloop:- abrtd- abrt-ccpp- abrt-oops- abrt-vmcore- abrt-xorg

三、files文件内容

  • create_db2_disk.sh
#!/bin/bash
# 需要与实际服务器disk信息匹配
DISK=sdb
DISK_NUM=sdb2fdisk /dev/$DISK <<EOF
n+25G
t8e
w
EOFpvcreate /dev/$DISK_NUM
vgcreate -s 32M data_vg /dev/$DISK_NUM
lvcreate -L 10G -n db2data_lv data_vg
lvcreate -L 2G -n db2logs_lv data_vg
lvcreate -L 8G -n db2work_lv data_vgmkfs -t ext4 /dev/data_vg/db2data_lv
tune2fs -L /home/db2inst1/db2data /dev/data_vg/db2data_lv
mount -t ext4 /dev/data_vg/db2data_lv /home/db2inst1/db2datamkfs -t ext4 /dev/data_vg/db2logs_lv
tune2fs -L /home/db2inst1/db2logs /dev/data_vg/db2logs_lv
mount -t ext4 /dev/data_vg/db2logs_lv /home/db2inst1/db2logsmkfs -t ext4 /dev/data_vg/db2work_lv
tune2fs -L /home/db2inst1/db2work /dev/data_vg/db2work_lv
mount -t ext4 /dev/data_vg/db2work_lv /home/db2inst1/db2workchown -R db2inst1.db2iadm1 /home/db2inst1/db2{data,logs,work}sed -i.bak '$a\/dev/data_vg/db2data_lv    /home/db2inst1/db2data    ext4    defaults    1 0\n/dev/data_vg/db2logs_lv    /home/db2inst1/db2logs    ext4    defaults    1 0\n/dev/data_vg/db2work_lv    /home/db2inst1/db2work    ext4    defaults    1 0' /etc/fstab
  • install_db2.sh
#!/bin/bash
/data/software/db2/server_t/db2_install -L EN -L CN -f NOTSAMP <<EOF
是
SERVER
EOF
  • user_passwd.sh
#!/bin/bash
passwd db2inst1 <<EOF
lhl%!#    # 实际生产环境,密码要符合复杂度要求
lhl%!#    # 实际生产环境,密码要符合复杂度要求
EOF

安装包

v10.5fp11_linuxx64_nlpack.tar.gz

v10.5fp11_linuxx64_server_t.tar.gz

四、vars文件内容

  • main.yml
nlpack_version: v10.5fp11_linuxx64_nlpack
server_t_version: v10.5fp11_linuxx64_server_t

如果你不请什么是ansible中的角色,动动你的小手,跳转过去看看呗“roles角色”

请不要以此视为定论,这只是我的个人经验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94163.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94163.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/94163.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webrtc中win端音频---windows Core Audio

一、Core Audio 系统内核框架 图中显示的是渲染的音频数据如何从大多数应用程序流向扬声器的简化表示。对于采集来说,音频数据的路径是完全相同,但流向是相反的。从图中可以看到,一些高阶API(例如MME,DirectSound等),对 Core Audio APIs 进行了封装,使用这些API能够更容…

【数据可视化-96】使用 Pyecharts 绘制主题河流图(ThemeRiver):步骤与数据组织形式

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

【Android】Activity 如何进行数据传输

三三要成为安卓糕手 一&#xff1a;Activity之间的数据传输 问题&#xff1a;不同的Activity之间怎么进行数据传输呢? 比如第一个页面中有一些字符串数据之类的要通过数据传输&#xff0c;传递给第二个页面进行显示的 1&#xff1a;MainActivity做处理 在定义一个按钮&#xf…

C#语言的语法(数据类型)

数据类型 表2.1给出了C#的主要数据类型。注意&#xff0c;基本类型的长度与计算机或操作系统的类型无关。C# 中的字符是16位的宽度&#xff0c;可以表示非拉丁语言中的所有字符。它使用一种叫双字节码的字符编码 系统&#xff0c;其中定义了绝大多数可书写语言的数以千计的字符…

Vue3 + TypeScript全局阻止非输入区域的Backspace键,防止回退页面

main.ts/*** 应用程序主入口** 初始化 Vue 应用并挂载到 DOM*/ import "./assets/style/main.scss";import { createApp } from "vue"; // 全局引入element-plus&#xff0c;对打包后的文件大小不是很在乎&#xff0c;那么使用全局导入会更方便 import Ele…

01数据结构-堆排序

01数据结构-堆排序前言1.堆2.堆的操作逻辑3.堆的代码实现前言 数据结构中的堆是一种结构&#xff0c;C语言的堆是空间管理的程序员malloc&#xff0c;free的空间&#xff0c;两者没多大关系。 1.堆 逻辑上 堆&#xff08;Heap&#xff09;是一类基于完全二叉树的特殊数据结构…

在线课程|基于SprinBoot+vue的在线课程管理系统(源码+数据库+文档)

在线课程 目录 基于SprinBootvue的在线课程管理系统 一、前言 二、系统设计 三、系统功能设计 1 管理员模块的实现 2在线课程 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|…

Python海象运算符:=

文章目录简介​​条件判断优化循环控制简化​推导式高效计算​正则匹配与数据提取​性能对比参考文献简介 海象运算符 :&#xff0c;又称​​赋值表达式​​&#xff08;Assignment Expression&#xff09;&#xff0c;Python 3.8 后可用&#xff0c;PEP 572 引入&#xff0c;…

Vue 2 项目中快速集成 Jest 单元测试(超详细教程)

在 Vue 项目中编写单元测试&#xff0c;是提升代码质量和维护性的关键一步。本文将带你从零开始&#xff0c;在一个 Vue 2 Vue CLI 项目中集成 Jest 作为单元测试框架&#xff0c;并运行第一个测试用例。✅ 适用于 Vue 2 项目&#xff08;如你使用的是 vue-cli-service&#x…

PostgreSQL15——管理表空间

管理表空间一、基本概念二、创建表空间三、修改表空间四、删除表空间一、基本概念 在 PostgreSQL 中&#xff0c;它是通过表空间&#xff08;Tablespaces&#xff09;来实现逻辑对象&#xff08;表、索引等&#xff09;与物理文件之间的映射。创建数据库或者数据表&#xff08…

趣打印高级版--手机打印软件!软件支持多种不同的连接方式,打印神器有这一个就够了!

软件介绍&#xff08;文末获取&#xff09;趣打印高级版是一款手机打印软件。软件支持五种不同的连接方式&#xff0c;每种都有稳定且快速的反应&#xff0c;用户均可通过手机进行打印机的远程使用和设置。软件还支持上传不同格式的文档类型进行打印&#xff0c;方便快捷&#…

【开源框架】7 款流行的 Vue 3 后台管理框架对比

以下是 7 个流行的 Vue 3 后台管理框架在 Star 数&#xff08;截至 2025 年 8 月21日的 GitHub 最新数据&#xff09;、框架特点、基于的技术栈及开源协议四个方面的详细对比&#xff1a; 1. Vue-Vben-Admin GitHub 地址&#xff1a;https://github.com/vbenjs/vue-vben-admin…

Datawhale工作流自动化平台n8n入门教程(一):n8n简介与平台部署

前言 在数字化时代&#xff0c;重复性的工作任务正在消耗着我们大量的时间和精力。从数据同步到营销自动化&#xff0c;从客户服务到内容管理&#xff0c;这些琐碎但必要的任务往往让我们疲于应对。而工作流自动化工具的出现&#xff0c;为我们提供了一个优雅的解决方案。 今天…

SRE - 定位与能力

仅为个人知识总结与记录 Site Reliability Engineer&#xff1a;站点可靠性工程&#xff08;SRE 软件工程师 运维专家 可靠性专家&#xff09; 相对传统的运维工程师&#xff0c;SER 注重开发&#xff0c;效率&#xff0c;追求自动化。对于 SRE 工程师&#xff0c;追究的就是…

StarRocks学习4-查询优化与性能调优

✅ 1. 执行计划分析&#xff08;EXPLAIN&#xff09; &#x1f31f; 作用&#xff1a; 用于查看 SQL 的执行路径&#xff0c;判断是否命中索引、物化视图、Join 策略、并行度等。 &#x1f4cc; 常用命令&#xff1a; EXPLAIN SELECT ...; EXPLAIN VERBOSE SELECT ...;&#x1…

CentOS系统安装Git全攻略

文章目录✅ 方法一&#xff1a;使用 yum 或 dnf 包管理器安装&#xff08;推荐&#xff09;1. 更新系统软件包(非必须)[^1]2. 安装 Git3. 验证安装✅ 方法二&#xff1a;从源码编译安装&#xff08;适用于需要自定义版本或配置&#xff09;1. 安装依赖包2. 下载 Git 源码3. 编译…

VR交通安全学习机-VR交通普法体验馆方案

VR交通安全学习机是一种基于虚拟现实技术的互动式教育设备&#xff0c;旨在通过虚拟环境模拟真实的交通场景&#xff0c;帮助用户深入了解交通规则、交通信号、道路安全等知识&#xff0c;并通过沉浸式的体验让他们亲身感受到不遵守交通规则的后果。无论是驾驶员、行人还是骑行…

算法题(188):团伙

审题&#xff1a; 本题需要我们通过解析所有人之间的关系&#xff0c;从而判断出朋友团体的总个数并输出 思路&#xff1a; 方法一&#xff1a;扩展域并查集 由于这里涉及对朋友/敌人等关系集合的频繁操作&#xff0c;所以我们需要使用并查集来操作&#xff0c;但是普通的并查集…

C++开发/Qt开发:单例模式介绍与应用

单例模式是软件设计模式中最简单也是最常用的一种创建型设计模式。它的核心目标是确保一个类在整个应用程序生命周期中只有一个实例&#xff0c;并提供一个全局访问点。笔者白话版理解&#xff1a;你创建了一个类&#xff0c;如果你希望这个类对象在工程中应用时只创建一次&…

Linux笔记---策略模式与日志

1. 设计模式设计模式是软件开发中反复出现的问题的通用解决方案&#xff0c;它是一套套被反复使用、多数人知晓、经过分类编目的代码设计经验总结。设计模式并非具体的代码实现&#xff0c;而是针对特定问题的抽象设计思路和方法论。它描述了在特定场景下&#xff0c;如何组织类…