lookup路径: /usr/lib/python2.7/site-packages/ansible/plugins/lookup
所有的lookup插件列表
cartesian.py
dnstxt.py
hashi_vault.py
lastpass.py
random_choice.py
chef_databag.py
env.py
hiera.py
lines.py
redis_kv.py
consul_kv.py
etcd.py
indexed_items.py
list.py
sequence.py
credstash.py
fileglob.py
ini.py
mongodb.py
shelvefile.py
csvfile.py
file.py
nested.py
subelements.py
cyberarkpassword.py
filetree.py
inventory_hostnames.py
password.py
template.py
dict.py
first_found.py
items.py
passwordstore.py
together.py
dig.py
flattened.py
keyring.py
pipe.py
url.py
list.py DOCUMENTATION = """ lookup: list author: Ansible core team version_added: "2.0" short_description: simply returns what it is given. description: - this is mostly a noop, to be used as a with_list loop when you dont want the content transformed in any way. """ EXAMPLES = """ --- - hosts: localhost tasks: - name: unlike with_items you will get 3 items from this loop, the 2nd one being a list debug: var=item with_list: - 1 - [2,3] - 4 ... 输出如下: [root@node-1 test_plays]# ansible-playbook test.yml PLAY [localhost] ******************************************************************************* TASK [unlike with_items you will get 3 items from this loop, the 2nd one being a list] ********* ok: [localhost] => (item=1) => { "changed": false, "item": 1 } ok: [localhost] => (item=[2, 3]) => { "changed": false, "item": [ 2, 3 ] } ok: [localhost] => (item=4) => { "changed": false, "item": 4 } PLAY RECAP ************************************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=0
random_choice.py DOCUMENTATION = """ lookup: random_choice author: Michael DeHaan <michael.dehaan@gmail.com> version_added: "1.1" short_description: return random element from list description: - The 'random_choice' feature can be used to pick something at random. While it's not a load balancer (there are modules for those), it can somewhat be used as a poor man's load balancer in a MacGyver like situation. - At a more basic level, they can be used to add chaos and excitement to otherwise predictable automation environments. """ EXAMPLES = """ - name: Magic 8 ball for MUDs debug: msg: "{{ item }}" with_random_choice: - "go through the door" - "drink from the goblet" - "press the red button" - "do nothing" """ 脚本输出 [root@node-1 test_plays]# ansible-playbook test.yml PLAY [localhost] ******************************************************************************* TASK [Magic 8 ball for MUDs] ******************************************************************* ok: [localhost] => (item=go through the door) => { "changed": false, "item": "go through the door", "msg": "go through the door" } PLAY RECAP ************************************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=0
env.py DOCUMENTATION = """ lookup: env author: Jan-Piet Mens (@jpmens) <jpmens(at)gmail.com> version_added: "0.9" short_description: read the value of environment variables requirements: - dns/dns.resolver (python library) description: - Allows you to query the environment variables available on the controller when you invoked Ansible. options: _terms: description: Environment variable or list of them to lookup the values for required: True """ EXAMPLES = """ - debug: msg="{{ lookup('env','HOME') }} is an environment variable" """ [root@node-1 test_plays]# ansible-playbook test.yml PLAY [localhost] ******************************************************************************* TASK [debug] *********************************************************************************** ok: [localhost] => { "msg": "/root is an environment variable" } PLAY RECAP ************************************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=0
hiera.py DOCUMENTATION = ''' author: - Juan Manuel Parrilla (@jparrill) lookup: hiera version_added: "2.4" short_description: get info from hiera data requirements: - hiera (command line utility) description: - Retrieves data from an Puppetmaster node using Hiera as ENC options: _hiera_key: description: - The list of keys to lookup on the Puppetmaster type: list element_type: string required: True _bin_file: description: - Binary file to execute Hiera default: '/usr/bin/hiera' env: - name: ANSIBLE_HIERA_BIN _hierarchy_file: description: - File that describes the hierarchy of Hiera default: '/etc/hiera.yaml' env: - name: ANSIBLE_HIERA_CFG FIXME: description: incomplete options .. _terms? environment/fqdn? ANSIBLE_HIERA_CFG, ANSIBLE_HIERA_BIN ''' EXAMPLES = """ # All this examples depends on hiera.yml that describes the hierarchy - name: "a value from Hiera 'DB'" debug: msg={{ lookup('hiera', 'foo') }} - name: "a value from a Hiera 'DB' on other environment" debug: msg={{ lookup('hiera', 'foo environment=production') }} - name: "a value from a Hiera 'DB' for a concrete node" debug: msg={{ lookup('hiera', 'foo fqdn=puppet01.localdomain') }} """ 脚本输出 [root@node-1 test_plays]# ansible-playbook test.yml PLAY [localhost] ******************************************************************************* TASK [a value from Hiera 'DB'] ***************************************************************** ok: [localhost] => { "msg": "nil" } TASK [a value from a Hiera 'DB' on other environment] ****************************************** ok: [localhost] => { "msg": "nil" } TASK [a value from a Hiera 'DB' for a concrete node] ******************************************* ok: [localhost] => { "msg": "nil" } PLAY RECAP ************************************************************************************* localhost : ok=3 changed=0 unreachable=0 failed=0
lines.py DOCUMENTATION = """ lookup: file author: Daniel Hokka Zakrisson <daniel@hozac.com> version_added: "0.9" short_description: read lines from command description: - Run a commandi or more and split the output into lines returning them as a list options: _terms: description: command(s) to run required: True notes: - Like all lookups this runs on the Ansible controller and is unaffected by other keywords, such as become, so if you need to different permissions you must change the command or run Ansible as another user. - Alternatively you can use a shell/command task that runs against localhost and registers the result. """ EXAMPLES = """ - name: we could use file direclty, but this shows output from command debug: msg="{{ item }} is a line running cat on /etc/motd" with_lines: cat /etc/motd - name: More useful example of looping over a command result shell: "/usr/bin/frobnicate {{ item }}" with_lines: - "/usr/bin/frobnications_per_host --param {{ inventory_hostname }}" """
indexed_items.py DOCUMENTATION = """ lookup: indexed_items author: Michael DeHaan <michael.dehaan@gmail.com> version_added: "1.3" short_description: rewrites lists to return 'indexed items' description: - use this lookup if you want to loop over an array and also get the numeric index of where you are in the array as you go - any list given will be transformed with each resulting element having the it's previous position in item.0 and its value in item.1 options: _terms: description: list of items required: True """ EXAMPLES = """ - name: indexed loop demo debug: msg: "at array position {{ item.0 }} there is a value {{ item.1 }}" with_indexed_items: - "{{ some_list }}" """
sequence.py
DOCUMENTATION = """ lookup: sequence author: Jayson Vantuyl <jayson@aggressive.ly> version_added: "1.0" short_description: generate a list based on a number sequence description: - generates a sequence of items. You can specify a start value, an end value, an optional "stride" value that specifies the number of steps to increment the sequence, and an optional printf-style format string. - 'Arguments can be specified as key=value pair strings or as a shortcut form of the arguments string is also accepted: [start-]end[/stride][:format].' - 'Numerical values can be specified in decimal, hexadecimal (0x3f8) or octal (0600).' - Starting at version 1.9.2, negative strides are allowed. options: start: description: number at which to start the sequence default: 0 type: number end: description: number at which to end the sequence, dont use this with count type: number default: 0 count: description: number of elements in the sequence, this is not to be used with end type: number default: 0 stride: description: increments between sequence numbers, the default is 1 unless the end is less than the start, then it is -1. type: number format: description: return a string with the generated number formated in """ EXAMPLES = """ - name: create some test users user: name: "{{ item }}" state: present groups: "evens" with_sequence: start=0 end=32 format=testuser%02x - name: create a series of directories with even numbers for some reason file: dest: "/var/stuff/{{ item }}" state: directory with_sequence: start=4 end=16 stride=2 - name: a simpler way to use the sequence plugin create 4 groups group: name: "group{{ item }}" state: present with_sequence: count=4 - name: the final countdown debug: msg={{item}} seconds to detonation with_sequence: end=0 start=10 """