|
| 1 | +# Oracle Fleet Patching and Provisioning (FPP) Vagrant project on VirtualBox or KVM/libVirt provider |
| 2 | + |
| 3 | +###### Author: Ruggero Citton (<[email protected]>) - Orale RAC Pack, Cloud Innovation and Solution Engineering Team |
| 4 | + |
| 5 | +This directory contains Vagrant build files to provision automatically |
| 6 | +one Grid Infrastructure and FPP Server host + (optional) an Oracle FPP target, using Vagrant, Oracle Linux 7 and shell scripts. |
| 7 | + |
| 8 | + |
| 9 | +## Prerequisites |
| 10 | + |
| 11 | +1. Read the [prerequisites in the top level README](../README.md#prerequisites) to set up Vagrant with either VirtualBox or KVM |
| 12 | +1. You need to download Database binary separately |
| 13 | + |
| 14 | +## Free disk space requirement |
| 15 | + |
| 16 | +- Grid Infrastructure and Database binary zip under "./ORCL_software": ~5.5 Gb |
| 17 | +- Grid Infrastructure + RDBMS for GIMR on u01 vdisk (node1, location set by `u01_disk`): ~14 Gb |
| 18 | +- OS guest vdisk (node1/node2) located on default VirtualBox VM location: ~2.5 Gb |
| 19 | + - In case of KVM/libVirt provider, the disk is created under `storage pool = "storage_pool_name"` |
| 20 | + - In case of VirtualBox |
| 21 | + - Use `VBoxManage list systemproperties |grep folder` to find out the current VM default location |
| 22 | + - Use `VBoxManage setproperty machinefolder <your path>` to set VM default location |
| 23 | +- Dynamically allocated storage for ASM shared virtual disks (node1, location set by `asm_disk_path`): ~24 Gb |
| 24 | + |
| 25 | +## Memory requirement |
| 26 | + |
| 27 | +- Deploy one Grid Infrastructure and FPP Server (host1) at least 12Gb are required |
| 28 | +- Deploy OL7 host2 (optional) as Oracle FPP target at least 6Gb are required |
| 29 | + |
| 30 | +## Getting started |
| 31 | + |
| 32 | +1. Clone this repository `git clone https://github.com/oracle/vagrant-projects.git` |
| 33 | +2. Change into OracleFPP folder (`/repo clone path/vagrant-projects/RACPack/OracleFPP`) |
| 34 | +3. Download Grid Infrastructure and Database (optional) binary from OTN into `./ORCL_software` folder (*) |
| 35 | +4. Run `vagrant up` |
| 36 | +5. Connect to Oracle FPP Server (node1). |
| 37 | +6. You can shut down the VM via the usual `vagrant halt` and the start it up again via `vagrant up`. |
| 38 | + |
| 39 | +(*) Download Grid Infrastructure and Database binary from OTN into `ORCL_software` folder |
| 40 | +https://www.oracle.com/database/technologies/oracle-database-software-downloads.html |
| 41 | + |
| 42 | + Accept License Agreement |
| 43 | + go to version (21c) for Linux x86-64 you need -> "See All", example |
| 44 | + |
| 45 | + * Oracle Database 21c Grid Infrastructure (21.3) for Linux x86-64 |
| 46 | + LINUX.X64_213000_grid_home.zip (2,422,217,613 bytes) |
| 47 | + (sha256sum - 070d4471bc067b1290bdcee6b1c1fff2f21329d2839301e334bcb2a3d12353a3) |
| 48 | + |
| 49 | + * Oracle Database 21c (21.3) for Linux x86-64 (required with 21c FPP) |
| 50 | + LINUX.X64_213000_db_home.zip (3,109,225,519 bytes) |
| 51 | + (sha256sum - c05d5c32a72b9bf84ab6babb49aee99cbb403930406aabe3cf2f94f1d35e0916) |
| 52 | + |
| 53 | +## Customization |
| 54 | + |
| 55 | +You can customize your Oracle environment by amending the parameters in the configuration file: `./config/vagrant.yml` |
| 56 | +The following can be customized: |
| 57 | + |
| 58 | +#### host1 |
| 59 | + |
| 60 | +- `vm_name` : VM Guest partial name. The full name will be <prefix_name>-<vm_name> |
| 61 | +- `mem_size` : VM Guest memory size Mb (minimum 12Gb --> 12288) |
| 62 | +- `cpus` : VM Guest virtual cores |
| 63 | +- `public_ip` : VM public ip. |
| 64 | +- `vip_ip` : Oracle RAC VirtualIP (VIP). |
| 65 | +- `private_ip` : VM private ip |
| 66 | +- `scan_ip1` : Oracle RAC SCAN IP1 |
| 67 | +- `scan_ip2` : Oracle RAC SCAN IP2 |
| 68 | +- `scan_ip3` : Oracle RAC SCAN IP3 |
| 69 | +- `gns_IP` : Oracle RAC GNS (FPP requirement) |
| 70 | +- `ha_vip` : Oracle RAC HA_VIP (FPP requirement) |
| 71 | +- `storage_pool_name`: KVM/libVirt storage pool name |
| 72 | +- `u01_disk`: VirtualBox Oracle binary virtual disk (u01) file path |
| 73 | + |
| 74 | + |
| 75 | +#### host2 |
| 76 | + |
| 77 | +- `vm_name` : VM Guest partial name. The full name will be <prefix_name>-<vm_name> |
| 78 | +- `mem_size` : VM Guest memory size Mb (minimum 6Gb --> 6144) |
| 79 | +- `cpus` : VM Guest virtual cores |
| 80 | +- `public_ip` : VM public ip. |
| 81 | +- `storage_pool_name`: KVM/libVirt storage pool name |
| 82 | +- `u01_disk`: VirtualBox Oracle binary virtual disk (u01) file path |
| 83 | +- `deploy` : It can be 'true' or 'false'. Using false node2 deploy will be skipped. |
| 84 | + |
| 85 | +#### shared network |
| 86 | + |
| 87 | +- `prefix_name` : VM Guest prefix name (the GI cluster name will be: <prefix_name>-c') |
| 88 | +- `network` : It can be 'hostonly' or 'public'. |
| 89 | + - In case of 'hostonly', the guest VMs are using "host-Only" network defined as 'vboxnet0' |
| 90 | + - In case of 'public' a bridge network will be setup ('netmask' and 'gateway' are required). During startup the bridge network is required |
| 91 | +- `bridge_nic` : KVM/libVirt bridge NIC, required in case of 'public' network |
| 92 | +- `netmask` : Required in case of 'public' network |
| 93 | +- `gateway` : Required in case of 'public' network |
| 94 | +- `dns_public_ip` : Required in case of 'public' network |
| 95 | +- `domain` : VM Guest domain name |
| 96 | + |
| 97 | +#### shared storage |
| 98 | + |
| 99 | +- `storage_pool_name`: KVM/libVirt Oradata dbf KVM storage pool name |
| 100 | +- `oradata_disk_path`: VirtualBox Oradata dbf path |
| 101 | +- `asm_disk_num` : Oracle RAC Automatic Storage Manager virtual disk number (min 4) |
| 102 | +- `asm_disk_size` : Oracle RAC Automatic Storage Manager virtual disk (max) size in Gb (at least 10) |
| 103 | + |
| 104 | +#### environment |
| 105 | + |
| 106 | +- `provider` : It's defining the provider to be used: 'libvirt' or 'virtualbox' |
| 107 | +- `grid_software` : Oracle Database 18c Grid Infrastructure (18.3) for Linux x86-64 zip file (or above) |
| 108 | +- `root_password` : VM Guest root password |
| 109 | +- `grid_password` : VM Guest grid password |
| 110 | +- `oracle_password` : VM Guest oracle password |
| 111 | +- `sys_password` : Oracled RDBMS SYS password |
| 112 | +- `ora_languages` : Oracle products languages |
| 113 | +- `asm_lib_type` : ASM library in use (ASMLIB/AFD) |
| 114 | + |
| 115 | +#### Virtualbox provider Example1 (Oracle FPP Server available on host-only Virtualbox network): |
| 116 | + |
| 117 | + host1: |
| 118 | + vm_name: fpps |
| 119 | + mem_size: 16384 |
| 120 | + cpus: 1 |
| 121 | + private_ip: 192.168.200.101 |
| 122 | + public_ip: 192.168.56.101 |
| 123 | + vip_ip: 192.168.56.102 |
| 124 | + scan_ip1: 192.168.56.105 |
| 125 | + scan_ip2: 192.168.56.106 |
| 126 | + scan_ip3: 192.168.56.107 |
| 127 | + gns_ip: 192.168.56.108 |
| 128 | + ha_vip: 192.168.56.109 |
| 129 | + storage_pool_name: Vagrant_KVM |
| 130 | + |
| 131 | + host2: |
| 132 | + vm_name: fppc |
| 133 | + mem_size: 8192 |
| 134 | + cpus: 1 |
| 135 | + public_ip: 192.168.56.201 |
| 136 | + storage_pool_name: Vagrant_KVM |
| 137 | + deploy: 'true' |
| 138 | + |
| 139 | + shared: |
| 140 | + prefix_name: ol7-fpp |
| 141 | + # --------------------------------------------- |
| 142 | + network: hostonly |
| 143 | + domain: localdomain |
| 144 | + # --------------------------------------------- |
| 145 | + non_rotational: 'on' |
| 146 | + asm_disk_num: 8 |
| 147 | + asm_disk_size: 10 |
| 148 | + storage_pool_name: Vagrant_KVM |
| 149 | + # --------------------------------------------- |
| 150 | + |
| 151 | + env: |
| 152 | + provider: virtualbox |
| 153 | + # --------------------------------------------- |
| 154 | + gi_software: LINUX.X64_213000_grid_home.zip |
| 155 | + db_software: LINUX.X64_213000_db_home.zip |
| 156 | + # --------------------------------------------- |
| 157 | + root_password: welcome1 |
| 158 | + grid_password: welcome1 |
| 159 | + oracle_password: welcome1 |
| 160 | + sys_password: welcome1 |
| 161 | + # --------------------------------------------- |
| 162 | + ora_languages: en,en_GB |
| 163 | + # --------------------------------------------- |
| 164 | + |
| 165 | +#### Virtualbox provider Example2: (Oracle FPP Server available on public network): |
| 166 | + |
| 167 | + host1: |
| 168 | + vm_name: fpps |
| 169 | + mem_size: 16384 |
| 170 | + cpus: 2 |
| 171 | + public_ip: 10.0.0.101 |
| 172 | + vip_ip: 10.0.0.102 |
| 173 | + scan_ip1: 10.0.0.105 |
| 174 | + scan_ip2: 10.0.0.106 |
| 175 | + scan_ip3: 10.0.0.107 |
| 176 | + gns_ip: 10.0.0.108 |
| 177 | + ha_vip: 10.0.0.109 |
| 178 | + private_ip: 192.168.200.101 |
| 179 | + storage_pool_name: Vagrant_KVM |
| 180 | + |
| 181 | + host2: |
| 182 | + vm_name: fppc |
| 183 | + mem_size: 8192 |
| 184 | + cpus: 1 |
| 185 | + public_ip: 10.0.0.201 |
| 186 | + storage_pool_name: Vagrant_KVM |
| 187 | + deploy: 'false' |
| 188 | + |
| 189 | + shared: |
| 190 | + prefix_name: vgt-ol7-fpp |
| 191 | + # --------------------------------------------- |
| 192 | + network: public |
| 193 | + netmask: 255.255.255.0 |
| 194 | + gateway: 10.0.0.1 |
| 195 | + dns_public_ip: 8.8.8.8 |
| 196 | + domain: mydomain.it |
| 197 | + # --------------------------------------------- |
| 198 | + non_rotational: 'on' |
| 199 | + asm_disk_num: 4 |
| 200 | + asm_disk_size: 200 |
| 201 | + storage_pool_name: Vagrant_KVM |
| 202 | + # --------------------------------------------- |
| 203 | + |
| 204 | + env: |
| 205 | + provider: virtualbox |
| 206 | + # --------------------------------------------- |
| 207 | + gi_software: LINUX.X64_213000_grid_home.zip |
| 208 | + db_software: LINUX.X64_213000_db_home.zip |
| 209 | + # --------------------------------------------- |
| 210 | + root_password: welcome1 |
| 211 | + grid_password: welcome1 |
| 212 | + oracle_password: welcome1 |
| 213 | + sys_password: welcome1 |
| 214 | + # --------------------------------------------- |
| 215 | + ora_languages: en,en_GB |
| 216 | + # --------------------------------------------- |
| 217 | + |
| 218 | +#### KVM/libVirt provider Example1 (Oracle FPP Server and FPP target on private network): |
| 219 | + |
| 220 | + host1: |
| 221 | + vm_name: fpps |
| 222 | + mem_size: 16384 |
| 223 | + cpus: 1 |
| 224 | + private_ip: 192.168.200.101 |
| 225 | + public_ip: 192.168.125.101 |
| 226 | + vip_ip: 192.168.125.102 |
| 227 | + scan_ip1: 192.168.125.105 |
| 228 | + scan_ip2: 192.168.125.106 |
| 229 | + scan_ip3: 192.168.125.107 |
| 230 | + gns_ip: 192.168.125.108 |
| 231 | + ha_vip: 192.168.125.109 |
| 232 | + storage_pool_name: Vagrant_KVM_Storage |
| 233 | + |
| 234 | + host2: |
| 235 | + vm_name: fppc |
| 236 | + mem_size: 8192 |
| 237 | + cpus: 1 |
| 238 | + public_ip: 192.168.125.201 |
| 239 | + storage_pool_name: Vagrant_KVM_Storage |
| 240 | + deploy: 'true' |
| 241 | + |
| 242 | + shared: |
| 243 | + prefix_name: vgt-ol7-fpp |
| 244 | + # --------------------------------------------- |
| 245 | + network: hostonly |
| 246 | + domain: localdomain |
| 247 | + # --------------------------------------------- |
| 248 | + asm_disk_num: 8 |
| 249 | + asm_disk_size: 10 |
| 250 | + storage_pool_name: Vagrant_KVM_Storage |
| 251 | + # --------------------------------------------- |
| 252 | + |
| 253 | + env: |
| 254 | + provider: libvirt |
| 255 | + # --------------------------------------------- |
| 256 | + gi_software: LINUX.X64_213000_grid_home.zip |
| 257 | + db_software: LINUX.X64_213000_db_home.zip |
| 258 | + # --------------------------------------------- |
| 259 | + root_password: welcome1 |
| 260 | + grid_password: welcome1 |
| 261 | + oracle_password: welcome1 |
| 262 | + sys_password: welcome1 |
| 263 | + # --------------------------------------------- |
| 264 | + ora_languages: en,en_GB |
| 265 | + # --------------------------------------------- |
| 266 | + |
| 267 | +#### KVM/libVirt provider Example1 (Oracle FPP Server and FPP target on public network): |
| 268 | + |
| 269 | + host1: |
| 270 | + vm_name: fpps |
| 271 | + mem_size: 16384 |
| 272 | + cpus: 1 |
| 273 | + private_ip: 192.168.200.101 |
| 274 | + public_ip: 192.168.125.101 |
| 275 | + vip_ip: 192.168.125.102 |
| 276 | + scan_ip1: 192.168.125.105 |
| 277 | + scan_ip2: 192.168.125.106 |
| 278 | + scan_ip3: 192.168.125.107 |
| 279 | + gns_ip: 192.168.125.108 |
| 280 | + ha_vip: 192.168.125.109 |
| 281 | + storage_pool_name: Vagrant_KVM_Storage |
| 282 | + |
| 283 | + host2: |
| 284 | + vm_name: fppc |
| 285 | + mem_size: 8192 |
| 286 | + cpus: 1 |
| 287 | + public_ip: 192.168.125.201 |
| 288 | + storage_pool_name: Vagrant_KVM_Storage |
| 289 | + deploy: 'true' |
| 290 | + |
| 291 | + shared: |
| 292 | + prefix_name: vgt-ol7-fpp |
| 293 | + # --------------------------------------------- |
| 294 | + network: hostonly |
| 295 | + bridge_nic: br0 |
| 296 | + netmask: 255.255.255.0 |
| 297 | + gateway: 10.0.0.1 |
| 298 | + dns_public_ip: 8.8.8.8 |
| 299 | + domain: localdomain |
| 300 | + # --------------------------------------------- |
| 301 | + asm_disk_num: 8 |
| 302 | + asm_disk_size: 10 |
| 303 | + storage_pool_name: Vagrant_KVM_Storage |
| 304 | + # --------------------------------------------- |
| 305 | + |
| 306 | + env: |
| 307 | + provider: libvirt |
| 308 | + # --------------------------------------------- |
| 309 | + gi_software: LINUX.X64_213000_grid_home.zip |
| 310 | + db_software: LINUX.X64_213000_db_home.zip |
| 311 | + # --------------------------------------------- |
| 312 | + root_password: welcome1 |
| 313 | + grid_password: welcome1 |
| 314 | + oracle_password: welcome1 |
| 315 | + sys_password: welcome1 |
| 316 | + # --------------------------------------------- |
| 317 | + ora_languages: en,en_GB |
| 318 | + # --------------------------------------------- |
| 319 | + |
| 320 | +## Note |
| 321 | + |
| 322 | +- `SYSTEM_TIMEZONE`: `automatically set (see below)` |
| 323 | + The system time zone is used by the database for SYSDATE/SYSTIMESTAMP. |
| 324 | + The guest time zone will be set to the host time zone when the host time zone is a full hour offset from GMT. |
| 325 | + When the host time zone isn't a full hour offset from GMT (e.g., in India and parts of Australia), the guest time zone will be set to UTC. |
| 326 | + You can specify a different time zone using a time zone name (e.g., "America/Los_Angeles") or an offset from GMT (e.g., "Etc/GMT-2"). For more information on specifying time zones, see [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). |
| 327 | +- Wallet Zip file location `/tmp/wallet_<pdb name>.zip`. |
| 328 | + Copy the file on client machine, unzip and set TNS_ADMIN to Wallet loc. Connect to DB using Oracle Sql Client or using your App |
| 329 | +- Using KVM/libVirt provider you may need add a firewall rule to permit NFS shared folder mounted on the guest |
| 330 | + |
| 331 | + example: using 'uwf' : `sudo ufw allow to 192.168.121.1` where 192.168.121.1 is the IP for the `vagrant-libvirt` network (created by vagrant automatically) |
| 332 | + |
| 333 | + virsh net-dumpxml vagrant-libvirt |
| 334 | + <network connections='1' ipv6='yes'> |
| 335 | + <name>vagrant-libvirt</name> |
| 336 | + <uuid>d2579032-4e5e-4c3f-9d42-19b6c64ac609</uuid> |
| 337 | + <forward mode='nat'> |
| 338 | + <nat> |
| 339 | + <port start='1024' end='65535'/> |
| 340 | + </nat> |
| 341 | + </forward> |
| 342 | + <bridge name='virbr1' stp='on' delay='0'/> |
| 343 | + <mac address='52:54:00:05:12:14'/> |
| 344 | + <ip address='192.168.121.1' netmask='255.255.255.0'> |
| 345 | + <dhcp> |
| 346 | + <range start='192.168.121.1' end='192.168.121.254'/> |
| 347 | + </dhcp> |
| 348 | + </ip> |
| 349 | + </network> |
| 350 | +- If you are behind a proxy, set the following env variables |
| 351 | + - (Linux/MacOSX) |
| 352 | + - export http_proxy=http://proxy:port |
| 353 | + - export https_proxy=https://proxy:port |
| 354 | + |
| 355 | + - (Windows) |
| 356 | + - set http_proxy=http://proxy:port |
| 357 | + - set https_proxy=https://proxy:port |
| 358 | + |
| 359 | +## FPP commands you could test postdeploy based on the configuration file above |
| 360 | + |
| 361 | +Note1 : as you need the Database binaries zip file under "ORCL_software" |
| 362 | +Note2 : having limited resource you may want setup the following JAVA env variables for grid user : `JVM_ARGS="-Xms512m -Xmx512m" and _JAVA_OPTIONS="-XX:ParallelGCThreads=2"` before rhpctl commands executions |
| 363 | +Note3 : you can connect host1/host2 issuing 'vagrant ssh host1/host2' |
| 364 | +Note4 : following some fpp commands you may want to try |
| 365 | + |
| 366 | +- `rhpctl import image -image db_21300 -imagetype ORACLEDBSOFTWARE -zip /vagrant/ORCL_software/LINUX.X64_213000_db_home.zip` |
| 367 | +- `rhpctl import image -image gi_21300 -imagetype ORACLEGISOFTWARE -zip /vagrant/ORCL_software/LINUX.X64_213000_grid_home.zip` |
| 368 | +- `rhpctl add workingcopy -workingcopy wc_db_21300 -image db_21300 -user oracle -groups OSBACKUP=dba,OSDG=dba,OSKM=dba,OSRAC=dba -oraclebase /u01/app/oracle -path /u01/app/oracle/product/213000/dbhome_1 -targetnode fppc -root` |
| 369 | +- `rhpctl add database -workingcopy wc_db_21300 -dbname ORCL -dbtype SINGLE -cdb -pdbName PDB -numberOfPDBs 2 -root` |
| 370 | +- (...) |
0 commit comments