一、环境说明
在部署好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"