一、环境说明

在部署好SaltStack的基础服务端和客户端环境后,可以基于该环境自动部署oracle数据库,数据库的安装方式为静默安装。
项目 参数
客户端操作系统 Centos 6.4
服务端IP地址 192.168.1.1
客户端IP地址 192.168.1.4
oralce版本 oracle 11g
目录 参数 备注
文件存放路径 /u01
数据库安装路径 /u01/app /u01目录若无需要提前创建

二、自动部署

1.环境准备

1.1 指定master入口
[root@server ~]# vi /etc/salt/master
#将下面的注释打开
file_roots:
  base:
    - /srv/salt/

[root@server ~]# systemctl restart salt-master.service
1.2 目录创建
在服务器端为oracle创建文件存放目录
[root@server ~]# mkdir /srv/salt/oracle -p
[root@server ~]# mkdir /srv/salt/oracle/files -p
1.3 安装文件准备
将安装所需的安装包和文件拷贝至服务端的/srv/salt/oracle/files目录中,内容如下
[root@server files]# ll
总用量 2295692
-rw-r--r--. 1 root root 2350748811 2月  28 14:48 database.zip
-rw-r--r--. 1 root root        847 2月  28 09:26 dbca.rsp
-rw-r--r--. 1 root root      22731 2月  27 18:24 db_install.rsp
-rw-r--r--. 1 root root         55 2月  27 17:40 oraInst.loc
-rw-r--r--. 1 root root        219 2月  27 15:30 yum.sh

2.SLS模块编写

2.1 安装前环境配置的SLS模块编写
[root@server ~]# cat /srv/salt/oracle/config.sls 
oracle-config:
  file.managed:
    - name: /opt/yum.sh
    - source: salt://oracle/files/yum.sh
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /opt && chmod a+x yum.sh && ./yum.sh && groupadd dba && groupadd oinstall && useradd -g oinstall -G dba oracle && echo P@ssw0rd | passwd --stdin oracle

oracle-sys:
  file.append:
    - name: /etc/sysctl.conf
    - text:
      - fs.aio-max-nr = 1048576
      - fs.file-max = 6815744
      - kernel.shmall = 2097152
      - kernel.shmmax = 536870912
      - kernel.shmmni = 4096
      - kernel.sem = 250 32000 100 128
      - net.ipv4.ip_local_port_range = 9000 65500
      - net.core.rmem_default = 262144
      - net.core.rmem_max = 4194304
      - net.core.wmem_default = 262144
      - net.core.wmem_max = 1048576
  cmd.run:
    - name: sysctl -p

oracle-limit:
  file.append:
    - name: /etc/security/limits.conf
    - text: 
      - oracle soft nproc 2047
      - oracle hard nproc 16384
      - oracle soft nofile 1024
      - oracle hard nofile 65536
      - oracle soft stack 10240

oracle-pam:
  file.append:
    - name: /etc/pam.d/login
    - text:
        - session required pam_limits.so

oracle-pro:
  file.append:
    - name: /etc/profile
    - text:
      - '# oracle ulimit'
      - 'if [ $USER = "oracle" ]; then'
      - 'if [ $SHELL = "/bin/ksh" ]; then'
      - '      ulimit -p 16384'
      - '      ulimit -n 65536'

  cmd.run:
    - name: echo "else" >> /etc/profile && echo "      ulimit -u 16384 -n 65536">> /etc/profile && echo "fi" >> /etc/profile && echo "fi" >> /etc/profile && source /etc/profile

oracle-users:
  cmd.run:
    - name: mkdir -p /u01/app

/u01/app:
  file.directory:
    - user: oracle
    - group: oinstall
    - dir_mode: 755
    - file_mode: 755

oracle-hosts:
  file.append:
    - name: /etc/hosts
    - text:
      - 192.168.1.4 oracle

oracle-firewall:
  file.replace:
    - name: /etc/selinux/config
    - pattern : |
       SELINUX=enforcing
    - repl : |
       SELINUX=disabled    
  cmd.run:
    - name: setenforce 0

oracle-package:
  file.managed:
    - name: /u01/database.zip
    - source: salt://oracle/files/database.zip
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /u01 && unzip database.zip

/u01/database:
  file.directory:
    - user: oracle
    - group: oinstall
    - dir_mode: 755
    - file_mode: 755

oracle-cpfile:
  file.managed:
    - name: /etc/oraInst.loc
    - source: salt://oracle/files/oraInst.loc
    - user: oracle
    - group: oinstall
    - mode: 755
  cmd.run:
    - name: cd /etc && chown -R oracle:oinstall /etc/oraInst.loc && chmod 755 /etc/oraInst.loc

oracle-runenv:
  cmd.run:
    - name: export DISPLAY=:0 &&  export LANG=en_US

oracle-userenv:
  file.append:
    - name: /home/oracle/.bash_profile
    - text:
      - ORACLE_BASE=/u01/app/oracle;                         
      - ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1;    
      - ORACLE_SID=orcl;                                     
      - LD_LIBRARY_PATH=$ORACLE_HOME/lib;
      - PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin;
      - NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"; 
      - export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH NLS_LANG
  cmd.run:
    - name: source /home/oracle/.bash_profile
2.2 Oracle数据库静默安装的SLS模块编写
[root@server ~]# cat /srv/salt/oracle/install.sls 
oracle-install:
  file.managed:
    - name: /u01/db_install.rsp
    - source: salt://oracle/files/db_install.rsp
    - user: oracle
    - group: oinstall
    - mode: 755
  cmd.run:
    - name: su oracle -l -c "/u01/database/runInstaller -silent -force -noconfig -responseFile /u01/db_install.rsp"

oracle-install1:
  cmd.run:
    - name: /u01/app/oraInventory/orainstRoot.sh && /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
2.3 Oracle静默启动监听的SLS模块编写
[root@server ~]# cat /srv/salt/oracle/netca.sls 
oracle-netca:
  cmd.run:
    - name: su oracle -l -c "/u01/app/oracle/product/11.2.0/dbhome_1/bin/netca /silent /responsefile /u01/database/response/netca.rsp"
2.4 Oracle静默创建实例的SLS模块编写
[root@server ~]# cat /srv/salt/oracle/dbca.sls 
include:
  - oracle.config
  - oracle.install
  - oracle.netca

oracle-dbca:
  cmd.run: 
    - name: cd /u01/database/response && mv dbca.rsp dbca.rsp.bak 

oracle-dbca1:
  file.managed:
    - name: /u01/database/response/dbca.rsp
    - source: salt://oracle/files/dbca.rsp
    - user: oracle
    - group: oinstall
    - mode: 755
  cmd.run:
    - name: su oracle -l -c "/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbca -silent -responseFile /u01/database/response/dbca.rsp"
2.5 topfile编写
[root@server ~]# cat /srv/salt/top.sls
base:
  '*':
    - oracle.dbca

3.部署Oracle

[root@server ~]# salt '*' state.highstate

4.验证

在客户端验证
[root@oracle ~]# su - oracle
[oracle@oracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri Feb 24 14:21:24 2017

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show user;
USER is "SYS"

results matching ""

    No results matching ""