9. Quick Comparison of pcs and crm shell

pcs and crm shell are two popular higher-level command-line interfaces to Pacemaker. Each has its own syntax; this chapter gives a quick comparion of how to accomplish the same tasks using either one. Some examples also show the equivalent command using low-level Pacmaker command-line tools.

These examples show the simplest syntax; see the respective man pages for all possible options.

9.1. Show Cluster Configuration and Status

Show Configuration (Raw XML)

crmsh     # crm configure show xml
pcs       # pcs cluster cib
pacemaker # cibadmin -Q

Show Configuration (Human-friendly)

crmsh # crm configure show
pcs   # pcs config

Show Cluster Status

crmsh     # crm status
pcs       # pcs status
pacemaker # crm_mon -1

9.2. Manage Nodes

Put node “pcmk-1” in standby mode

crmsh     # crm node standby pcmk-1
pcs-0.9   # pcs cluster standby pcmk-1
pcs-0.10  # pcs node standby pcmk-1
pacemaker # crm_standby -N pcmk-1 -v on

Remove node “pcmk-1” from standby mode

crmsh     # crm node online pcmk-1
pcs-0.9   # pcs cluster unstandby pcmk-1
pcs-0.10  # pcs node unstandby pcmk-1
pacemaker # crm_standby -N pcmk-1 -v off

9.3. Manage Cluster Properties

Set the “stonith-enabled” cluster property to “false”

crmsh     # crm configure property stonith-enabled=false
pcs       # pcs property set stonith-enabled=false
pacemaker # crm_attribute -n stonith-enabled -v false

9.4. Show Resource Agent Information

List Resource Agent (RA) Classes

crmsh    # crm ra classes
pcs      # pcs resource standards
pacmaker # crm_resource --list-standards

List Available Resource Agents (RAs) by Standard

crmsh     # crm ra list ocf
pcs       # pcs resource agents ocf
pacemaker # crm_resource --list-agents ocf

List Available Resource Agents (RAs) by OCF Provider

crmsh     # crm ra list ocf pacemaker
pcs       # pcs resource agents ocf:pacemaker
pacemaker # crm_resource --list-agents ocf:pacemaker

List Available Resource Agent Parameters

crmsh     # crm ra info IPaddr2
pcs       # pcs resource describe IPaddr2
pacemaker # crm_resource --show-metadata ocf:heartbeat:IPaddr2

You can also use the full class:provider:type format with crmsh and pcs if multiple RAs with the same name are available.

Show Available Fence Agent Parameters

crmsh # crm ra info stonith:fence_ipmilan
pcs   # pcs stonith describe fence_ipmilan

9.5. Manage Resources

Create a Resource

crmsh # crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 \
        params ip=192.168.122.120 cidr_netmask=24 \
        op monitor interval=30s
pcs   # pcs resource create ClusterIP IPaddr2 ip=192.168.122.120 cidr_netmask=24

pcs determines the standard and provider (ocf:heartbeat) automatically since IPaddr2 is unique, and automatically creates operations (including monitor) based on the agent’s meta-data.

Show Configuration of All Resources

crmsh    # crm configure show
pcs-0.9  # pcs resource show --full
pcs-0.10 # pcs resource config

Show Configuration of One Resource

crmsh    # crm configure show ClusterIP
pcs-0.9  # pcs resource show ClusterIP
pcs-0.10 # pcs resource config ClusterIP

Show Configuration of Fencing Resources

crmsh    # crm resource status
pcs-0.9  # pcs stonith show --full
pcs-0.10 # pcs stonith config

Start a Resource

crmsh     # crm resource start ClusterIP
pcs       # pcs resource enable ClusterIP
pacemaker # crm_resource -r ClusterIP --set-parameter target-role --meta -v Started

Stop a Resource

crmsh     # crm resource stop ClusterIP
pcs       # pcs resource disable ClusterIP
pacemaker # crm_resource -r ClusterIP --set-parameter target-role --meta -v Stopped

Remove a Resource

crmsh # crm configure delete ClusterIP
pcs   # pcs resource delete ClusterIP

Modify a Resource’s Instance Parameters

crmsh     # crm resource param ClusterIP set clusterip_hash=sourceip
pcs       # pcs resource update ClusterIP clusterip_hash=sourceip
pacemaker # crm_resource -r ClusterIP --set-parameter clusterip_hash -v sourceip

crmsh also has an edit command which edits the simplified CIB syntax (same commands as the command line) via a configurable text editor.

Modify a Resource’s Instance Parameters Interactively

crmsh # crm configure edit ClusterIP

Using the interactive shell mode of crmsh, multiple changes can be edited and verified before committing to the live configuration:

Make Multiple Configuration Changes Interactively

crmsh # crm configure
crmsh # edit
crmsh # verify
crmsh # commit

Delete a Resource’s Instance Parameters

crmsh     # crm resource param ClusterIP delete nic
pcs       # pcs resource update ClusterIP nic=
pacemaker # crm_resource -r ClusterIP --delete-parameter nic

List Current Resource Defaults

crmsh     # crm configure show type:rsc_defaults
pcs       # pcs resource defaults
pacemaker # cibadmin -Q --scope rsc_defaults

Set Resource Defaults

crmsh # crm configure rsc_defaults resource-stickiness=100
pcs   # pcs resource defaults resource-stickiness=100

List Current Operation Defaults

