ansible playbook 實戰案例roles | 實現db2自動安裝

文章目錄

  • 一、核心功能描述
  • 二、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;如何組織類…