Files
gitea-pages/admin-guide/mgmt-tools/bob.rst

4.5 KiB

bob - a CLI sysdb client

bob is a command-line client for sysdb. It supports adding, updating, and retrieving information about environments, nodes, MAC addresses and attributes. It can authenticate using Kerberos credentials or username/password pairs.

Installation and setup

For production use of bob there will be RPMs for bob and its dependencies.

For the moment the steps are the following:

yum -y install python-setuptools python-requests-kerberos
git clone git@git.psi.ch:linux-infra/admin-tools.git
cd admin-tools
python setup.py install

Configuration

bob takes a number of arguments, one of which is the base URL of the sysdb instance. It can be passed via --url BASEURL on the command-line, or using the environment variable PSI_BOB_URL. Therefore it is useful include the following in your .bash_profile:

PSI_BOB_URL=https://boot00.psi.ch/

Development

For development, the easiest way to use bob is the following:

pip install --user click
git clone XXX
cd YYY
pip install --user --editable .

This will place a script bob in ~/.local/bin, which will reference the code in the working directory of the repository clone. This way, local changes in the source are effective immediately. It might be a good idea to use virtualenv to avoid installing dependencies system-wide.

In addition to the PSI_BOB_URL it can be handy to also have the following in your .bash_profile:

alias bobtest='PSI_BOB_URL=https://boot00-test.psi.ch/ bob'
alias bobdev='PSI_BOB_URL=http://localhost:5000/ bob'

During development sysdb usually listens on localhost:5000 and doesn't use SSL, explaining the second alias. It also doesn't support authentication, instead expecting to find the username in the REMOTE_USER header. The latter can be set using the --fake-user option in bob or using the -H option in cURL:

bobdev --fake-user kaminski_k node set-attr foo.psi.ch ipxe_installer=rhel72server

curl -X PUT -H REMOTE_USER:talamo_i http://localhost:5000/sysdb/v1/

Attributes

The following attributes can be set for a node:

attribute name sample value mandatory meaning
ipxe_installer rhel73installer yes the installation entry to use at installation time via IPXE
network static yes network setup of the installed system. can be static or dhcp
puppet_env prod yes puppet environment
puppet_role role::server yes puppet role of the node. String should start with role::
puppet_group computing no defines the group for the hiera values. If not set takes the default one

root password

The root password can be set with the attribute rootpw. The value of the attribute must be the password hash, and can be generated with the command openssl passwd -6 "this is the password"

partitions

Partition schema can be passed as a url using the partitions attribute. It must be a publicly accessible url and its content will be copied into the kickstart section related to the partition.

The usage of this attribute is generally discouraged and is provided to cover only the cases that are not actually already covered by the installation system, eg. the software raid configuration.