crmsh     # crm configure show type:op_defaults
pcs       # pcs resource op defaults
pacemaker # cibadmin -Q --scope op_defaults

Set Operation Defaults

crmsh # crm configure op_defaults timeout=240s
pcs   # pcs resource op defaults timeout=240s

Enable Resource Agent Tracing for a Resource

crmsh # crm resource trace Website

Clear Fail Counts for a Resource

crmsh     # crm resource cleanup Website
pcs       # pcs resource cleanup Website
pacemaker # crm_resource --cleanup -r Website

Create a Clone Resource

crmsh # crm configure clone WebIP ClusterIP meta globally-unique=true clone-max=2 clone-node-max=2
pcs   # pcs resource clone ClusterIP globally-unique=true clone-max=2 clone-node-max=2

Create a Promotable Clone Resource

crmsh    # crm configure ms WebDataClone WebData \
           meta master-max=1 master-node-max=1 \
           clone-max=2 clone-node-max=1 notify=true
pcs-0.9  # pcs resource master WebDataClone WebData \
           master-max=1 master-node-max=1 \
           clone-max=2 clone-node-max=1 notify=true
pcs-0.10 # pcs resource promotable WebData WebDataClone \
           promoted-max=1 promoted-node-max=1 \
           clone-max=2 clone-node-max=1 notify=true

pcs will generate the clone name automatically if it is omitted from the command line.

9.6. Manage Constraints

Create a Colocation Constraint

crmsh # crm configure colocation website-with-ip INFINITY: WebSite ClusterIP
pcs   # pcs constraint colocation add ClusterIP with WebSite INFINITY

Create a Colocation Constraint Based on Role

crmsh # crm configure colocation another-ip-with-website inf: AnotherIP WebSite:Master
pcs   # pcs constraint colocation add Started AnotherIP with Promoted WebSite INFINITY

Create an Ordering Constraint

crmsh # crm configure order apache-after-ip mandatory: ClusterIP WebSite
pcs   # pcs constraint order ClusterIP then WebSite

Create an Ordering Constraint Based on Role

crmsh # crm configure order ip-after-website Mandatory: WebSite:Master AnotherIP
pcs   # pcs constraint order promote WebSite then start AnotherIP

Create a Location Constraint

crmsh # crm configure location prefer-pcmk-1 WebSite 50: pcmk-1
pcs   # pcs constraint location WebSite prefers pcmk-1=50

Create a Location Constraint Based on Role

crmsh # crm configure location prefer-pcmk-1 WebSite rule role=Master 50: \#uname eq pcmk-1
pcs   # pcs constraint location WebSite rule role=Promoted 50 \#uname eq pcmk-1

Move a Resource to a Specific Node (by Creating a Location Constraint)

crmsh     # crm resource move WebSite pcmk-1
pcs       # pcs resource move WebSite pcmk-1
pacemaker # crm_resource -r WebSite --move -N pcmk-1

Move a Resource Away from Its Current Node (by Creating a Location Constraint)

crmsh     # crm resource ban Website pcmk-2
pcs       # pcs resource ban Website pcmk-2
pacemaker # crm_resource -r WebSite --move

Remove any Constraints Created by Moving a Resource

crmsh     # crm resource unmove WebSite
pcs       # pcs resource clear WebSite
pacemaker # crm_resource -r WebSite --clear

9.7. Advanced Configuration

9.7.1. Manipulate Configuration Elements by Type

List Constraints with IDs

pcs   # pcs constraint list --full

Remove Constraint by ID

pcs   # pcs constraint remove cli-ban-Website-on-pcmk-1
crmsh # crm configure remove cli-ban-Website-on-pcmk-1

crmsh’s show and edit commands can be used to manage resources and constraints by type:

Show Configuration Elements

crmsh # crm configure show type:primitive
crmsh # crm configure edit type:colocation

9.7.2. Batch Changes

Make Multiple Changes and Apply Together

crmsh # crm
crmsh # cib new drbd_cfg
crmsh # configure primitive WebData ocf:linbit:drbd params drbd_resource=wwwdata \
        op monitor interval=60s
crmsh # configure ms WebDataClone WebData meta master-max=1 master-node-max=1 \
        clone-max=2 clone-node-max=1 notify=true
crmsh # cib commit drbd_cfg
crmsh # quit

pcs      # pcs cluster cib drbd_cfg
pcs      # pcs -f drbd_cfg resource create WebData ocf:linbit:drbd drbd_resource=wwwdata \
           op monitor interval=60s
pcs-0.9  # pcs -f drbd_cfg resource master WebDataClone WebData \
           master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
pcs-0.10 # pcs -f drbd_cfg resource promotable WebData WebDataClone \
           promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true
pcs      # pcs cluster cib-push drbd_cfg

9.7.3. Template Creation

Create Resource Template Based on Existing Primitives of Same Type

crmsh # crm configure assist template ClusterIP AdminIP

9.7.4. Log Analysis

Show Information About Recent Cluster Events

crmsh # crm history
crmsh # peinputs
crmsh # transition pe-input-10
crmsh # transition log pe-input-10

9.7.5. Configuration Scripts

Script Multiple-step Cluster Configurations

crmsh # crm script show apache
crmsh # crm script run apache \
        id=WebSite \
        install=true \
        virtual-ip:ip=192.168.0.15 \
        database:id=WebData \
        database:install=true