<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>Ansible - Tag - Gene.Tech</title>
        <link>https://geneliu.itaghome.win/tags/ansible/</link>
        <description>Ansible - Tag - Gene.Tech</description>
        <generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>gene.liu@live.com (Gene Liu)</managingEditor>
            <webMaster>gene.liu@live.com (Gene Liu)</webMaster><copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Thu, 28 Jan 2021 00:00:00 &#43;0000</lastBuildDate><atom:link href="https://geneliu.itaghome.win/tags/ansible/" rel="self" type="application/rss+xml" /><item>
    <title>Ansible from_yaml Filter</title>
    <link>https://geneliu.itaghome.win/2021-01-28-ansible-fromyaml/</link>
    <pubDate>Thu, 28 Jan 2021 00:00:00 &#43;0000</pubDate>
    <author>gene.liu@live.com (Gene Liu)</author>
    <guid>https://geneliu.itaghome.win/2021-01-28-ansible-fromyaml/</guid>
    <description><![CDATA[<p>The Ansible <code>from_yaml</code> filter can be used to simplify data manipulation with formatted data.</p>
<p>An example of the list data type:</p>
<h3 id="without-a-filter">Without a filter</h3>
<p>I have to use both <code>strip</code> and <code>split</code> functions, which is error-prone.</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-yaml">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">glusterfs_node_hostname_base</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd">  {% for item in glusterfs_node|unique %}
</span></span></span><span class="line"><span class="cl"><span class="sd">  {{ hostvars[item].get(&#39;ansible_hostname&#39;) }}
</span></span></span><span class="line"><span class="cl"><span class="sd">  {% endfor %}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">## gluster requires unique hostname or nodename while probing peers, here glusterfs_node_hostname </span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">## stores all glusterfs node&#39;s hostname for a validation purpose</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">glusterfs_node_hostname</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;{{ glusterfs_node_hostname_base.strip().split(&#39;\n&#39;) | default([]) }}&#34;</span></span></span></code></pre></div></div>
<h3 id="with-from_yaml-filter">With <code>from_yaml</code> filter</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-yaml">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">glusterfs_node_hostname_base</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="cl"><span class="sd">  ---
</span></span></span><span class="line"><span class="cl"><span class="sd">  {% for item in glusterfs_node|unique %}
</span></span></span><span class="line"><span class="cl"><span class="sd">  - {{ hostvars[item].get(&#39;ansible_hostname&#39;) }}
</span></span></span><span class="line"><span class="cl"><span class="sd">  {% endfor %}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">## gluster requires unique hostname or nodename while probing peers, here glusterfs_node_hostname </span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">## stores all glusterfs node&#39;s hostname for a validation purpose</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">glusterfs_node_hostname</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;{{ glusterfs_node_hostname_base | from_yaml }}&#34;</span></span></span></code></pre></div></div>]]></description>
</item>
</channel>
</rss>
