Puppet Blog

Back to Index

Module of the Week: puppetlabs/razor – Razor Provisioning Application

Posted on
By
Nan Liu
in
Blog, Cloud, Community, DevOps, General News, How to, Module of the Week, Modules, Open Source, Provisioning, Tips
Responses
48 Comments »
Purpose Razor Provisioning Software
Module puppetlabs/razor
Puppet Version 2.7+
Platforms Ubuntu Precise

Razor is next generation provisioning software that handles bare metal hardware and virtual server provisioning with inventory discovery and tagging, rule-based policy management, and extensible broker plugin integration. The usage of Razor for provisioning is discussed briefly in this blog, and additional information is available on a separate post by Nick Weaver, one of authors of the Razor project. Broker handoffs will be discussed in a follow up article.

Razor is currently released as a beta for preview, so there are no installation packages yet. The Razor module is intended to simplify the process for installing Razor, since it handles all application dependencies, and clones the Razor repo from GitHub.

The module is limited to Ubuntu Precise due to the availability of nodejs packages. In Debian, these packages are available in sid, so install this module only if you are comfortable adding the unstable repo. Razor puppet module support for other platforms will be evaluated as we continue to develop Razor (this is not the same as node provisioning platforms which includes Debian, Ubuntu, RedHat, OpenSuSE, and VMware ESX).

Installing the module

Complexity Easy
Installation Time 5 minutes

On puppet 2.7.14 an PE 2.5, puppet module tool will automatically download and install all dependencies from forge.

$ puppet module install puppetlabs-razor
Preparing to install into /etc/puppet/modules ...
Downloading from http://forge.puppetlabs.com ...
Installing -- do not interrupt ...
/etc/puppet/modules
└─┬ puppetlabs-razor (v0.1.0)
  ├─┬ puppetlabs-mongodb (v0.0.1)
  │ └── puppetlabs-apt (v0.0.3)
  ├── puppetlabs-nodejs (v0.2.0)
  ├── puppetlabs-stdlib (v2.3.2)
  ├── puppetlabs-tftp (v0.1.0)
  ├── puppetlabs-vcsrepo (v0.0.4)
  └── saz-sudo (v2.0.0)

Once all the modules have been installed, the appropriate permission should be applied to the files under the modules folder:

$ chown -R puppet:puppet /etc/puppet/modules

Configuring the module

Complexity Easy
Installation Time 5 minutes

The puppetlabs/razor module does not deploy DHCP service. The DHCP server needs to specify the initial boot file as pxelinux.0 and next-server option should direct traffic to the tftp server.If you currently don’t have DHCP service in your environment, and have control over your network environment, the puppetlabs/dhcp module will deploy dhcp services.

class { 'dhcp':
  dnsdomain   => [
                   'puppetlabs.lan',
                   '1.0.10.in-addr.arpa',
                 ],
  nameservers => ['10.0.1.20'],
  ntpservers  => ['us.pool.ntp.org'],
  interfaces  => ['eth0'],
  pxeserver   => '10.0.1.50',
  pxefilename => 'pxelinux.0',
}

If you want to test Razor on your local system in a virtual environment such as VMware Fusion 4, simply add the following lines into /Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf the appropriate DHCP subnet and substitute $tftp_server_address with the Razor VM node ipaddress:

filename "pxelinux.0";
next-server ${tftp_server_ipaddress};

At the moment, the tftp service and razor service will be deployed to the same system. On the puppet master assign the razor class to the appropriate node, and trigger a puppet agent run afterwards:

node razor_host {
  class { 'sudo':
    config_file_replace => false,
  }
  class { 'razor':
    username  => 'razor',
    directory => '/opt/razor',
  }
}

Razor can also be deployed directly to the system with the modules installed via:

puppet apply /etc/puppet/modules/razor/tests/init.pp --verbose

At this point, login to the Razor installation directory and execute Razor to confirm the application is installed successfully:

$ /opt/razor/bin/razor
ProjectRazor - v0.1.6.0
 
	Usage:
	project_razor [slice name] [command argument] [command argument]...
	 Switches:
		 --debug        : Enables printing proper Ruby stacktrace
		 --verbose      : Enables verbose object printing
		 --no-color-out : Disables console color. Useful for script wrapping.
 
