DEFAULT resource template

##############################################################################
#                                                                            #
# DEFAULT                                                                    #
#                                                                            #
##############################################################################

[DEFAULT]
#
# keyword:       mode
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      hosted
#  candidates:   hosted | sg | vcs | rhcs
#  depends:      None
#  scopable:     False
#
#  desc:  The mode decides upon disposition OpenSVC takes to bring a service
#         up or down : virtualized services need special actions to prepare
#         and boot the container for example, which is not needed for 'hosted'
#         services.
#
;mode = hosted

#
# keyword:       lock_timeout
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      60
#  candidates:   None
#  depends:      None
#  scopable:     False
#
#  desc:  The duration in seconds the agent wait for the action lock
#         acquisition before aborting the action. The svcmgr --waitlock
#         parameter overrides this option.
#
;lock_timeout = 60

#
# keyword:       pkg_name
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      mode in ['vcs', 'sg', 'rhcs']
#  scopable:     True
#
#  desc:  The wrapped cluster package name, as known to the cluster manager in
#         charge.
#
;pkg_name = foo

#
# keyword:       docker_daemon_private
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      True
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  If set to False, this service will use the system's shared docker
#         daemon instance. This is parameter is forced to False on non-Linux
#         systems.
#
;docker_daemon_private = True

#
# keyword:       flex_primary
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      <first node of the nodes parameter>
#  candidates:   None
#  depends:      cluster_type in ['flex']
#  scopable:     True
#
#  desc:  The node in charge of syncing the other nodes. --cluster actions on
#         the flex_primary are execute on all peer nodes (ie, not drpnodes).
#
;flex_primary = <first node of the nodes parameter>

#
# keyword:       drp_flex_primary
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      <first node of the drpnodes parameter>
#  candidates:   None
#  depends:      cluster_type in ['flex']
#  scopable:     True
#
#  desc:  The drpnode in charge of syncing the other drpnodes. --cluster
#         actions on the drp_flex_primary are execute on all drpnodes (ie, not
#         pri nodes).
#
;drp_flex_primary = <first node of the drpnodes parameter>

#
# keyword:       rollback
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      True
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  If set to False, the default rollback on action error is inhibited,
#         leaving the service in its half-started state.
#
;rollback = True

#
# keyword:       status_schedule
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      @10
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  The service status evaluation schedule. See
#         usr/share/doc/template.node.conf for the schedule syntax.
#
;status_schedule = @10

#
# keyword:       comp_schedule
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      00:00-06:00@361
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  The service compliance run schedule. See
#         usr/share/doc/template.node.conf for the schedule syntax.
#
;comp_schedule = 00:00-06:00@361

#
# keyword:       monitor_schedule
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      @1
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  The service resource monitor schedule. See
#         usr/share/doc/template.node.conf for the schedule syntax.
#
;monitor_schedule = @1

#
# keyword:       resinfo_schedule
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      @60
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  The service resource info push schedule. See
#         usr/share/doc/template.node.conf for the schedule syntax.
#
;resinfo_schedule = @60

#
# keyword:       push_schedule
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      00:00-06:00@361
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  The service configuration emission to the collector schedule. See
#         usr/share/doc/template.node.conf for the schedule syntax.
#
;push_schedule = 00:00-06:00@361

#
# keyword:       sync_schedule
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      04:00-06:00@121
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  The default sync resources schedule. See
#         usr/share/doc/template.node.conf for the schedule syntax.
#
;sync_schedule = 04:00-06:00@121

#
# keyword:       docker_exe
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  If you have multiple docker versions installed and want the service
#         to stick to a version whatever the PATH definition, you should set
#         this parameter to the full path to the docker executable.
#
;docker_exe = /usr/bin/docker-1.8

#
# keyword:       docker_data_dir
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  If the service has docker-type container resources and
#         docker_daemon_private is set to True, the service handles the
#         startup of a private docker daemon. Its socket is
#         <pathvar>/<svcname>/docker.sock, and its data directory must be
#         specified using this parameter. This organization is necessary to
#         enable service relocalization.
#
;docker_data_dir = /srv/svc1/data/docker

