On Thu, 2021-07-15 at 18:02 -0400, Digimer wrote: > Hi all, > > I've got a predicament... I want to update a stonith resource to > remove an argument. Specifically, when resource move nodes, I want to > change the stonith delay to favour the new host. This involves adding > the 'delay="x"' argument to one stonith resource, and removing it > from > the other;
There are two better ways to do what you want that don't involve changing the configuration every time. (1) Priority fencing delay: https://clusterlabs.org/pacemaker/doc/2.1/Pacemaker_Explained/singlehtml/index.html#cluster-options This was added in 2.0.4, and does exactly what you want. Just set the priority meta-attribute on your resources, and the priority-fencing- delay cluster property. (1) Attribute-based rules: https://clusterlabs.org/pacemaker/doc/2.1/Pacemaker_Explained/singlehtml/index.html#document-rules If you don't have 2.0.4, you can use rules instead. pcs might not support it, though, so you might need to configure the XML. * Configure an ocf:pacemaker:attribute resource that's colocated with your main resource (this just sets a node attribute wherever it's active) * Configure the stonith delay in a rule-based attribute block, with a 0 delay if the node attribute is "active" and a higher delay if it's "inactive" > Example; > > ==== > # pcs cluster cib | grep -B7 -A7 '"delay"' > <primitive class="stonith" id="ipmilan_node1" > type="fence_ipmilan"> > <instance_attributes id="ipmilan_node1-instance_attributes"> > <nvpair id="ipmilan_node1-instance_attributes-ipaddr" > name="ipaddr" value="10.201.17.1"/> > <nvpair id="ipmilan_node1-instance_attributes-password" > name="password" value="xxx"/> > <nvpair id="ipmilan_node1-instance_attributes- > pcmk_host_list" > name="pcmk_host_list" value="an-a02n01"/> > <nvpair id="ipmilan_node1-instance_attributes-username" > name="username" value="admin"/> > <nvpair id="ipmilan_node1-instance_attributes-delay" > name="delay" value="15"/> > </instance_attributes> > <operations> > <op id="ipmilan_node1-monitor-interval-60" interval="60" > name="monitor"/> > </operations> > </primitive> > ==== > > Here, the stonith resource 'ipmilan_node1' has the delay="15". > > If I run: > > ==== > # pcs stonith update ipmilan_node1 fence_ipmilan ipaddr="10.201.17.1" > password="xxx" username="admin"; echo $? > 0 > ==== > > I see nothing happen in journald, and the delay argument remains in > the > 'pcs cluster cib' output. If, however, I do; > > ==== > # /usr/sbin/pcs stonith update ipmilan_node1 fence_ipmilan > ipaddr="10.201.17.1" password="xxx" username="admin" delay="0"; echo > $? > 0 > ==== > > I can see in journald that the CIB was updated and can confirm in > 'pcs > cluster cib' that the 'delay' value becomes '0'. So it seems that, if > an > argument previously existed and is NOT specified in an update, it is > not > removed. > > Is this intentional for some reason? If so, how would I remove the > delay > attribute? I've got a fairly complex stonith config, with stonith > levels. Deleting and recreating the config would be non-trivial. > > Pacemaker v2.1.0, pcs v0.10.8.181-47e9, CentOS Stream 8. > > digimer > -- Ken Gaillot <kgail...@redhat.com> _______________________________________________ Manage your subscription: https://lists.clusterlabs.org/mailman/listinfo/users ClusterLabs home: https://www.clusterlabs.org/