Loaded slices:
	[bmc] [broker] [image] [log] [model] [node]
	[policy] [tag]

Ensure the Razor service is running:

$ /opt/razor/bin/razor_daemon.rb status
razor_daemon: running [pid 6421]

*note: We are providing an update to the module in v0.1.2 which will start the service by default.

Example usage

The example below will show the minimal steps from the end of Razor installation to provisioning an Ubuntu Precise system. We will focus on the process of getting a new system provisioned with Ubuntu.

Razor needs a micro kernel (MK) image upon initial pxeboot to detect hardware information and register systems to the inventory of nodes. The MK image is available on GitHub, and it should be loaded into razor image service first:

$ wget https://github.com/downloads/puppetlabs/Razor/rz_mk_dev-image.0.8.8.0.iso
$ razor image add mk ./rz_mk_dev-image.0.8.8.0.iso
Attempting to add, please wait...
New image added successfully
Images:
	UUID: 1nnkuB5BiH1C93HOO0PTFi
	Type: MicroKernel Image
	ISO Filename: rz_mk_dev-image.0.8.8.0.iso
	Path: /mnt/nfs/Razor/image/mk/1nnkuB5BiH1C93HOO0PTFi
	Status: Valid
	Version: 0.8.8.0
	Build Time: 2012-05-09 13:11:01 -0700

Once the razor MK images is loaded into Razor, new system connected to the network performing network boot will obtain a dhcp address, boot the microkernel and register with Razor. We can get a list of systems discovered via this process via the Razor node:

$ razor node
Discovered Nodes
         UUID           Last Checkin                  Tags
5PfILygjPv4WTayOnTOYMk  32 seconds     [cpus_1,memsize_4GiB,nics_1,vmware_vm]
26k3If4FI7HpsZIn7N7BXu  45 seconds     [cpus_2,memsize_16GiB,nics_2,vmware_vm]
66XZwZUJOpRXosg5SHHdbW  7 seconds      [cpus_4,memsize_96GiB,nics_4,physical]

Attributes regarding specific nodes can be drilled down into further details by specifying its UUID:

$ razor node attrib 5PfILygjPv4WTayOnTOYMk
Node Attributes:
          	Name                        Value
	architecture              i386
	domain                    localdomain
	fqdn                      mk000C294F881F.localdomain
	hardwareisa               unknown
	hardwaremodel             i686
	hostname                  mk000C294F881F
...

To provision a node, an Ubuntu Precise ISO should also be loaded along with a model which associates an instance of model template configuration with a specific ISO image:

$ razor image add os ../ubuntu-12.04-server-amd64.iso ubuntu_precise 12.04
Attempting to add, please wait...
New image added successfully
Images:
	UUID: 274HnNlQF5jvbo0y6U0aok
	Type: OS Install
	ISO Filename: ubuntu-12.04-server-amd64.iso
	Path: /mnt/nfs/Razor/image/os/274HnNlQF5jvbo0y6U0aok
	Status: Valid
	OS Name: ubuntu_precise
	OS Version: 12.04

Once the MK and operating system images are loaded into razor, we can create a deployment model using that image. First, list the available model templates:

$ razor model get template
Model Templates:
Template Name         Description         
centos_6        CentOS 6 Model            
debian_wheezy   Debian Wheezy Model       
opensuse_12     OpenSuSE Suse 12 Model    
ubuntu_oneiric  Ubuntu Oneiric Model      
ubuntu_precise  Ubuntu Precise Model      
vmware_esxi_5   VMware ESXi 5 Deployment

Next, select the ubuntu_precise template along with the iso_uuid generated when the ISO was loaded into Razor. This will trigger a series of configuration questions applicable for the Precise model template:

