Skip to content

Commit

Permalink
Merge pull request #102 from Rendanic/prantsibull-changelog
Browse files Browse the repository at this point in the history
antsibull-changelog
  • Loading branch information
Rendanic authored Jul 9, 2022
2 parents 28f7264 + ccb62ef commit 6c097b5
Show file tree
Hide file tree
Showing 22 changed files with 403 additions and 214 deletions.
2 changes: 2 additions & 0 deletions .ansible-lint
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ exclude_paths:
- dbhome-conversion
- plugins/modules
- playbooks
- changelogs/changelog.yaml
- changelogs/.plugin-cache.yaml
31 changes: 31 additions & 0 deletions .github/workflows/changelog-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Test antsibull-changelog lint

on:
pull_request:
branches:
- oc
- master
- collection
push:
branches:
- 'pr*'

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: 3.9

- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install antsibull-changelog
- name: antsibull-changelog lint (own changelog fragments)
run: |
antsibull-changelog lint
243 changes: 243 additions & 0 deletions README.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
:toc:
:toc-placement!:
toc::[]

* Installs Oracle RAC, RAC One Node and normal single instances.
* Start with one or more clean machine(s), end up with a fully
configured RAC Cluster.
== Getting started

Pre-requisites:

* Ansible >= 2.4
* Oracle Linux (or any RHEL-based Linux System) >= 6.4
* Oracle Database/Grid Infrastructure 18.3.0.0, 12.2.0.1, 12.1.0.1,
12.1.0.2, 11.2.0.4, 11.2.0.3
* For example configurations, look in:

----
SI/FS: group_vars/vbox-si-fs. - vagrant config: http://github.com/oravirt/vagrant-vbox-si-fs
SI/ASM: group_vars/vbox-si-asm - vagrant config: http://github.com/oravirt/vagrant-vbox-si-asm
RAC/ASM: group_vars/vbox-rac-dc1 - vagrant config: http://github.com/oravirt/vagrant-vbox-rac
----

By default, installs a single instance 18.3.0.0 database on a
filesystem.

. Clone this repository:
`git clone --recursive https://github.com/oravirt/ansible-oracle`
. Add the following file to `/tmp` on the controlmachine
* `LINUX.X64_180000_db_home.zip`
. Create an Ansible inventory file
+
....
[myhostgroup]
dbhost
....
. Run the playbook:
+
`ansible-playbook single-instance-db-on-fs.yml -e hostgroup=myhostgroup -i /path/to/inventory`
+
where the `-i` part is optional

== Roles

A lot of these roles uses Ansible modules that comes from
https://github.com/oravirt/ansible-oracle-modules[ansible-oracle-modules]

=== common

This will configure stuff common to all machines

* Install some generic packages
* Configure ntp

=== orahost

This will configure the host specific Oracle stuff:

* Add a user & group
* Create directory structures
* Handle filesystem storage (partition devices, creates vg/lv and a
filesystem (ext4, xfs, btrfs) etc). If you want to create your database
on a filesystem (instead of ASM) this is where you define the layout.
* Install required packages
* Change kernel paramemeters
* Set up pam.d/limits config
* Configures Hugepages (as a percentage of total RAM)
* Disables transparent hugepages
* Disables NUMA (if needed)
* Configures the interconnect network (if needed)
* Configures Oracle ASMLib

=== orahost-ssh

Configures passwordless ssh between clusternodes if setting up RAC
(`configure_cluster=True`)

* Uses existing ssh-keys

=== orahost-storage

This role configures storage that shoud be used by ASM.

* Partitions devices (using parted)
* Create ASMlib labels or sets up udev-rules for device name persistence

=== oraswgi-install

This role will install and configure Oracle Grid Infrastructure (RAC/SI)

* Adds a .profile_grid to the oracle user
* Sets up directory structures
* Copies the install-files to the servers, or installs from a remote
location (e.g nfs share)
* Install Oracle Grid Infrastructure

=== oraasm-manage-diskgroups

