Puppet Class: db2_profile::database

Inherits:
db2_profile
Inherited by:
db2_profile::database::cis_controls
Defined in:
manifests/database.pp

Summary

This is a highly customizable Puppet profile class to define an IBM DB2 database on your system.

Overview

db2_profile::database

In it’s core just adding:

“‘ contain db2_profile::database “`

Is enough to get an IBM DB2 database running on your system.

But sometimes you have specific uses cases that are not handled well by the standard classes. This profile class allows you to add your own code to the execution.

## Steps

Defining and starting an DB2 database on you system goes through several steps :

  • ‘em_license` (setup Enterprise Modules licenses)

  • ‘setup` (Configure DB2 fact caching)

  • ‘sysctl` (Set required sysctl settings)

  • ‘limits` (Set required security limits)

  • ‘groups_and_users` (Ensure required OS groups and users)

  • ‘packages` (Ensure require OS packages)

  • ‘firewall` (Configure firewall for DB2 usage)

  • ‘db_software` (Install the DB2 software)

  • ‘db_fixpack` (Install the DB2 fixpack)

  • ‘db_instance` (Ensure DB2 instances)

  • ‘db_definition` (Ensure DB2 databases)

  • ‘db_primary` (Set the database as primary database when using HADR)

  • ‘db_standby` (Set the database as standby database when using HADR)

  • ‘db_tablespaces` (Ensure DB2 tablespaces)

  • ‘db_users` (Ensure DB2 users in database)

  • ‘db_roles` (Ensure DB2 roles)

  • ‘db_groups` (Ensure DB2 groups in database)

  • ‘db_schemas` (Ensure DB2 schemas)

  • ‘db_startup` (Esnure DB2 startup after reboot)

All these steps have a default implementation. This implementation is suitable to get started with. These classed all have parameters you can customize through hiera values. The defaults are specified in the module’s ‘data/default.yaml` file.

## before classes

But sometimes this is not enough and you would like to add some extra definitions, you can, for example, add a Puppet class to be executed after the ‘systctl` stage is done and before the `limits` is done. You can do this by adding the next line to your yaml data:

“‘yaml db2_profile::database::before_sysctl: my_profile::my_extra_class “`

## after classes

You can do the same when you want to add code after one of the stage classes:

“‘yaml db2_profile::database::after_sysctl: my_profile::my_extra_class “`

## Skipping

Sometimes organisation use different modules and mechanisms to implement a feature and you want to skip the class:

“‘yaml db2_profile::database::sysctl: skip “`

## Replacing

Or provide your own implementation:

“‘yaml db2_profile::database::sysctl: my_profile::my_own_implementation “`

This mechanism can be used for all named steps and makes it easy to move from an easy setup with a running standard database to a fully customized setup using a lot of your own classes plugged in.

Look at the description of the steps and their properties.

See the file “LICENSE” for the full license governing this code.