$ razor model add template=ubuntu_precise label=install_precise image_uuid=274HnNlQF5jvbo0y6U0aok
--- Building Model (ubuntu_precise):
Please enter node hostname prefix (will append node number) (example: node)
default: node
(QUIT to cancel)
> ubuntu
Please enter root password (> 8 characters) (example: P@ssword!)
default: test1234
(QUIT to cancel)
> testEnvPass!
Model created
Label =>  install_precise
Template =>  linux_deploy
Description =>  Ubuntu Precise Model
UUID =>  3LCN86Cpx0Te3Of5WbORkQ
Image UUID =>  274HnNlQF5jvbo0y6U0aok

The newly created model contains the hostname (which will be appended with node number), root password, and the ISO for deployment. We can certainly perform more customization within the preseed file, but in most cases this process is deferred to Puppet via broker plugin which will configure the target puppet master to handoff the node for management. At this point we can deploy this operating system, and based on our initial hardware inventory we will target nodes with 4GB of memory that are VMware virtual systems.

$ razor policy add template=linux_deploy label=precise model_uuid=3LCN86Cpx0Te3Of5WbORkQ broker_uuid=none tags=memsize_4GiB,vmware_vm enabled=true
Policy created
UUID =>  41o1z77j2R4ZsgjD9KTpPe
Line Number =>  2
Label =>  precise
Enabled =>  true
Template =>  linux_deploy
Description =>  Policy for deploying a Linux-based operating system.
Tags =>  [vmware_vm]
Model Label =>  install_precise
Broker Target =>  none
Bound Count =>  0

At this point we review our policy rules and based on razor node output we expect one system that matches the tag requirements to deploy Precise.

$ razor policy
Policies
#  Enabled     Label         Tags              Label          Count           UUID
0  true     precise  [memsize_4GiB,vmware_vm]  install_precise  0      41o1z77j2R4ZsgjD9KTpPe

In the future, other systems that match this policy rule will also deploy Precise. Once the appropriate nodes install Precise, we can either remove this policy completely via ‘policy remove <uuid>’ or temporarily disable it via ‘policy disable <uuid>’.

Conclusion

The Razor puppet module provides a quick and easy way to install Razor for testing. The module could benefit from additional puppet class parameters for razor::nodejs and razor::tftp that separates those components especially when tftp can be installed on a separate system. There are also manual processes in Razor such as loading ISO’s that could benefit from a Puppet type/provider. We certainly welcome recommendations for additional Razor service deployment platform, and contributions from our community for enhancements to this module and its dependencies.

Learn More:

48 Comments

Nan Liu

Some readers trying out the module have noted missing packages. I completely missed this since I was developing with a system with git packages. We’ve released razor module version 0.1.1 addressing this issue. So if you have a problem try again, and feel free to contact me for any other issues.

Lars Lehtonen

Seeing node and mongo make their way in to infrastructure is distressing.

Nick

Hey Lars,

Curious about the Node.js & Mongo comment. Not that I disagree, more that I want to understand.

What would you prefer over Mongo? And what would you prefer over Node.js – that would give comparable event-driven performance?

.nick

William Lam

What exactly are we supposed to do for the following step:

On the puppet master assign the razor class to the appropriate node, and trigger a puppet agent run afterwards

I already have a DHCP server running and I’m currently just pointing next-server to Razor system. I’ve already loaded the micro boot image in Razor but not sure what this particular step is referring to.

Thanks

–William

Nan Liu

William,

There’s two ways to execute puppet. In client server mode, or apply the puppet manifests locally.

If you only have a single server, install puppet, download the modules and run ‘puppet apply’ to deploy the application. When it’s done move on to using Razor. Most Linux distros include puppet packages, but they are not always up to date. The enterprise version is available at: http://puppetlabs.com/download/, or use apt.puppetlabs.com for the latest open source version on Ubuntu.

If you have puppet deployed in your environment. On the puppet master, download the modules, then in /etc/puppet/manifests/site.pp specify which node would deploy the razor application (in the blog the example node name is ‘razor_host’) . When the puppet agent runs on the client system it will deploy razor and report the results back to the puppet master.

In master/agent mode depending on what other components are deployed, you can specify the host configuration via other methods, and trigger the puppet agent using mcollective via CLI or in Puppet Console GUI.

Thanks,

Nan

William Lam

Nan,