This role will statefully manage the lifecycle of an ASM diskgroup

* Uses the *oracle_asmdg* module
* Create/delete diskgroup.
* Add/remove disks
* Manage attributes for the DG

=== oraswdb-install

This role will install the oracle database server(s). It is possible to
run more than 1 database from each home. It performs both Single
Instance/RAC installations.

* Creates a .profile with the correct environment
* Creates directory structures
* Installs the database-server(s)

=== oradb-manage-db

This role statefully manages the lifecycle of a database

* Uses the *oracle_db* module
* Creates/deletes: `state: present/absent`
* Maintains archivelog/force_logging True/False

=== oraswgi-manage-patches

Manage patches in a GI environment

* Uses the *oracle_opatch* module
* Manages opatchauto type of patches as well as 'normal' one-offs

=== oraswdb-manage-patches

Statefully manage patches in a DB environment

* Uses the *oracle_opatch* module
* Manages opatchauto type of patches as well as 'normal' one-offs

=== cxoracle

Installs cx_Oracle in preparation for using
https://github.com/oravirt/ansible-oracle-modules[ansible-oracle-modules]

=== orahost-cron

Configures cron schedules if needed

=== orahost-logrotate

=== oradb-manage-<*>

Statefully manages various aspects of the DB. They all use modules from
https://github.com/oravirt/ansible-oracle-modules[ansible-oracle-modules]

* *oradb-manage-pdb*
* *oradb-manage-tablespace*
* *oradb-manage-parameters*
* *oradb-manage-roles*
* *oradb-manage-users*
* *oradb-manage-grants*
* *oradb-manage-redo*
* *oradb-manage-services*

== Deprecated roles

*_oraswgi-opatch (use oraswgi-manage-patches instead)_*

== Note

These are the Oracle binaries that are pre-configured to be used. They
have to be manually downloaded and made available (either locally, from
a web endpoint or through a nfs-share)

For 18.3.0.0:

----
LINUX.X64_180000_db_home.zip
LINUX.X64_180000_grid_home.zip
----

For 12.2.0.1:

----
linuxx64_12201_database.zip
linuxx64_12201_grid_home.zip
----

For 12.1.0.2

----
linuxamd64_12102_database_1of2.zip
linuxamd64_12102_database_2of2.zip
linuxamd64_12102_grid_1of2.zip
linuxamd64_12102_grid_2of2.zip
----

For 12.1.0.1:

----
linuxamd64_12c_database_1of2.zip
linuxamd64_12c_database_2of2.zip
linuxamd64_12c_grid_1of2.zip
linuxamd64_12c_grid_2of2.zip
----

For 11.2.0.4:

----
p13390677_112040_Linux-x86-64_1of7.zip
p13390677_112040_Linux-x86-64_2of7.zip
p13390677_112040_Linux-x86-64_3of7.zip
----

For 11.2.0.3:

----
p10404530_112030_Linux-x86-64_1of7.zip
p10404530_112030_Linux-x86-64_2of7.zip
p10404530_112030_Linux-x86-64_3of7.zip
----

== Pull-Requests

=== Important Information

The ansible-oracle project introduced `antsibull-changelog` for managing the `CHANGELOG.rst` based on fragments in `changelogs/gragments`.

The ID should point to the PR and the filename describe the PR in short form.
The fragments are part of the PR. If multiple PRs are open, the upper rule makes sure that no duplicate files are created during merge.

IMPORTANT: Each Pull-Requests needs a fragment from Release 3.0.0 onwards!

=== Working with antsibull-changelog

Changelogs for Collections: https://github.com/ansible-community/antsibull-changelog/blob/main/docs/changelogs.rst#releasing-a-new-version-of-a-collection

=== Creating new releases

`antsibull-changelog release` reads `galaxy.yml` to get the release version automatically.
The execution is aborted, when a release with the version is existing in `CHANGELOG.rst`.

NOTE: The whole release process should be donw with a dedicated Pull-Request.

Loading

0 comments on commit 6c097b5

Please sign in to comment.