Bug 1839637 - [RFE] Add a 'local' cluster setup command
Summary: [RFE] Add a 'local' cluster setup command
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: pcs
Version: 8.2
Hardware: Unspecified
OS: Unspecified
Target Milestone: rc
: 8.3
Assignee: Tomas Jelinek
QA Contact: cluster-qe@redhat.com
Steven J. Levine
Depends On:
TreeView+ depends on / blocked
Reported: 2020-05-25 07:06 UTC by Tomas Jelinek
Modified: 2021-08-31 20:40 UTC (History)
12 users (show)

Fixed In Version: pcs-0.10.6-1.el8
Doc Type: Enhancement
Doc Text:
.Local mode version of `pcs cluster setup` command is now fully supported By default, the `pcs cluster setup` command automatically synchronizes all configuration files to the cluster nodes. Since RHEL 8.3, the `pcs cluster setup` command has provided the `--corosync-conf` option as a Technology Preview. This feature is now fully supported in RHEL 8.5. Specifying this option switches the command to `local` mode. In this mode, the `pcs` command-line interface creates a `corosync.conf` file and saves it to a specified file on the local node only, without communicating with any other node. This allows you to create a `corosync.conf` file in a script and handle that file by means of the script.
Clone Of:
: 1841019 (view as bug list)
Last Closed: 2020-11-04 02:28:18 UTC
Type: Bug
Target Upstream Version:

Attachments (Terms of Use)
proposed fix + tests (245.11 KB, patch)
2020-05-25 07:17 UTC, Tomas Jelinek
no flags Details | Diff

System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHEA-2020:4617 0 None None None 2020-11-04 02:28:54 UTC

Description Tomas Jelinek 2020-05-25 07:06:10 UTC
The current 'pcs cluster setup' command does all that is needed to set up a cluster: checking if nodes are suitable for the new cluster, creating corosync.conf and other cluster config files (authkeys, pcs configs, etc.) and distributing them to all the nodes. This is great for the cases when a user is creating the cluster manually. It is not so good when one wants to write a script to set up and configure a cluster.

To make it easier to set up a cluster from a script, a new command will be implemented in pcs. This command will have pretty much the same syntax as the current 'pcs cluster setup'. It will, however, work only on the local node, validating corosync.conf options and storing resulting corosync.conf in a specified location. It will be up to the script to distribute this file, along with other needed config files created by such script, to actually create a cluster. The local setup pcs command will not communicate with any nodes.

Comment 2 Tomas Jelinek 2020-05-25 07:17:27 UTC
Created attachment 1691709 [details]
proposed fix + tests

The 'pcs cluster setup' command has a new option, --corosync_conf, which switches the command to 'local' mode. This is described in pcs man page and help:

Local only mode:
By default, pcs connects to all specified nodes to verify they can be used in the new cluster and to send cluster configuration files to them. If this is not what you want, specify --corosync_conf option followed by a file path. Pcs will save corosync.conf to the specified file and will not connect to cluster nodes. These are the task pcs skips in that case:
* make sure the nodes are not running or configured to run a cluster already
* make sure cluster packages are installed on all nodes and their versions are compatible
* make sure there are no cluster configuration files on any node (run 'pcs cluster destroy' and remove pcs_settings.conf file on all nodes)
* synchronize corosync and pacemaker authkeys, /etc/corosync/authkey and /etc/pacemaker/authkey respectively, and the corosync.conf file
* authenticate the cluster nodes against each other ('pcs cluster auth' or 'pcs host auth' command)
* synchronize pcsd certificates (so that pcs web UI can be used in an HA mode)

Comment 3 Tomas Jelinek 2020-05-25 07:22:03 UTC
This feature has been also requested upstream:

Comment 9 Miroslav Lisik 2020-06-11 14:25:48 UTC

[root@r8-node-01 pcs]# rpm -q pcs

[root@r8-node-01 pcs]# pcs cluster setup LocalCluster r8-node-0{1,2} --corosync_conf  local_corosync.conf
No addresses specified for host 'r8-node-01', using 'r8-node-01'
No addresses specified for host 'r8-node-02', using 'r8-node-02'
[root@r8-node-01 pcs]# cat local_corosync.conf
totem {
    version: 2
    cluster_name: LocalCluster
    transport: knet
    crypto_cipher: aes256
    crypto_hash: sha256

nodelist {
    node {
        ring0_addr: r8-node-01
        name: r8-node-01
        nodeid: 1

    node {
        ring0_addr: r8-node-02
        name: r8-node-02
        nodeid: 2

quorum {
    provider: corosync_votequorum
    two_node: 1

logging {
    to_logfile: yes
    logfile: /var/log/cluster/corosync.log
    to_syslog: yes
    timestamp: on

Comment 22 errata-xmlrpc 2020-11-04 02:28:18 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (pcs bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.


Note You need to log in before you can comment on or make changes to this bug.