#
# keyword:       docker_daemon_args
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  If the service has docker-type container resources, the service
#         handles the startup of a private docker daemon. OpenSVC sets the
#         socket and data dir parameters. Admins can set extra parameters
#         using this keyword. For example, it can be useful to set the --ip
#         parameter for a docker registry service.
#
;docker_daemon_args = --ip 1.2.3.4

#
# keyword:       docker_swarm_args
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  The arguments passed to docker swarm init on the flex primary, and
#         to docker swarm join on the the other nodes. The --token argument
#         must not be specified, as it is handled by the agent. Scoping this
#         parameter permits to set additional parameters on the flex_primary
#         for use with swarm init only, like --autolock.
#
;docker_swarm_args = --advertize-addr {ip#0.ipname} --listen-addr {ip#0.ipname}

#
# keyword:       prkey
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  Defines a specific default persistent reservation key for the
#         service. A prkey set in a resource takes priority. If no prkey is
#         specified in the service nor in the DEFAULT section, the prkey in
#         node.conf is used. If node.conf has no prkey set, the hostid is
#         computed and written in node.conf.
#
;prkey = foo

#
# keyword:       anti_affinity
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  A whitespace separated list of services this service is not allowed
#         to be started on the same node. The svcmgr --ignore-affinity option
#         can be set to override this policy.
#
;anti_affinity = svc1 svc2

#
# keyword:       no_preempt_abort
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      False
#  candidates:   True | False
#  depends:      None
#  scopable:     True
#
#  desc:  If set to 'true', OpenSVC will preempt scsi reservation with a
#         preempt command instead of a preempt and and abort. Some scsi target
#         implementations do not support this last mode (esx). If set to
#         'false' or not set, 'no_preempt_abort' can be activated on a per-
#         resource basis.
#
;no_preempt_abort = False

#
# keyword:       show_disabled
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      True
#  candidates:   True | False
#  depends:      None
#  scopable:     True
#
#  desc:  Specifies if the disabled resources must be included in the print
#         status and json status output.
#
;show_disabled = True

#
# keyword:       cluster
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     False
#
#  desc:  The symbolic name of the cluster. Used to label shared disks
#         represented to tiers-2 consumers like containers.
#
;cluster = cluster1

#
# keyword:       cluster_type
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      failover
#  candidates:   failover | flex | autoflex
#  depends:      None
#  scopable:     True
#
#  desc:  failover: the service is allowed to be up on one node at a time.
#         allactive: the service must be up on all nodes. flex: the service
#         can be up on n out of m nodes (n <= m), n/m must be in the
#         [flex_min_nodes, flex_max_nodes] range. autoflex: same as flex, but
#         charge the collector to start the service on passive nodes when the
#         average %cpu usage on active nodes > flex_cpu_high_threshold and
#         stop the service on active nodes when the average %cpu usage on
#         active nodes < flex_cpu_low_threshold.
#
;cluster_type = failover

#
# keyword:       env
# ----------------------------------------------------------------------------
#  required:     True
#  provisioning: False
#  default:      <same as node env>
#  candidates:   DEV | DRP | FOR | INT | PRA | PRD | PRJ | PPRD | REC | STG | TMP | TST | UAT
#  depends:      None
#  scopable:     False
#
#  desc:  A non-PRD service can not be brought up on a PRD node, but a PRD
#         service can be startup on a non-PRD node (in a DRP situation). The
#         default value is the node env.
#
;env = <same as node env>

#
# keyword:       flex_min_nodes
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      1
#  candidates:   None
#  depends:      cluster_type in ['flex', 'autoflex']
#  scopable:     False
#
#  desc:  Minimum number of active nodes in the cluster. Below this number
#         alerts are raised by the collector, and the collector won't stop any
#         more service instances.
#
;flex_min_nodes = 1

#
# keyword:       flex_max_nodes
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      10
#  candidates:   None
#  depends:      cluster_type in ['flex', 'autoflex']
#  scopable:     False
#
#  desc:  Maximum number of active nodes in the cluster. Above this number
#         alerts are raised by the collector, and the collector won't start
#         any more service instances. 0 means unlimited.
#
;flex_max_nodes = 10

#
# keyword:       flex_cpu_min_threshold
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      10
#  candidates:   None
#  depends:      cluster_type in ['flex', 'autoflex']
#  scopable:     False
#
#  desc:  Average CPU usage across the active cluster nodes below which the
#         collector raises alerts and decides to stop service instances with
#         autoflex cluster type.
#
;flex_cpu_min_threshold = 10

#
# keyword:       flex_cpu_max_threshold
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      70
#  candidates:   None
#  depends:      cluster_type in ['flex', 'autoflex']
#  scopable:     False
#
#  desc:  Average CPU usage across the active cluster nodes above which the
#         collector raises alerts and decides to start new service instances
#         with autoflex cluster type.
#
;flex_cpu_max_threshold = 70

#
# keyword:       docker_swarm_managers
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  List of nodes promoted as docker swarm managers.The flex primary
#         node is implicitely a manager. Whitespace separated.
#
;docker_swarm_managers = foo

#
# keyword:       nodes
# ----------------------------------------------------------------------------
#  required:     True
#  provisioning: False
#  default:      <hostname of the current node>
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  List of cluster local nodes able to start the service.  Whitespace
#         separated.
#
;nodes = <hostname of the current node>

#
# keyword:       autostart_node
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      <hostname of the current node>
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  A whitespace-separated list subset of 'nodes'. Defines the nodes
#         where the service will try to start on upon node reboot. On a
#         failover cluster there should only be one autostart node and the
#         start-up will fail if the service is already up on another node
#         though. If not specified, the service will never be started at node
#         boot-time, which is rarely the expected behaviour.
#
;autostart_node = <hostname of the current node>

#
# keyword:       drpnode
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  The backup node where the service is activated in a DRP situation.
#         This node is also a data synchronization target for 'sync'
#         resources.
#
;drpnode = node1

#
# keyword:       drpnodes
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     True
#
#  desc:  Alternate backup nodes, where the service could be activated in a
#         DRP situation if the 'drpnode' is not available. These nodes are
#         also data synchronization targets for 'sync' resources.
#
;drpnodes = node1 node2

#
# keyword:       encapnodes
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     False
#
#  desc:  The list of containers handled by this service and with an OpenSVC
#         agent installed to handle the encapsulated resources. With this
#         parameter set, parameters can be scoped with the @encapnodes suffix.
#
;encapnodes = vm1 vm2

#
# keyword:       app
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      DEFAULT
#  candidates:   None
#  depends:      None
#  scopable:     False
#
#  desc:  Used to identify who is responsible for is service, who is billable
#         and provides a most useful filtering key. Better keep it a short
#         code.
#
;app = DEFAULT

#
# keyword:       comment
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     False
#
#  desc:  Helps users understand the role of the service, which is nice to on-
#         call support people having to operate on a service they are not
#         usually responsible for.
#
;comment = foo

#
# keyword:       scsireserv
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      False
#  candidates:   True | False
#  depends:      None
#  scopable:     True
#
#  desc:  If set to 'true', OpenSVC will try to acquire a type-5 (write
#         exclusive, registrant only) scsi3 persistent reservation on every
#         path to disks of every disk group attached to this service. Existing
#         reservations are preempted to not block service start-up. If the
#         start-up was not legitimate the data are still protected from being
#         written over from both nodes. If set to 'false' or not set,
#         'scsireserv' can be activated on a per-resource basis.
#
;scsireserv = False

#
# keyword:       bwlimit
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     False
#
#  desc:  Bandwidth limit in KB applied to all rsync transfers. Leave empty to
#         enforce no limit.
#
;bwlimit = 3000

#
# keyword:       sync_interval
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      121
#  candidates:   None
#  depends:      None
#  scopable:     False
#
#  desc:  Set the minimum delay between syncs in minutes. If a sync is
#         triggered through crond or manually, it is skipped if last sync
#         occurred less than 'sync_min_delay' ago. The mecanism is enforced by
#         a timestamp created upon each sync completion in
#         <pathvar>/sync/[service]![dst]
#
;sync_interval = 121

#
# keyword:       sync_max_delay
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      1440
#  candidates:   None
#  depends:      None
#  scopable:     False
#
#  desc:  Unit is minutes. This sets to delay above which the sync status of
#         the resource is to be considered down. Should be set according to
#         your application service level agreement. The cron job frequency
#         should be set between 'sync_min_delay' and 'sync_max_delay'
#
;sync_max_delay = 1440

#
# keyword:       presnap_trigger
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     False
#
#  desc:  Define a command to run before creating snapshots. This is most
#         likely what you need to use plug a script to put you data in a
#         coherent state (alter begin backup and the like).
#
;presnap_trigger = /srv/svc1/etc/init.d/pre_snap.sh

#
# keyword:       postsnap_trigger
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      None
#  scopable:     False
#
#  desc:  Define a command to run after snapshots are created. This is most
#         likely what you need to use plug a script to undo the actions of
#         'presnap_trigger'.
#
;postsnap_trigger = /srv/svc1/etc/init.d/post_snap.sh

#
# keyword:       monitor_action
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   reboot | crash | freezestop
#  depends:      None
#  scopable:     True
#
#  desc:  The action to take when a monitored resource is not up nor standby
#         up, and if the resource restart procedure has failed.
#
;monitor_action = reboot

#
# keyword:       create_pg
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      True
#  candidates:   True | False
#  depends:      None
#  scopable:     False
#
#  desc:  Use process containers when possible. Containers allow capping
#         memory, swap and cpu usage per service. Lxc containers are naturally
#         containerized, so skip containerization of their startapp.
#
;create_pg = True

#
# keyword:       pg_cpus
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      create_pg in [True]
#  scopable:     False
#
#  desc:  Allow service process to bind only the specified cpus. Cpus are
#         specified as list or range : 0,1,2 or 0-2
#
;pg_cpus = 0-2

#
# keyword:       pg_mems
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      create_pg in [True]
#  scopable:     False
#
#  desc:  Allow service process to bind only the specified memory nodes.
#         Memory nodes are specified as list or range : 0,1,2 or 0-2
#
;pg_mems = 0-2

#
# keyword:       pg_cpu_shares
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      create_pg in [True]
#  scopable:     False
#
#  desc:  Kernel default value is used, which usually is 1024 shares. In a
#         cpu-bound situation, ensure the service does not use more than its
#         share of cpu ressource. The actual percentile depends on shares
#         allowed to other services.
#
;pg_cpu_shares = 512

#
# keyword:       pg_cpu_quota
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      create_pg in [True]
#  scopable:     False
#
#  desc:  The percent ratio of one core to allocate to the process group if %
#         is specified, else the absolute value to set in the process group
#         parameter. For example, on Linux cgroups, -1 means unlimited, and a
#         positive absolute value means the number of microseconds to allocate
#         each period. 50%@all means 50% of all cores, and 50%@2 means 50% of
#         two cores.
#
;pg_cpu_quota = 50%@all

#
# keyword:       pg_mem_oom_control
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      create_pg in [True]
#  scopable:     False
#
#  desc:  A flag (0 or 1) that enables or disables the Out of Memory killer
#         for a cgroup. If enabled (0), tasks that attempt to consume more
#         memory than they are allowed are immediately killed by the OOM
#         killer. The OOM killer is enabled by default in every cgroup using
#         the memory subsystem; to disable it, write 1.
#
;pg_mem_oom_control = 1

#
# keyword:       pg_mem_limit
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      create_pg in [True]
#  scopable:     False
#
#  desc:  Ensures the service does not use more than specified memory (in
#         bytes). The Out-Of-Memory killer get triggered in case of
#         tresspassing.
#
;pg_mem_limit = 512000000

#
# keyword:       pg_mem_swappiness
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      create_pg in [True]
#  scopable:     False
#
#  desc:  Set a swappiness value for the process group.
#
;pg_mem_swappiness = 40

#
# keyword:       pg_vmem_limit
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      create_pg in [True]
#  scopable:     False
#
#  desc:  Ensures the service does not use more than specified memory+swap (in
#         bytes). The Out-Of-Memory killer get triggered in case of
#         tresspassing. The specified value must be greater than pg_mem_limit.
#
;pg_vmem_limit = 1024000000

#
# keyword:       pg_blkio_weight
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      None
#  candidates:   None
#  depends:      create_pg in [True]
#  scopable:     False
#
#  desc:  Block IO relative weight. Value: between 10 and 1000. Kernel
#         default: 1000.
#
;pg_blkio_weight = 50

#
# keyword:       disable
# ----------------------------------------------------------------------------
#  required:     False
#  provisioning: False
#  default:      False
#  candidates:   True | False
#  depends:      None
#  scopable:     True
#
#  desc:  A disabled resource will be ignored on service startup and shutdown.
#
;disable = False