Currently I have a single system which is running puppet + razor (following the guide). I have an existing DHCP server which I’m forwarding the request over to puppet/razor system which from what I can tell has an active TFTP server running which is hosting the MK image. I’m able to boot a blank server which gets the right IP Address and forwards the request using next-server stanza over to puppet/razor system. It performs the iPXE but throws the following error:

DHCP (net0 00:50:56…)….ok
http://razor:8026/razor/api/boot?mac=00%3A50……connection reset (ipxe.org/err/0f0a6039)
Could not boot ttp://razor:8026/razor/api/boot?mac=00%3A50…
Operating System not found

I’m assuming the boot process works just like with any traditional PXE install w/DHCP+TFTP, but I’m not familiar with puppet, so not sure if there was something else I needed to do.

Let me know if there’s a particular step I still need to perform or another system I may need to deploy?

Thanks

Nan Liu

Are the node web service running? By default they should be listening on port 8026, 8027.

$ /opt/razor/bin/razor_daemon.rb status
razor_daemon: running [pid 3721]

$ ps -ef | grep node
root      3732  3721  8 17:27 ?        00:00:00 /usr/bin/node /opt/razor/bin/api.js
root      3736  3721 10 17:27 ?        00:00:00 /usr/bin/node /opt/razor/bin/image_svc.js

Check the log file in log/razor_daemon.log and see if there are any errors.

By default razor should boot the microkernel, and the initial boot request should respond with a valid ipxe boot file (using arbitrary example mac address):

$ razor -w boot default '{"mac":"00:0c:29:f7:4c:1d"}'

#!ipxe
kernel http://192.168.232.141:8027/razor/image/mk/kernel || goto error
initrd http://192.168.232.141:8027/razor/image/mk/initrd || goto error
boot || goto error

:error
echo ERROR, will reboot in 5
sleep 5
reboot

The kernel and initrd address should be valid. You should be able to wget both files, if not check the output of razor config, and update conf/razor_server.conf with the valid ipaddress/port.

Pepijn Bruienne

Just wanted to note that after doing a clean install with Ubuntu Precise server in a Fusion 4 VM I had to manually kick off the web service. It does not get started after applying the razor module to the local node. Once that was done PXE boot completes successfully and new nodes are registered. On to adding my first Ubuntu Precise provisioning template.

Nan Liu

Pepijn,

Thanks for the info. I have updated the blog post to include the service status check and modified the puppet deployment module. I have a pull request that will start the service automatically. Once it’s reviewed and merged, I will publish an update that resolves this.

Thanks,

Nan

William Lam

Nan,

Okay, looks like that was my problem as mentioned by Pepijin, the web service was not running. Once I got it running, then the request which was forwarded from my DHCP server immediately booted up the MK image as I expected.

Thanks

William Lam

I noticed while creating a model for ESXi 5, it does not allow you specify Datacenter and Cluster names with a “-” (e.g. cluster-01).

Also a general question, is there a way to get a list of all the options for each slice? I’ve found that using –help|help|-h does not really provide enough details and it’s only from both Nick’s and this post that I’ve been able to identify some of the commands.

Thanks

Nan Liu

We did some rewiring of slices, and the CLI help is step behind some of the changes. On the github page there’s a wiki where we have documented most of the slices: https://github.com/puppetlabs/Razor/wiki

The wiki should be open for editing, so by all means feel free to contribute, and if you feel like getting your hands dirty, dive under the hood and look at the code in lib/project_razor/slices/.

The cluster name and datacenter name is a regex validation, just file an issue on github and we can change it to support -. We will handoff the ESX node a puppet master, and in puppet you would express where this is deployed, so we might make some changes to the model. I have follow up blog post discussing how broker handoff is done both for puppet agents as well as ESX nodes, so stay posted.

Jason Ruiz

I’ve setup everything per this guide after trying to do it manually myself and get the same issue. Everything works and the test VM’s I have up boot up and are shown in razor node, and the policy matches, but they never kick off installing…What could I be missing?

