4.2 Configure DCLI to install Python across Exadata compute nodes.

Using Distributed Command Line Interface (DCLI) can simplify the installation of OML4Py on Exadata.

With DCLI, you can use a single command to install Python across multiple Exadata compute nodes. The following example shows the output of the DCLI help option, which explains the basic syntax of the utility.

Example 4-1 DCLI Help Option Output

dcli -h
Distributed Shell for Oracle Storage

This script executes commands on multiple cells in parallel threads.
The cells are referenced by their domain name or ip address.
Local files can be copied to cells and executed on cells.
This tool does not support interactive sessions with host applications.
Use of this tool assumes ssh is running on local host and cells.
The -k option should be used initially to perform key exchange with
cells.  User may be prompted to acknowledge cell authenticity, and
may be prompted for the remote user password.  This -k step is serialized
to prevent overlayed prompts.  After -k option is used once, then
subsequent commands to the same cells do not require -k and will not require
passwords for that user from the host.
Command output (stdout and stderr) is collected and displayed after the
copy and command execution has finished on all cells.
Options allow this command output to be abbreviated.

Return values:
 0 -- file or command was copied and executed successfully on all cells
 1 -- one or more cells could not be reached or remote execution
      returned non-zero status.
 2 -- An error prevented any command execution

Examples:
 dcli -g mycells -k
 dcli -c stsd2s2,stsd2s3 vmstat
 dcli -g mycells cellcli -e alter iormplan active
 dcli -g mycells -x reConfig.scl

Usage: dcli [options] [command]

Options:
  --version             show program's version number and exit
  --batchsize=MAXTHDS   limit the number of target cells on which to run the
                        command or file copy in parallel
  -c CELLS              comma-separated list of cells
  --ctimeout=CTIMEOUT   Maximum time in seconds for initial cell connect
  -d DESTFILE           destination directory or file
  -f FILE               files to be copied
  -g GROUPFILE          file containing list of cells
  -h, --help            show help message and exit
  --hidestderr          hide stderr for remotely executed commands in ssh
  -k                    push ssh key to cell's authorized_keys file
  --key-with-one-password
                        apply one credential for pushing ssh key to
                        authorized_keys files
  -l USERID             user to login as on remote cells (default: celladmin)
  --root-exadatatmp     root user login using directory /var/log/exadatatmp/
  --maxlines=MAXLINES   limit output lines from a cell when in parallel
                        execution over multiple cells (default: 100000)
  -n                    abbreviate non-error output
  -r REGEXP             abbreviate output lines matching a regular expression
  -s SSHOPTIONS         string of options passed through to ssh
  --scp=SCPOPTIONS      string of options passed through to scp if different
                        from sshoptions
  --serial              serialize execution over the cells
  --showbanner          show banner of the remote node in ssh
  -t                    list target cells
  --unkey               drop keys from target cells' authorized_keys file
  -v                    print extra messages to stdout
  --vmstat=VMSTATOPS    vmstat command options
  -x EXECFILE           file to be copied and executed

Configure the Exadata environment to enable automatic authentication for DCLI on each compute node.

  1. Generate an SSH public-private key for the root user. Execute the following command as root on any node:

    ssh-keygen -N '' -f /.ssh/id_dsa -t dsa

    This command generates public and private key files in the .ssh subdirectory of the home directory of the root user.

  2. In a text editor, create a file that contains the names of all the compute nodes in the rack. Specify each node name on a separate line. For example, the nodes file for a 2-node cluster could contain entries like the following:

    cat nodes
    exadb01
    exadb02
  3. Run the DCLI command with the -k option to establish SSH trust across all the nodes. The -k option causes DCLI to contact each node sequentially (not in parallel) and prompts you to enter the password for each node.

    dcli -t -g nodes -l root -k -s "\-o StrictHostkeyChecking=no"

    DCLI with -k establishes SSH Trust and User Equivalence. Subsequent DCLI commands will not prompt for passwords.