---
- hosts: ss
vars:
ents: "{{ lookup('file',
'/home/bhr_moham607/ymls/test') }}"
tasks:
- debug: msg="the value of foo.txt is
{{ ents }}"
...
The name of the variable can be anything to read the file.
The CSV File Lookup
The csvfile lookup reads the contents of a file in CSV
(comma-separated value) format. The lookup looks for the row where the first
column matches keyname, and returns the value in the second column, unless a
different column is specified.
The example below shows the contents of a CSV file
named elements.csv with information about the periodic table of elements:
Symbol,Atomic Number,Atomic Mass
H,1,1.008
He,2,4.0026
Li,3,6.94
Be,4,9.012
B,5,10.81
We can use the csvfile plugin to look up the atomic
number or atomic of Lithium by its symbol:
- debug: msg="The atomic number of Lithium is {{
lookup('csvfile', 'Li file=elements.csv delimiter=,') }}"
- debug: msg="The atomic mass of Lithium is {{
lookup('csvfile', 'Li file=elements.csv delimiter=, col=2') }}"
The csvfile lookup supports several arguments. The
format for passing arguments is:
lookup('csvfile', 'key arg1=val1 arg2=val2 ...')
The first value in the argument is the key, which must
be an entry that appears exactly once in column 0 (the first column, 0-indexed)
of the table. All other arguments are optional.
Field Default Description
file ansible.csv Name of the file to load
delimiter TAB Delimiter used by CSV file. As a special
case, tab can be specified as either TAB or t.
col 1 The column to output, indexed by 0
default empty
string return value if the key is not in
the csv file
To use this lookup we need dnspython library. Else, we will get below error.
The dig lookup runs queries against DNS servers to retrieve DNS records for a specific name (FQDN - fully qualified domain name). It is possible to lookup any DNS record in this manner.
There is a couple of different syntaxes that can be used to specify what record should be retrieved, and for which name. It is also possible to explicitly specify the DNS server(s) to use for lookups.
In its simplest form, the dig lookup plugin can be used to retrieve an IPv4 address (DNS A record) associated with FQDN:
If you need to obtain the AAAA record (IPv6 address), you must specify the record type explicitly. Syntax for specifying the record type is described below.
- debug: msg="The IPv4 address for example.com. is {{ lookup('dig', 'example.com.')}}"
- debug: msg="The TXT record for gmail.com. is {{ lookup('dig', 'gmail.com./TXT') }}"
If multiple values are associated with the requested record, the results will be returned as a comma-separated list. In such cases you may want to pass option wantlist=True to the plugin, which will result in the record values being returned as a list over which you can iterate later on:
- debug: msg="One of the MX records for gmail.com. is {{ item }}"
In case of reverse DNS lookups (PTR records), you can also use a convenience syntax of format IP_ADDRESS/PTR. The following three lines would produce the same output:
The DNS Lookup (dig)
To use this lookup we need dnspython library. Else, we will get below error.
An unhandled
exception occurred while running the lookup plugin 'dig'. Error was a <class
'ansible.errors.AnsibleError'>, original message: Can't LOOKUP(dig): module
dns.resolver is not installed
The dig lookup runs queries against DNS servers to retrieve DNS records for a specific name (FQDN - fully qualified domain name). It is possible to lookup any DNS record in this manner.
There is a couple of different syntaxes that can be used to specify what record should be retrieved, and for which name. It is also possible to explicitly specify the DNS server(s) to use for lookups.
In its simplest form, the dig lookup plugin can be used to retrieve an IPv4 address (DNS A record) associated with FQDN:
If you need to obtain the AAAA record (IPv6 address), you must specify the record type explicitly. Syntax for specifying the record type is described below.
The trailing dot in most of the examples listed is
purely optional, but is specified for completeness/correctness sake.
- debug: msg="The IPv4 address for example.com. is {{ lookup('dig', 'example.com.')}}"
In addition to (default) A record, it is also possible
to specify a different record type that should be queried. This can be done by
either passing-in additional parameter of format qtype=TYPE to the dig lookup,
or by appending /TYPE to the FQDN being queried. For
example:
example:
- debug: msg="The TXT record for gmail.com. is {{
lookup('dig', 'gmail.com.', 'qtype=TXT') }}"
- debug: msg="The TXT record for gmail.com. is {{ lookup('dig', 'gmail.com./TXT') }}"
If multiple values are associated with the requested record, the results will be returned as a comma-separated list. In such cases you may want to pass option wantlist=True to the plugin, which will result in the record values being returned as a list over which you can iterate later on:
- debug: msg="One of the MX records for gmail.com. is {{ item }}"
with_items:
"{{ lookup('dig', 'gmail.com./MX', wantlist=True) }}"
In case of reverse DNS lookups (PTR records), you can also use a convenience syntax of format IP_ADDRESS/PTR. The following three lines would produce the same output:
- debug: msg="Reverse DNS for 8.8.8.8 is {{
lookup('dig', '8.8.8.8/PTR') }}"
- debug: msg="Reverse DNS for 8.8.8.8 is {{
lookup('dig', '8.8.8.8.in-addr.arpa./PTR') }}"
- debug: msg="Reverse DNS for 8.8.8.8 is {{
lookup('dig', '8.8.8.8.in-addr.arpa.', 'qtype=PTR') }}"
No comments:
Post a Comment