Discovered Nodes
UUID Last Checkin Status Tags
4Ql3igAWAnpx9xCkW0lmfm 9 sec A [IntelCorporation,vmware_vm,nics_1,cpus_2,memsize_1GiB]
6lc736pDwpTAKCvDhK3RGI 49 sec A [IntelCorporation,vmware_vm,nics_1,cpus_2,memsize_2GiB]
root@Razor:~# razor policy
Policies
# Enabled Label Tags Model Label Count UUID
0 true precise [tags=IntelCorporation,vmware_vm,nics_1,cpus_2,memsize_1GiB] install_precise 0 5IUfNPcU2XJqvi4gfaBoec

MarkC

I am trying to get Razor up and running but have hit a roadblock. I have a fresh Ubuntu install of precise with puppet/puppetmaster. I did the razor install through puppet, started the DB and the node hosts (8026/8027). After downloading the mk image and adding it to Razor I configured a test client with the appropriate options on my DHCP server (MS).

The client will PXE boot and it contacts the server running razor and loads the menu. Then it transfers ipxe.lkrn fine and errors out with the following:
“Could not fetch razor.ipxe: Operation not supported (http://ipxe.org/3c092003)
Operating System not found”

I did a packet capture from the razor host and I never see a request for the transfer of the razor.ipxe file after ipxe.lkrn. I’m not sure what to try next. I didn’t see anything in the comments above or on the wiki/issues list.

Both client and server are running on ESXi v5. I tried configuring the client with the VMXNET3 adapter and the E1000, both had the same result.

Nan Liu

It’s possible razor config auto detected the wrong IP address of the server. What’s the output of?

razor -w boot default '{"mac":"00:00:00:00:00:00"}'

You should get output similar to (your IP will be different):

#!ipxe
kernel http://192.168.232.141:8027/razor/image/mk/kernel || goto error
initrd http://192.168.232.141:8027/razor/image/mk/initrd || goto error
boot || goto error

If you check, can you fetch the kernel and initrd file remotely?

wget http://192.168.232.141:8027/razor/image/mk/kernel

Also I would encourage usage of github issues and wiki: https://github.com/puppetlabs/Razor/issues. Please send relevant output from log/*.log as well if the info above isn’t sufficient to resolve your issue.

Thanks,

Nan

Xing

Hi Nan,

We are trying to get razor up and running. When running this command “puppet apply /etc/puppet/modules/razor/tests/init.pp – -verbose”, we got the following error:

err: /Stage[main]/Mongodb/Apt::Source[10gen]/Apt::Key[Add key: 7F0CEB10 from Apt::Source 10gen]/Exec[b94ff96203335a23dcd698a0ca82d59bdc9b5292]/returns: change from notrun to 0 failed: apt-key adv –keyserver ‘keyserver.ubuntu.com’ –recv-keys ’7F0CEB10′ returned 2 instead of one of [0] at /etc/puppet/modules/apt/manifests/key.pp:53

Do you know how to get around this?

Thanks

Nan Liu

Xing:

I’m assuming you are running puppet apply with root permission. Can you run the command as root and provide the error message?

apt-key adv --keyserver 'keyserver.ubuntu.com' --recv-keys '7F0CEB10' 

Thanks,

Nan

Xing

Nan,

Yes, I’m running as root. Here’s the message:

~# apt-key adv –keyserver ‘keyserver.ubuntu.com’ –recv-keys ’7F0CEB10′
Executing: gpg –ignore-time-conflict –no-options –no-default-keyring –secret-keyring /tmp/tmp.UuZJvgn6zt –trustdb-name /etc/apt/trustdb.gpg –keyring /etc/apt/trusted.gpg –primary-keyring /etc/apt/trusted.gpg –keyring /etc/apt/trusted.gpg.d//pl-enterprise-extras-keyring.gpg –keyring /etc/apt/trusted.gpg.d//pl-keyring.gpg –keyserver keyserver.ubuntu.com –recv-keys 7F0CEB10
gpg: requesting key 7F0CEB10 from hkp server keyserver.ubuntu.com

It’s hanging while requesting key. It could be that our IT is blocking this. Is there a way to get around this?

Thanks,
Xing

Xing

Nan,

We retrieved the key using a different port which is not blocked. Then we installed mongodb manually and was able to finish the install.

Thanks,
Xing

Jack

How can we reprovision a machine? I had a number of machines setup under one policy, which didn’t have a puppet broker. Now I want to switch those machines to a different policy. I created the new policy, but when I boot the machines they end booting locally instead of having the new policy applied to them (new OS install + puppet broker).

Thanks.
J

Nan Liu

Jack, first identify the node’s active model binding via:

razor policy active
razor policy active log {uuid}

Then remove that system active model (which was bound by policy rules):

razor policy remove active {uuid}

p.s for anyone having an issue related to MarkC comment see:
https://github.com/puppetlabs/puppetlabs-razor/issues/13

Jack

Thanks Xing. Is there a way to ‘unbind’ a node from a policy? I don’t want to delete the whole policy, and I don’t want a different policy applied; I’m in trial/error mode, and so would like to re-provision the machine trying different settings?

Thanks.
J

Nan Liu

I think you want to disable a policy, otherwise if a node hardware facts matches it will get rebound to the same policy.

razor policy disable {uuid}

Again unbind a node’s active model is:

razor policy remove active {uuid}

This is different from delete policy which is:

razor policy remove {uuid}

Thanks,

Nan

Jack

Would that allow me to re-provision the machine? That’s what I’m trying to achieve; go through the re-install/commissioning process again…

Thanks.
J.

Nan Liu

Yes, that will allow you to install another OS based on the current policy.

Swapnil

Hi Nan,

I am in a similar situation as Jack. I need to ‘unbind’ an active policy. Currently I have removed all the policies, models and images, in order to try and re-provision a node again from the beginning. However, there still seems to be an ‘active’ policy when I do a ‘razor policy active’. How can I remove this active policy?

Thanks,
Swapnil

Nan Liu

Swapnil, since there still seems to be some confusion, I’ll elaborate on the answer above and give the output as well:

1. identify the node you want to unbind.

$ razor policy active 
Active Models:
    Label          State           Node UUID         System  Bind #           UUID           
install_centos  os_complete  74hlvTYRrBtwtEuZXnHXkg  puppet  2       7HmohnvcR4lxFOakxoukqg  
install_centos  os_complete  XNnfl9IzvB0FUfnjryGbq   puppet  3       fktzuQfL8o8oVeoj7ciLK   
install_centos  postinstall  3qBqWhuIXh8gEMHz7aBK7m  puppet  1       41ecNNJzSvlI5MhdRhoa1i 

2. verify this is indeed the node you want to unbind.

$ razor node 3qBqWhuIXh8gEMHz7aBK7m
 UUID =>  3qBqWhuIXh8gEMHz7aBK7m
 Last Checkin =>  05-31-12 13:32:25
 Status =>  bound
 Tags =>  [cpus_1,IntelCorporation,memsize_1GiB,nics_1,vmware_vm]
 Hardware IDs =>  [000C29AD79F0]

3. remove that node active model (which was bound by policy rules):

$ razor policy remove active 41ecNNJzSvlI5MhdRhoa1i 
Policy remove_active
 Active Model [41ecNNJzSvlI5MhdRhoa1i] removed

4. this node will no longer show up under razor policy active

$ razor policy active 
Active Models:
    Label          State           Node UUID         System  Bind #           UUID           
install_centos  broker_fail  74hlvTYRrBtwtEuZXnHXkg  puppet  2       7HmohnvcR4lxFOakxoukqg  
install_centos  broker_fail  XNnfl9IzvB0FUfnjryGbq   puppet  3       fktzuQfL8o8oVeoj7ciLK   

At this point, reboot the node, it will reregister and razor will provision the system based on your current active policy.

TJ Walker

I’m getting Connection Timed out when PXE booting a server to razor. I’m running razor version 0.1.6 and mk version 0.8.9.0, I have dhcpd running on a seperate server. The error is http://ipxe/4c0a6035 and this is what I see from the console:

Loading ipxe.lkrn…
Loading razor.ipxe…ready.
iPXE initialising devices…Ethernet addr: 00:19:b9:d3:0d:4a
Broadcom NetXtreme II (B2) PCI-X 64-bit 133MHz
NIC Link is Up, 100 Mbps full duplex
WARNING: Using legacy NIC wrapper on 00:19:b9:d3:0d:4a
ok

iPXE 1.0.0+ — Open Source Netowrk Boot Firmware — http://ipxe.org
Feature: VLAN HTTP iSCSI DNS TFTP AoE SRP bzImage COMBOOT ELF MBOOT PXE PXEXT DHCP (net0 00:19:b9:d3:d0:4a)…… ok
http:///razor/api/boot?mac=00%3A19&3Ab9%3Ad3%3Ad0%3A4a………… Connection timed out (http://ipxe.org/4c0a6035)
Could not boot http:///razor/api/boot?mac=00:19:b9:d3:d0:4a: Connection timed out (http://ipxe.org/4c0a6035)

I can reach both port 8026 and 8027 from from machince within the same vlan as the server that is PXE booting and when I go to the url in the error I get:

#!ipxe kernel http:///razor/image/mk/kernel || goto error initrd http:///razor/image/mk/initrd || goto error boot || goto error :error echo ERROR, will reboot in 60 sleep 60 reboot

and if I go to those urls I can download the vmlinuz and gore.gz respectively.

Any ideas on whats causing this?

thanks,
-tj

TJ Walker

Just noticed that the url in my error got clipped but you get the idea. its going to the ip of my razor server over port 8026.

TJ Walker

Nan, I have raised an issue at the link you provided but I wanted to be clear that I have http://(ipaddress:{port}/razor/api/boot? but when I typed it in a used less than and greater than signs and they got stripped out. Sorry for the confusion.

Mattias Geniar

In the DHCP module example at the top of the posts, there’s a missing single-quote at the end of the “‘puppetlabs.lan,” definition. Also, it seems the links to the puppetlabs/dhcp page on Github is not working properly.

Nan Liu

Matthias, thanks for corrections, I’ve updated the post.

Swapnil

Hi,

Is there a detailed documentation about the broker handoff and how it works? The above blog says that the broker handoff will be discussed in a follow up article. Can I have the link to that article or any documentation that discusses how the broker handoff works and its purpose etc?

Thanks,
Swapnil

Nan Liu

I’m not really satisfied with the current agent handoff implementation, and held off releasing the follow up blog post. I’d much rather discuss this when the feature have been updated, rather than document the current setup.

Thanks,

Nan

Swapnil

Thanks Nan. I had another doubt here. I actually want to setup and configure several other packages on the new physical host and VM along with the baremetal provisioning. Will this be done by the broker handoff to puppet? If not, how can I install and configure other packages (Eg: puppet) automatically on the new VM after the OS is configured by Razor on it?

Swapnil

Nan Liu

Swapnil, the reason I’m not happy with the current implementation is because it installs puppet via gems. I’d much rather this ben done via packages (via yum.puppetlabs.com and apt.puppetlabs.com), but it’s not available universally and require platform specific repos.

The models are intended to be adjustable and you can create additional models with different software packages, or use puppet to install additional software application afterwards. If you are happy with puppet installed via gems, use the current handoff process, otherwise modify the models in lib/project_razor/model and update the appropriate preseed/kickstart erb template to include the appropriate puppet packages and you can use puppet to manage and deploy additional software application.

Again, I’m still looking for a better solution, and I’m looking at replacing puppet gem via puppet node face installation process so it can support puppet using platform specific packages for opensource and Puppet Enterprise.

Nan

Swapnil Mankar

Nan,
I had a question about the tagging. If we have 10 nodes but only want to identify 2 nodes to be provisioned by Razor, how to identify them? Is this purely done by tagging? Eg: In the above case, will we need to tag the 2 nodes separately under 1 tagname?

Swapnil

James Zhou

One thing I noticed is that razor does not have a template for windows bare-metal. Is that something that is possible? I am looking for razor to do this along with RH, ESX, and CentOS.

Daniel Pittman

Hey. So, you are right: we don’t have a template for windows bare-metal installation (or, in fact, Windows installation at all.)

Nick Weaver is the author of that, and has not gotten his code to the stage it can be release yet. Without that, while we would like to add the feature it isn’t at the top of our list.

Leave a Response