Parameters:

  • cluster_manager (Optional[String]) (defaults to: undef)

    The cluster manager to apply when using a HADR setup. At this point in time only the Pacemaker cluster manager is supported. When you leave this paramater undefined, no cluster manager is applied.

  • passwordless_root (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘limits`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::passwordless_root: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::passwordless_root: skip “`

  • before_passwordless_root (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘passwordless_root` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_passwordless_root: my_module::my_class “`

  • after_passwordless_root (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘passwordless_root` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_passwordless_root: my_module::my_class “`

  • pacemaker_setup (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘pacemaker_setup`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::pacemaker_setup: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::pacemaker_setup: skip “`

  • before_pacemaker_setup (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘pacemaker_setup` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_pacemaker_setup: my_module::my_class “`

  • after_pacemaker_setup (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘pacemaker_setup` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_pacemaker_setup: my_module::my_class “`

  • after_db_primary (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_primary` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_primary: my_module::my_class “`

  • after_db_standby (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_standby` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_primary: my_module::my_class “`

  • before_db_primary (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_primary` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_primary: my_module::my_class “`

  • before_db_standby (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_standby` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_standby: my_module::my_class “`

  • db_primary (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_primary`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_primary: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_primary: skip “`

  • db_standby (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_standby`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_standby: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_standby: skip “`

  • primary (Optional[String[1]]) (defaults to: undef)

    The full qualified host name of the node you wan to use as primary DB2 node. When you specify this variable, Puppet will create a HADR DB2 configuration. When the current FQDN equals the name specfied here, Puppet will create a primary DB2 node. When the FQDN is different, Puppet will configure the node as a standby database. You’ll have to ensure the the setting for the ‘db2_database` for all nodes are set correctly. These values are relevant:

    • hadr_local_host

    • hadr_local_svc

    • hadr_remote_host

    • hadr_remote_svc

    • hadr_remote_inst

  • after_db_definition (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_definition` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_definition: my_module::my_class “`

  • after_db_fixpack (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_fixpack` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_fixpack: my_module::my_class “`

  • after_db_instance (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_instance` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_instance: my_module::my_class “`

  • after_db_roles (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_roles` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_roles: my_module::my_class “`

  • after_db_software (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_software` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_software: my_module::my_class “`

  • after_db_startup (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_startup` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_startup: my_module::my_class “`

  • after_db_tablespaces (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_tablespaces` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_tablespaces: my_module::my_class “`

  • after_db_users (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_users` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_users: my_module::my_class “`

  • after_db_groups (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_groups` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_groups: my_module::my_class “`

  • after_db_schemas (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘db_schemas` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_db_schemas: my_module::my_class “`

  • after_em_license (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘em_license` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_em_license: my_module::my_class “`

  • after_setup (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘setup` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_setup: my_module::my_class “`

  • after_firewall (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘firewall` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_firewall: my_module::my_class “`

  • after_groups_and_users (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘groups_and_users` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_groups_and_users: my_module::my_class “`

  • after_limits (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘limits` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_limits: my_module::my_class “`

  • after_packages (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘packages` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_packages: my_module::my_class “`

  • after_sysctl (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly after the ‘sysctl` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::after_sysctl: my_module::my_class “`

  • before_db_definition (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_definitio` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_definitio: my_module::my_class “`

  • before_db_fixpack (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_fixpack` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_fixpack: my_module::my_class “`

  • before_db_instance (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_instance` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_instance: my_module::my_class “`

  • before_db_roles (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_roles` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_roles: my_module::my_class “`

  • before_db_software (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_software` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_software: my_module::my_class “`

  • before_db_startup (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_startup` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_startup: my_module::my_class “`

  • before_db_schemas (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_schemas` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_schemas: my_module::my_class “`

  • before_db_tablespaces (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_tablespaces` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_tablespaces: my_module::my_class “`

  • before_db_users (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_users` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_users: my_module::my_class “`

  • before_db_groups (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘db_groups` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_db_groups: my_module::my_class “`

  • before_em_license (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘em_license` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_em_license: my_module::my_class “`

  • before_setup (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘setup` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_setup: my_module::my_class “`

  • before_firewall (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘firewall` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_firewall: my_module::my_class “`

  • before_groups_and_users (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘groups_and_users` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_groups_and_users: my_module::my_class “`

  • before_limits (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘limits` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_limits: my_module::my_class “`

  • before_packages (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘packages` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_packages: my_module::my_class “`

  • before_sysctl (Optional[String]) (defaults to: undef)

    The name of the class you want to execute directly before the ‘sysctl` class. You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::before_sysctl: my_module::my_class “`

  • db_definition (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_definition`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_definition: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_definition: skip “`

  • db_fixpack (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_fixpack`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_fixpack: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_fixpack: skip “`

  • db_instance (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_instance`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_instance: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_instance: skip “`

  • db_roles (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_roles`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_roles: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_roles: skip “`

  • db_groups (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_groups`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_groups: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_groups: skip “`

  • db_schemas (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_schemas`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_schemas: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_schemas: skip “`

  • db_software (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_software`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_software: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_software: skip “`

  • db_startup (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_startup`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_startup: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_startup: skip “`

  • db_tablespaces (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_tablespaces`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_tablespaces: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_tablespaces: skip “`

  • db_users (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘db_users`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_users: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::db_users: skip “`

  • em_license (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘em_license`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::em_license: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::em_license: skip “`

  • setup (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘setup`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::setup: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::setup: skip “`

  • firewall (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘firewall`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::firewall: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::firewall: skip “`

  • groups_and_users (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘groups_and_users`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::groups_and_users: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::groups_and_users: skip “`

  • limits (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘limits`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::limits: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::limits: skip “`

  • packages (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘packages`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::packages: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::packages: skip “`

  • sysctl (Optional[String]) (defaults to: undef)

    Use this value if you want to skip or use your own class for stage ‘sysctl`. ## Use your own class You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::sysctl: my_module::my_class “` ## Skip You can use hiera to set this value. Here is an example: “`yaml db2_profile::database::sysctl: skip “`



663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
# File 'manifests/database.pp', line 663

class db2_profile::database (
  Optional[String] $after_db_definition = undef,
  Optional[String] $after_db_fixpack = undef,
  Optional[String] $after_db_groups = undef,
  Optional[String] $after_db_instance = undef,
  Optional[String] $after_db_primary = undef,
  Optional[String] $after_db_roles = undef,
  Optional[String] $after_db_schemas = undef,
  Optional[String] $after_db_software = undef,
  Optional[String] $after_db_standby = undef,
  Optional[String] $after_db_startup = undef,
  Optional[String] $after_db_tablespaces = undef,
  Optional[String] $after_db_users = undef,
  Optional[String] $after_em_license = undef,
  Optional[String] $after_setup = undef,
  Optional[String] $after_firewall = undef,
  Optional[String] $after_groups_and_users = undef,
  Optional[String] $after_limits = undef,
  Optional[String] $after_pacemaker_setup = undef,
  Optional[String] $after_packages = undef,
  Optional[String] $after_passwordless_root = undef,
  Optional[String] $after_sysctl = undef,
  Optional[String] $before_db_definition = undef,
  Optional[String] $before_db_fixpack = undef,
  Optional[String] $before_db_groups = undef,
  Optional[String] $before_db_instance = undef,
  Optional[String] $before_db_primary = undef,
  Optional[String] $before_db_roles = undef,
  Optional[String] $before_db_schemas = undef,
  Optional[String] $before_db_software = undef,
  Optional[String] $before_db_standby = undef,
  Optional[String] $before_db_startup = undef,
  Optional[String] $before_db_tablespaces = undef,
  Optional[String] $before_db_users = undef,
  Optional[String] $before_em_license = undef,
  Optional[String] $before_setup = undef,
  Optional[String] $before_firewall = undef,
  Optional[String] $before_groups_and_users = undef,
  Optional[String] $before_limits = undef,
  Optional[String] $before_pacemaker_setup = undef,
  Optional[String] $before_packages = undef,
  Optional[String] $before_passwordless_root = undef,
  Optional[String] $before_sysctl = undef,
  Optional[String] $cluster_manager = undef,
  Optional[String] $db_definition = undef,
  Optional[String] $db_fixpack = undef,
  Optional[String] $db_groups = undef,
  Optional[String] $db_instance = undef,
  Optional[String] $db_primary = undef,
  Optional[String] $db_roles = undef,
  Optional[String] $db_schemas = undef,
  Optional[String] $db_software = undef,
  Optional[String] $db_standby = undef,
  Optional[String] $db_startup = undef,
  Optional[String] $db_tablespaces = undef,
  Optional[String] $db_users = undef,
  Optional[String] $em_license = undef,
  Optional[String] $setup = undef,
  Optional[String] $firewall = undef,
  Optional[String] $groups_and_users = undef,
  Optional[String] $limits = undef,
  Optional[String] $pacemaker_setup = undef,
  Optional[String] $packages = undef,
  Optional[String] $passwordless_root = undef,
  Optional[String[1]] $primary = undef,
  Optional[String] $sysctl = undef
) inherits db2_profile {
  $is_linux   = $facts['kernel'] == 'Linux'
  $is_windows = $facts['kernel'] == 'Windows'
  $is_hadr    = $primary != undef
  $is_primary = $primary == $facts['networking']['fqdn'] and $is_hadr
  $is_standby = !$is_primary
  $configure_cluster_manager = $cluster_manager == 'pacemaker' and $is_hadr

  easy_type::debug_evaluation() # Show local variable on extended debug

  easy_type::ordered_steps([
      'db2_profile::database::em_license',
      'db2_profile::database::setup',
      ['db2_profile::database::sysctl', { 'onlyif' => $is_linux, 'implementation' => 'easy_type::profile::sysctl' }],
      ['db2_profile::database::limits', { 'onlyif' => $is_linux, 'implementation' => 'easy_type::profile::limits' }],
      ['db2_profile::database::groups_and_users', { 'onlyif' => $is_linux, 'implementation' => 'easy_type::profile::groups_and_users' }],
      ['db2_profile::database::packages', { 'onlyif' => $is_linux, 'implementation' => 'easy_type::profile::packages' }],
      ['db2_profile::database::firewall', { 'onlyif' => $is_linux, 'implementation' => 'easy_type::profile::firewall' }],
      'db2_profile::database::db_software',
      'db2_profile::database::db_fixpack',
      'db2_profile::database::db_instance',
      ['db2_profile::database::db_definition', { 'onlyif' => $is_primary or !$is_hadr }],
      ['db2_profile::database::db_primary', { 'onlyif' => $is_primary and $is_hadr }],
      ['db2_profile::database::db_standby', { 'onlyif' => !$is_primary and $is_hadr }],
      ['db2_profile::database::passwordless_root', { 'onlyif' => $configure_cluster_manager }],
      ['db2_profile::database::pacemaker_setup', { 'onlyif' => $configure_cluster_manager and $is_standby }],
      'db2_profile::database::db_tablespaces',
      'db2_profile::database::db_users',
      'db2_profile::database::db_roles',
      'db2_profile::database::db_groups',
      'db2_profile::database::db_schemas',
      'db2_profile::database::db_startup'
  ])
}