Assuming “hostname” means a fully qualified domain name, then the following may help you.

|--- - hosts: all gather_facts: True become: false tasks: - name: show file contents debug: msg: "{{ lookup('file', 'customer-expects.txt') }}" - name: Correct kernel? set_fact: # These dashes matter. expectation: |- {%- if lookup('file', 'customer-expects.txt') is regex([ansible_system,ansible_fqdn,ansible_kernel]|join(' ')|regex_escape()) -%} matched {%- else -%} missed {%- endif -%} - name: Report via Debug run_once: True debug: msg: | {% for exp in ['missed', 'matched', 'error'] %} Kernel_expectations_{{ exp }}: {% for hosti in ansible_play_hosts_all|sort %} {% if hostvars[hosti]['expectation']|d('error') == exp %} - {{ hosti }} {% endif %} {% endfor %} {% endfor %} |

This produces the following output given the command

|ANSIBLE_STDOUT_CALLBACK=yaml ansible-playbook customer-expects.yml --limit flakey.sample.net,shaggy.sample.net,scooby.sample.net,clyde.sample.net -v|

|Using /home/utoddl/.ansible.cfg as config file PLAY [all] ****************************** TASK [Gathering Facts] **************** fatal: [flakey.sample.net]: UNREACHABLE! => changed=false msg: 'Failed to connect to the host via ssh: [email protected]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).' unreachable: true ok: [scooby.sample.net] ok: [shaggy.sample.net] ok: [clyde.sample.net] TASK [show file contents] ************** ok: [clyde.sample.net] => msg: |- Linux flakey.sample.net 5.15.11-200.fc35.x86_64 Linux clyde.sample.net 5.15.11-200.fc35.x86_64 Linux shaggy.sample.net 5.15.11-200.fc35.x86_64 Linux scooby.sample.net 5.15.11-200.fc35.x86_64 Linux loaner.sample.net 5.15.11-200.fc35.x86_64 TASK [Correct kernel?] ***************** ok: [clyde.sample.net] => changed=false ansible_facts: expectation: matched ok: [shaggy.sample.net] => changed=false ansible_facts: expectation: missed ok: [scooby.sample.net] => changed=false ansible_facts: expectation: matched TASK [Report via Debug] ************** ok: [clyde.sample.net] => msg: |- Kernel_expectations_missed: - shaggy.sample.net Kernel_expectations_matched: - clyde.sample.net - scooby.sample.net Kernel_expectations_error: - flakey.sample.net PLAY RECAP *************************** clyde.sample.net : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 shaggy.sample.net : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 flakey.sample.net : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0 scooby.sample.net : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 |

On 12/29/21 9:46 PM, Marian Saldhana wrote:

Thanks for your reply.

*Expected value is: -  Linux hostname 4.18.0-193.el8.x86_64 ( The customer has RHEL 8.2 running in its env )* I have 100 such lines given to me by the customer ( OS inventory ) where 80% of the values that I receive by running the ansible standard module matches with the expected value given by the customer. I need to understand how these values can be matched with the values given by the customer.




On Wednesday, December 29, 2021 at 10:56:06 PM UTC+5:30 [email protected] wrote:

    What, exactly, do the "values given by the customer" look like? It
    almost certainly isn't going to match the output of `uname -a`.
    (I'm guessing. But please, don't make us guess; give us the
    details of the actual problem.)

    On Monday, December 27, 2021 at 11:58:39 PM UTC-5
    [email protected] wrote:

        Hi All,

        This is my code:

        ---
        # tasks file for uname

              - name: Kernel version number
                register: uname_a
                command: "uname -a"

              - debug:
                  var: uname_a.stdout_lines

        +++

        TASK [uname_tab1 : debug]
        
***************************************************************************************************************
        ok: [192.168.43.237] => {
            "uname_a.stdout_lines": [
                "Linux ansible-client 4.18.0-348.el8.x86_64 #1 SMP Tue
        Oct 19 15:14:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux"
            ]
        }
        ok: [192.168.43.6] => {
            "uname_a.stdout_lines": [
                "Linux ansible-client1 4.18.0-348.el8.x86_64 #1 SMP
        Tue Oct 19 15:14:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux"
            ]
        }

        ++++

        Now I need to compare these values with the values given by
        the customer ( Linux ansible-client1 4.18.0-348.el8.x86_64 )
        hence request your assistance out  here to write a program.
        On Wednesday, December 22, 2021 at 5:36:21 AM UTC+5:30
        [email protected] wrote:

            That kind of info can be obtained with "gather facts"
            step, which is the first step when running a playbook.

            You just have to comparte returned info in ansible
            variables like "ansible_distribution" and
            "ansible_distribution_version" with the expected value.
            You can store expected value in a local dictionary that
            uses hostname as the key value.

            El martes, 21 de diciembre de 2021 a la(s) 08:15:15 UTC-3,
            [email protected] escribió:

                Thanks for your reply.

                I want to automate tasks such as verifying the OS
                version of remote nodes.

                The customer has given me the expected value i.e.
                Centos version 8.2

                Through automation I wish to get the OS version of the
                remotes nodes and then compare that value with the
                value that I have received from the customer through
                ansible playbooks.
                On Tuesday, December 21, 2021 at 4:06:57 PM UTC+5:30
                [email protected] wrote:

                    You need to elaborate some more, I can't make
                    anything of your story.
                    Give some real world examples of the tasks that
                    you're trying to automate.

                    On Tue, 21 Dec 2021 at 07:22, Marian Saldhana
                    <[email protected]> wrote:

                        Hi All,

                        As I am new to ansible i need to write a role
                        which compares input /output value.

                        Let me elaborate.

                        I need to write a role where I already have
                        expected value, for eg hostname of ansible
                        remote node - abc.

                        Now I need to write a role which first will
                        fetch the value from the remote node and then
                        compare the fetched value with the expected
                        value ( abc ) I have with me.

                        Thanks.


-- You received this message because you are
                        subscribed to the Google Groups "Ansible
                        Project" group.
                        To unsubscribe from this group and stop
                        receiving emails from it, send an email to
                        [email protected].
                        To view this discussion on the web visit
                        
https://groups.google.com/d/msgid/ansible-project/b708d4e2-ded7-44f0-b68a-866e93ec860bn%40googlegroups.com
                        
<https://groups.google.com/d/msgid/ansible-project/b708d4e2-ded7-44f0-b68a-866e93ec860bn%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- Sent from a mobile device - please excuse the
                    brevity, spelling and punctuation.

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/3f4e20ff-2ece-4441-ae03-d70a5802ca2cn%40googlegroups.com <https://groups.google.com/d/msgid/ansible-project/3f4e20ff-2ece-4441-ae03-d70a5802ca2cn%40googlegroups.com?utm_medium=email&utm_source=footer>.

​

--
Todd

--
You received this message because you are subscribed to the Google Groups "Ansible 
Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/8a65f746-de30-4923-8397-8f03f4645a93%40gmail.com.

Reply via email to