Installing the Razor-Client and Creating a Repository
This is part three in the Razor Series. In part #2 we saw how to configure DHCP ad TFTP and as I mentioned in a previous post, the client is now a separate component.
- Installing Razor - Yes the New Version..
- Razor - DHCP and TFTP
- Installing the Razor client and creating a repository
- Installers, Policies and Tags
- Razor - What Lies Within the installer?
- Installing ESXi with Razor
Here is how you would go about installing the razor-client which will allow you to interact with the server.
I installed it in my $HOME
folder
First we will clone the code from Github.
git clone https://github.com/puppetlabs/razor-client
Change directory to the razor-client folder and install the required gems
cd razor-client
bundle install
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-zsh" data-lang="zsh"><span style="display:flex;"><span><span style="color:#f92672">[</span>!<span style="color:#f92672">[</span>gems<span style="color:#f92672">](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_thumb_19.png <span style="color:#e6db74">"gems"</span><span style="color:#f92672">)](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_19.png<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Next create an alias that will include the url to the razor server <span style="color:#f92672">(</span>substitute the correct IP address / Hostname of course<span style="color:#f92672">)</span>, and you should add this to your profile <span style="color:#66d9ef">if</span> you want the command to be available each time you login.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">`</span>alias razor<span style="color:#f92672">=</span><span style="color:#e6db74">"</span>$PWD<span style="color:#e6db74">/bin/razor -u https://127.0.0.1:8080/api"</span><span style="color:#e6db74">`</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>!<span style="color:#f92672">[</span>create alias<span style="color:#f92672">](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_thumb_20.png <span style="color:#e6db74">"create alias"</span><span style="color:#f92672">)](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_20.png<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>As you can see it is possible to install the client on the same machine as the server. If you are doing this <span style="color:#66d9ef">then</span> <span style="color:#66d9ef">then</span> you will not need the url - because it defaults to <span style="color:#f92672">[</span>https://localhost:8080/api<span style="color:#f92672">](</span>https://localhost:8080/api <span style="color:#e6db74">"https://localhost:8080/api"</span><span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>And <span style="color:#66d9ef">if</span> you run the **razor** command you should see the following output
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>!<span style="color:#f92672">[</span>razor<span style="color:#f92672">](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_thumb_21.png <span style="color:#e6db74">"razor"</span><span style="color:#f92672">)](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_21.png<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>At the moment there is nothing there so looking at the repos/brokers/policies/nodes/tags will not give you much - yet…
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>!<span style="color:#f92672">[</span>razor commands<span style="color:#f92672">](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_thumb_22.png <span style="color:#e6db74">"razor commands"</span><span style="color:#f92672">)](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_22.png<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>First some terminology.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>* **Nodes -** Nodes are the clients that connect into the system.
</span></span><span style="display:flex;"><span>* **Brokers** - Brokers are responsible <span style="color:#66d9ef">for</span> handing a node off to a config management system, like Puppet or Chef.
</span></span><span style="display:flex;"><span>* **Tags** - A tag consists of a unique <span style="color:#e6db74">`</span>name<span style="color:#e6db74">`</span> and a <span style="color:#e6db74">`</span>rule<span style="color:#e6db74">`</span>. The rule is a characteristic present on the the node
</span></span><span style="display:flex;"><span>* **Repos** - A repository where the installation files of an Operating System reside
</span></span><span style="display:flex;"><span>* **Policies -** This is a defined set of steps that tie all the other bits and pieces in Razor together, and are what gets ultimately applied to a node.
</span></span><span style="display:flex;"><span>* **Installers** - This will be the set of actions needed to deploy the operating system - you can think as a set of kick start instructions.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Creating a repo, <span style="color:#66d9ef">for</span> that you will need to provide a URL to the installation ISO.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><div class<span style="color:#f92672">=</span><span style="color:#e6db74">"highlight"</span>><pre tabindex<span style="color:#f92672">=</span><span style="color:#e6db74">"0"</span> style<span style="color:#f92672">=</span><span style="color:#e6db74">"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"</span>><code class<span style="color:#f92672">=</span><span style="color:#e6db74">"language-zsh"</span> data-lang<span style="color:#f92672">=</span><span style="color:#e6db74">"zsh"</span>><span style<span style="color:#f92672">=</span><span style="color:#e6db74">"display:flex;"</span>><span>razor create-repo --name<span style<span style="color:#f92672">=</span><span style="color:#e6db74">"color:#f92672"</span>><span style="color:#f92672">=</span></span>ESXi_5_1 --iso-url <span style<span style="color:#f92672">=</span><span style="color:#e6db74">"color:#f92672"</span>><span style="color:#f92672">[</span></span>https://webserver/VMware-VMvisor-Installer-5.1.0.update01-1065491.x86_64.iso<span style<span style="color:#f92672">=</span><span style="color:#e6db74">"color:#f92672"</span>><span style="color:#f92672">](</span></span>https://webserver/VMware-VMvisor-Installer-5.1.0.update01-1065491.x86_64.iso<span style<span style="color:#f92672">=</span><span style="color:#e6db74">"color:#f92672"</span>><span style="color:#f92672">)</span></span></span></span></code></pre></div>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>!<span style="color:#f92672">[</span>create-repo<span style="color:#f92672">](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_thumb_23.png <span style="color:#e6db74">"create-repo"</span><span style="color:#f92672">)](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_23.png<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>What currently happens is that razor will <span style="color:#66d9ef">return</span> an ID <span style="color:#66d9ef">for</span> the repo and begin the import process. The file is
</span></span><span style="display:flex;"><span>extracted to **/tmp** and eventually moved to the repo location that we defined in config file
</span></span><span style="display:flex;"><span><span style="color:#f92672">(</span>**/var/lib/razor/repo-store**<span style="color:#f92672">)</span>. A new directory will be created according to the repo name.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>!<span style="color:#f92672">[</span>import files<span style="color:#f92672">](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_thumb_24.png <span style="color:#e6db74">"import files"</span><span style="color:#f92672">)](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_24.png<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>**<span style="color:#f92672">(</span>Just as a side note - the repo is extracted into the /tmp folder but removed there after - so make sure you have adequate space on your razor server - or alternatively delete the temp files after the repo is created. There is currently a bug open on this <span style="color:#f92672">[</span>issue<span style="color:#f92672">](</span>https://github.com/puppetlabs/razor-server/issues/66<span style="color:#f92672">)</span>.<span style="color:#f92672">)</span>**
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>When you now run razor repos you should see the repository you just created.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">`</span>razor repos<span style="color:#e6db74">`</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>!<span style="color:#f92672">[</span>razor repos<span style="color:#f92672">](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_thumb_25.png <span style="color:#e6db74">"razor repos"</span><span style="color:#f92672">)](</span>https://maishsk.com/blog/images/Installing-the-razor-client-and-Creating_F134/image_25.png<span style="color:#f92672">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>In the <span style="color:#f92672">[</span>next post<span style="color:#f92672">](</span>https://blog.technodrone.cloud/2013/11/razor-installers-policies-and-tags.html<span style="color:#f92672">)</span> we will see how we create a policy and see what we can <span style="color:#66d9ef">do</span> with tags.</span></span></code></pre></div>