Provisioning a *nix node
Provisioning deploys and installs your chosen operating system to target nodes.
What triggers provisioning
There are four requirements for Razor to provision a node.
-
The node must boot with iPXE software.
-
The node's network must link to the Razor server through TFTP.
-
A Razor policy must match the node.
-
The node's
installed
flag must be set tofalse
.
When these conditions are met, Razor recognizes the node, applies the first matching policy in the policy table, and provisions the node.
-
Provision for new users enables you to learn about Razor and verify tags before provisioning nodes.
-
Provision for advanced users enables you to seamlessly provision nodes in an existing environment.
Provision for new users
This workflow enables you to learn about Razor and verify tags before provisioning nodes.
A DHCP/DNS/TFTP service with SELinux configured to enable PXE boot
Puppet Enterprise
The Razor server and client
To follow along with the examples in these workflows, you must have a new node with at least 1GB (2GB recommended) of memory. Don’t boot the node before you begin the provisioning process.
In this workflow, you load iPXE software and
register nodes with the microkernel so you can view node details. Then you configure
Razor objects, finishing with creating a policy.
Provisioning is triggered when you reinstall the node in order to remove
the installed
flag.
The examples in this workflow demonstrate provisioning a sample node with CentOS 6.7. You can modify the settings and scale up your workflow as needed for your environment.
Load iPXE software
Set your machines to PXE boot so that Razor can interact with the node and provision the operating
system. This process uses both the undionly.kpxe
file from the iPXE open source software stack and a Razorbootstrap.ipxe
script.
Register a node with the microkernel
Registering a node lets you learn about the node before Razor provisions it. With registered nodes, you can view facts about the node, add metadata to the node, and see which tags the node matches.
Create a repository
Repositories contain – or point to – the operating system to install on a node.
-
url
– Points to content available on another server, for example, on a mirror that you maintain. -
iso-url
– Downloads and unpacks an ISO on the Razor server. -
no_content
– Creates a stub directory on the Razor server that you can manually fill with content.
razor create-repo --name centos-6.7 --task centos
--iso-url http://centos.sonn.com/6.7/isos/x86_64/CentOS-6.7-x86_64-bin-DVD1.iso
razor commands
to view the task status or ls -al /tmp
to see the downloaded file
size.(Optional) Create tags
Tags let you group nodes based on their characteristics. You can then apply policies based on tags to install appropriate operating systems on tagged nodes. If you don’t specify tags for a policy, the policy binds to any node.
razor tags <TAG_NAME>
policies
. To see its rule, run razor tags <TAG_NAME> rule
.(Optional) Create a broker
Brokers hand off nodes to configuration management systems like Puppet Enterprise.
puppet-master.example.com
:
razor create-broker --name pe --broker-type puppet-pe
--configuration server=puppet-master.example.com
Add the pe_repo
class to the PE Master node
group
To manage a node handed off by the broker, the master must include a class that matches the node’s architecture.
Create a policy
Policies tell Razor what operating system to install on the provisioned node, where to get the OS software, how to configure it, and how to communicate between the node and Puppet Enterprise.
small
, then hands them off to Puppet Enterprise for management:
razor create-policy --name centos-for-small
--repo centos-6.7 --broker pe --tag small
--hostname 'host${id}.example.com' --root-password secret
razor policies <POLICY_NAME>
. You can view a table
of all policies by running razor
policies
. The order in which policies are listed in the table is
important because Razor applies the first matching policy to a node.Reinstall the node
By default, Razor protects existing nodes from reprovisioning by marking all existing nodes as installed. You must specifically instruct the server to reinstall the node in order to trigger provisioning.
protect_new_nodes
option to false
, which allows Razor to provision a
node as soon as it PXE boots with a matching policy. Be sure you understand how the
protect_new_nodes
option works
before changing it, however. Failure to protect existing nodes can result in data
loss.razor reinstall-node <NODE_NAME>
When you reinstall the
node, Razor clears the installed
flag and the node restarts and boots into
the microkernel. The microkernel reports its facts, and Razor provisions the node by applying the first
applicable policy in the policy table.
When provisioning is
complete, you can log into the node using the root_password
as specified by the node’s metadata,
or by the policy that the node is bound to. You can also see the node and its
details in the console, and manage it there as you would any other
node.
Provision for advanced users
This workflow enables you to seamlessly provision nodes in an existing environment.
A DHCP/DNS/TFTP service with SELinux configured to enable PXE boot
Puppet Enterprise
The Razor server and client
To follow along with the examples in these workflows, you must have a new node with at least 1GB (2GB recommended) of memory. Don’t boot the node before you begin the provisioning process.
In this workflow, you configure Razor objects, register any existing nodes to prevent accidentally overwriting them, and finally, load iPXE so that nodes boot through Razor. Provisioning is triggered when the node PXE boots with a matching policy in place.
The examples in this workflow demonstrate provisioning a sample node with CentOS 6.7. You can modify the settings and scale up your workflow as needed for your environment.
Create a repository
Repositories contain – or point to – the operating system to install on a node.
-
url
– Points to content available on another server, for example, on a mirror that you maintain. -
iso-url
– Downloads and unpacks an ISO on the Razor server. -
no_content
– Creates a stub directory on the Razor server that you can manually fill with content.
razor create-repo --name centos-6.7 --task centos
--iso-url http://centos.sonn.com/6.7/isos/x86_64/CentOS-6.7-x86_64-bin-DVD1.iso
razor commands
to view the task status or ls -al /tmp
to see the downloaded file
size.(Optional) Create tags
Tags let you group nodes based on their characteristics. You can then apply policies based on tags to install appropriate operating systems on tagged nodes. If you don’t specify tags for a policy, the policy binds to any node.
razor tags <TAG_NAME>
policies
. To see its rule, run razor tags <TAG_NAME> rule
.(Optional) Create a broker
Brokers hand off nodes to configuration management systems like Puppet Enterprise.
puppet-master.example.com
:
razor create-broker --name pe --broker-type puppet-pe
--configuration server=puppet-master.example.com
Add the pe_repo
class to the PE Master node
group
To manage a node handed off by the broker, the master must include a class that matches the node’s architecture.
Create a policy
Policies tell Razor what operating system to install on the provisioned node, where to get the OS software, how to configure it, and how to communicate between the node and Puppet Enterprise.
small
, then hands them off to Puppet Enterprise for management:
razor create-policy --name centos-for-small
--repo centos-6.7 --broker pe --tag small
--hostname 'host${id}.example.com' --root-password secret
razor policies <POLICY_NAME>
. You can view a table
of all policies by running razor
policies
. The order in which policies are listed in the table is
important because Razor applies the first matching policy to a node.Register existing nodes manually
If you’re provisioning in an environment with existing nodes already installed, register the nodes to prevent Razor from re-provisioning them.
hw-info
details so that nodes can be identified
when Razor detects them.installed
attribute
that the node isn’t eligible for provisioning:
razor register-node --hw-info net0=78:31:c1:be:c8:00 \
--hw-info net1=72:00:01:f2:13:f0 \
--hw-info net2=72:00:01:f2:13:f1 \
--hw-info serial=xxxxxxxxxxx \
--hw-info asset=Asset-1234567890 \
--hw-info uuid="Not Settable" \
--installed
Change the protect_new_nodes
default
Because you’ve already registered existing nodes to
protect them from reprovisioning, it’s now safe to change the protect_new_nodes
default to false
. This removes the installed
flag from unregistered nodes so that Razor can provision them.
- In the console, select Razor server node group. , then click the
- On the Configuration tab, select the protect_new_nodes parameter, then in the Value field, enter false.
-
Commit changes, run Puppet, and then restart the
pe-razor-server
service.
Load iPXE software
Set your machines to PXE boot so that Razor can interact with the node and provision the operating
system. This process uses both the undionly.kpxe
file from the iPXE open source software stack and a
Razor-specific bootstrap.ipxe
script.
When the node PXE boots with a policy in place, Razor detects the node and provisions it by applying the first applicable policy in the policy table.
When provisioning is complete, you can log into the node using
the root_password
as
specified by the node’s metadata, or by the policy that the node is bound to. You
can also see the node and its details in the console, and manage it there as you
would any other node.
Viewing information about nodes
Use these commands to view details about nodes in your environment.
Command | Result |
---|---|
razor nodes
|
Displays a list of nodes that Razor knows about. |
razor nodes
<NODE_NAME>
|
Displays details about the specified node. |
razor nodes
<NODE_NAME>
log
|
Displays a log that includes the timing and status of installation events, as well as downloads of kickstart files and post-install scripts. |