<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>ngetchell.com - Posts tagged with &quot;Jet&quot;</title><description>All blog posts tagged with &quot;Jet&quot;</description><link>https://ngetchell.com/</link><item><title>First Impressions of Jet</title><link>https://ngetchell.com/blog/first-impressions-of-jet/</link><guid isPermaLink="true">https://ngetchell.com/blog/first-impressions-of-jet/</guid><description>Trying out the rust successor of ansible</description><pubDate>Mon, 15 Jan 2024 10:15:21 GMT</pubDate><content:encoded>
&lt;p&gt;Michael DeHaan, the creator of Ansible, has released a new orchestration tool called Jet. 
It aims to improve upon some of the design issues that plague Ansible and to speed up orchestration.
While Ansible is written in the interprited language Python, Jet is written in a compiled language, Rust.&lt;/p&gt;



&lt;p&gt;I must say, the difference in speed is &lt;em&gt;stunning&lt;/em&gt;.
My initial tests all finished in a blink of the eye.
Remove an app thru apt, install a list of apps, and run a shell command.
It was so fast I thought it was broken.&lt;/p&gt;



&lt;p&gt;The current drawback is that jet does not have support for all the same modules that Ansible has.
Those are coming.
They have a very interesting integration plan which has me excited for the future.
Essentially, if you can build a script that outputs JSON, you have use that langaugage to author Jet modules.&lt;/p&gt;



&lt;p&gt;Currently, you need to compile the software yourself as there are no built binaries.
The makefile is simple enough to produce a binary though.
The code is hosted over at SourceHut and follows a collaboration model similar to the Linux kernel.&lt;/p&gt;



&lt;p&gt;If you are familiar with Ansible, you&apos;d see a bunch of similarities in terminology and file layouts. 
All you really need is a groups file and a playbook to get started.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;A group file&lt;/strong&gt;&lt;/p&gt;



&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;hosts&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  - &lt;/span&gt;&lt;span&gt;web001.site.tld&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  - &lt;/span&gt;&lt;span&gt;web002.site.tld&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  - &lt;/span&gt;&lt;span&gt;db.site.tld&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;A simple playbook&lt;/strong&gt;&lt;/p&gt;



&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;- &lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Setup Server&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  groups&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  ssh_user&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;user&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  sudo&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;root&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  defaults&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    server_packages&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      - &lt;/span&gt;&lt;span&gt;fish&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      - &lt;/span&gt;&lt;span&gt;git&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      - &lt;/span&gt;&lt;span&gt;openssh-server&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      - &lt;/span&gt;&lt;span&gt;vim&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  tasks&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;!facts&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;!apt&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      name&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Remove vim for fun&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      package&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;vim&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      remove&lt;/span&gt;&lt;span&gt;: true&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;!apt&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      name&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Installing server packages&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      package&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;{{ item }}&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      with&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        items&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;server_packages&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    - &lt;/span&gt;&lt;span&gt;!shell&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      name&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;Checking to see who this runs as&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      cmd&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;whoami&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      and&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        retry&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;So far, I&apos;m really digging it.
I my even try to pick up some Rust development if I get the time.&lt;/p&gt;
</content:encoded><category>Configuration Management</category><category>Jet</category></item></channel></rss>