Format of File for drbqs-execute
Outline
drbqs-execute evaluates files in the context of an object of DRbQS::ProcessDefinition::Register. Therefore, we can use methods of DRbQS::ProcessDefinition::Register in files given to drbqs-execute.
drbqs-execute execute a server of which uri is made from hostname and port. Moreover, drbqs-execute make nodes connecting to the uri of server. The server and nodes can be over SSH.
Example: execute.rb
#!/usr/bin/env drbqs-execute
# -*-ruby-*-
usage message: "Message of this file", server: File.join(File.dirname(__FILE__), 'server.rb')
default server: :server1, port: 12345, node: [:node1, :node3, :node5], log: "/tmp/drbqs/log"
ssh_directory = "/ssh/path/to"
server :server1, 'example.com' do |server, ssh|
ssh.directory ssh_directory
ssh.output "/path/to/log"
ssh.nice 5
server.load "server.rb"
server.log_level 'error'
end
server :local, 'localhost' do |server|
server.load "server.rb"
server.log_level 'error'
end
node :node_base, template: true do |node, ssh|
ssh.directory ssh_directory
ssh.output "/path/to/node_ssh"
ssh.nice 10
node.process 2
node.load "server.rb"
node.log_level 'error'
end
ssh_user = 'user_name'
[1, 2, 3, 4, 5, 6].each do |n|
name = "node%02d" % n
node name, load: :node_base do |node, ssh|
ssh.connect "#{ssh_user}@#{name}.example.com"
end
end
node :even, group: [:node02, :node04, :node06]
node :odd, group: [:node01, :node03, :node05]
Help message
If we run the following command
drbqs-execute -h execute.rb
then help message of server.rb is displayed in addition to that of drbqs-execute.
Methods
The following methods are available.
server
"server" method corresponds to commands "drbqs-server" and "drbqs-ssh server". This method takes two arguments (server name and hostname), options set by hash and a block. If the block takes only one argument then the server is on localhost. If there are two block arguments then the server is executed over SSH. The first argument of block has methods similar to the options of command "drbqs-server". The second argument has methods similar to the options of command "drbqs-ssh". We can set the settings of servers by these methods.
See DRbQS::ProcessDefinition::Register#server
node
"node" method corresponds to commands "drbqs-node" and "drbqs-ssh node", which takes node name and options set by hash as arguments. As the same way of method "server" we can define nodes by method "node" The block taking one argument defines a node on localhost and the block taking two arguments defines a node over SSH. The first argument has methods similar to the options of command "drbqs-node" and the second argument has methods similar to the options of command "drbqs-ssh".
See DRbQS::ProcessDefinition::Register#node
clear_server
See DRbQS::ProcessDefinition::Register#clear_server
clear_node
See DRbQS::ProcessDefinition::Register#clear_node
default
We can set default server, default nodes, default port number of server by method "default".
See DRbQS::ProcessDefinition::Register#default
default_clear
See DRbQS::ProcessDefinition::Register#default_clear
usage
We can set help messages for "drbqs-execute --help