ansible的lookup

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 """

 

转载于:https://www.cnblogs.com/wangl-blog/p/9008040.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值