ROCKS 5.3 Notes Raw

[TOC]

Rolls
-----

### List installed rolls

    rocks list roll

### [Install a roll](http://www.nbcr.net/software/doc/apbs-roll/5.3/adding-the-roll-running.html) (on a running system)

You'll usually get an ISO file. Let's call it rocks-roll.iso

    # Appending clean=1 will remove any older rolls of same name  
    rocks add roll rocks-roll.iso  
      
    # This should now show the newly added roll  
    rocks list roll  
      
    # Enable the roll  
    rocks enable roll sge  
      
    # Rebuild the distro  
    cd /export/rocks/install  
    rocks create distro  
      
    # Run the roll; generates a setup shell script  
    rocks run roll rocks-roll > /tmp/rocks-roll-setup.sh  
    sh -x /tmp/rocks-roll-setup.sh

Note: When installing the SGE roll, I had errors about not finding the
"TRANS.TBL" file. Manually copying it
`/export/rocks/install/rolls/sge/5.3/x86_64/RedHat/RPMS` solved the
problem. Strange...

### Remove a roll

    # Disable and remove the roll  
    rocks disable roll sge  
    rocks remove roll sge  
      
    # Rebuild the distro  
    cd /export/rocks/install  
    rocks create distro

Nodes
-----

### Running a command on all nodes

This is far better than some `bash` cleverness since it's done
*simultaneously* (and not sequentially).

    rocks run host command="yum -y install gcc44*"

### Testing the Kickstart File

    /state/partition1/rocks/install/sbin/kickstart.cgi -c compute-0-1 > compute-0-1.configuration.ml  
      
    # This is better  
    rocks list host profile compute-0-1 > compute-0-1.xml

### Installing a Node

    insert-ethers  
    # Wait for the node to come up, for ROCKS to assign it a name & IP,  
    # and for an asterisk like "(*)"

### Assign a desired name to a node

`insert-ethers` does things very sequentially. If you have another set
of nodes that you want to number differently:

    insert-ethers --rack=1 --rank=14

This will give your appliance a name like `compute-1-14`

### Reinstalling a Node

Assume that `compute-0-1` is the node under consideration.

#### If node is available

On the node to be reinstalled, run

    /boot/kickstart/cluster-kickstart-pxe

You can also shoot it from the frontend

    shoot-node compute-0-1

#### If node is unavailable

    rocks set host boot compute-0-1 action=install  
      
    # After the node has kickstarted; not doing this will result in infinite install loop  
    rocks set host boot compute-0-1 action=os

### Removing a Node

    rocks remove host compute-0-9

### Installing RPMs

I'm using ROCKS 5.3 on an x86\_64 server.

*   Copy your RPMs to `/export/rocks/install/contrib/5.3/x86_64/RPMS`.
*   Now edit `/export/rocks/install/site-profiles/5.3/nodes/extend-compute.xml`
    and add the package name like so:

        R  
        libRmath

*   Then:

        cd /export/rocks/install  
        rocks create distro

### Change IP address

    rocks set host interface ip compute-1-0 iface='eth0' ip='11.255.255.251'

### See all IP and MAC addresses

    rocks list host interface

### Track usage

    qacct -h

Removing the "-h" flag will give you the total system usage. This
command has a *lot* of switches and is quite flexible (e.g. per user,
per node, per job, since 8 days)

Miscellaneous
-------------

### Starting the SSH Agent

You may get this error when trying to shoot a node:

    [root@cluster ~]# shoot-node compute-2-1  
    Shoot Node - version 5.5  
    Usage:  /opt/rocks/sbin/shoot-node [-h] host ...  
    Requires ssh-agent to launch

To start the SSH agent,

    ssh-agent $SHELL  
    ssh-add

### MySQL

ROCKS runs an alternate MySQL server on port 40000. It's used to
maintain the SGE and Ganglia (amongst other) databases. Here's the full
process:

    /opt/rocks/libexec/mysqld   
      --defaults-file=/opt/rocks/etc/my.cnf   
      --basedir=/opt/rocks   
      --datadir=/var/opt/rocks/mysql   
      --user=rocksdb   
      --log-error=/var/opt/rocks/mysql/cluster.example.com.err   
      --pid-file=/var/opt/rocks/mysql/cluster.example.com.pid   
      --socket=/var/opt/rocks/mysql/mysql.sock   
      --port=40000

Luckily, you can turn it on and off like a SysV service:

    service foundation-mysql stop  
    service foundation-mysql start

You can also see what's in the `cluster` database by connecting to the
socket specified:

    mysql --socket=/var/opt/rocks/mysql/mysql.sock --user=rocksdb

### Kickstart Params

View list of params with

    rocks list attr

Here's how you change the `Kickstart_PublicAddress` attribute

    rocks set attr Kickstart_PublicAddress 129.78.19.15

### Wordpress

I once needed to change the password to the Wordpress administration
page. The ROCKS manual said I should've used `admin` and the cluster's
root password. This didn't work, presumably since I changed the root
password later.

I was able to reset the Wordpress admin password by connecting using
this:

    mysql -uwordpress -p -hlocalhost --socket=/var/opt/rocks/mysql/mysql.sock

and issuing this:

```sql
UPDATE wordpress.wp_users
SET user_pass = md5('PASSWORD')
WHERE user_login = 'admin';
```

Sources
-------

*   [ROCKS 5.3 Administration Guide](http://www.rocksclusters.org/roll-documentation/base/5.3/)
*   [Customizing Configuration of Compute Nodes](http://www.rocksclusters.org/roll-documentation/base/5.3/customization-postconfig.html)