zoukankan      html  css  js  c++  java
  • ansible9:lookup插件

    lookup插件

      循环章节简单提了一嘴lookup插件实现循环,但那不代表lookup插件只能实现循环,lookup类型的插件的主要作用是访问外部的数据源,比如,获取到外部数据并赋值给某个变量,以便后续调用。lookup插件的操作都是在ansible主机中进行的,与目标主机没有关系。

    简单说明

    1. 查看lookup插件。

        0 15:57:43 root@ck-ansible,172.16.2.9:/server/ops_ansible # ansible-doc -t lookup -l
      ## -t:指定插件类型。
      ## -l:列出插件列表。
      
    2. 指定查询某个插件的用法。

        0 15:59:53 root@ck-ansible,172.16.2.9:/server/ops_ansible # ansible-doc -t lookup dict
      

    常用插件

    1. file:获取指定文件的文件内容(需要在ansible控制机使用)。

      # 举例1:
        0 16:13:14 root@ck-ansible,172.16.2.9:/server/ops_ansible # cat test1.yaml 
      ---
      - hosts: ck-node1
        tasks:
        - debug:
            msg: "{{ lookup('file','/root/file1') }}"
      
      # 举例2: 获取多个文件内容,添加多个文件即可。
        0 16:13:15 root@ck-ansible,172.16.2.9:/server/ops_ansible # cat test2.yaml
      ---
      - hosts: ck-node1
        tasks:
        - debug:
            msg: "{{ lookup('file','/root/file1','/root/file2','/root/file3') }}"
      # 举例3:根据举例2的结果可以发现,ansible默认会将多个文件的内容放在一个字符串里返回,如果想要返回的是一列表则需要借助wantlist参数
        0 16:11:23 root@ck-ansible,172.16.2.9:/server/ops_ansible # cat test2.yaml
      ---
      - hosts: ck-node1
        tasks:
        - debug:
            msg: "{{ lookup('file','/root/file1','/root/file2','/root/file3',wantlist=true) }}"
        0 16:11:24 root@ck-ansible,172.16.2.9:/server/ops_ansible # ansible-playbook test2.yaml
      # 举例4:在ansible 2.5的版本中引入一个叫“query”的jinja2函数,该函数也可以调用lookup插件,通过该函数调用lookup插件时,默认会返回一个列表,也就是说下面这种写法与举例3作用是一样的。
        0 16:17:07 root@ck-ansible,172.16.2.9:/server/ops_ansible # cat test4.yaml
      ---
      - hosts: ck-node1
        tasks:
        - debug:
            msg: "{{ q('file','/root/file1','/root/file2','/root/file3',errors='ignore') }}"		# query可以简写为q
      
    2. env:获取ansible主机中指定变量的值(需要在ansible控制机使用)。

        0 16:22:00 root@ck-ansible,172.16.2.9:/server/ops_ansible # cat test5.yaml
      ---
      - hosts: ck-node1
        tasks:
        - debug:
            msg: "{{ lookup('env','PATH') }}"
      
    3. first_found:获取列表中第一个找到的文件(需要在ansible控制机使用)。

        0 16:25:26 root@ck-ansible,172.16.2.9:/server/ops_ansible # cat test6.yaml
      ---
      - hosts: ck-node1
        tasks:
        - vars:
            testlist:
              - /root/file1
              - /root/file2
              - /root/file3
              - skip: true	# 表示如果列表中的所有文件都没有找到,则跳过当前任务,不报错。
          debug:
            msg: "{{ lookup('first_found',testlist) }}"
      
    4. ini:查找ini文件中对应key的值(需要在ansible控制机使用)。

        0 16:31:21 root@ck-ansible,172.16.2.9:/server/ops_ansible # cat test.ini
      [A]
      A1=aaa
      A2=bbb
      
      [B]
      B1=111
        0 16:31:23 root@ck-ansible,172.16.2.9:/server/ops_ansible # cat test7.yaml
      ---
      - hosts: ck-node1
        tasks:
        - debug:
            msg: "{{ lookup('ini','A2 section=A file=/server/ops_ansible/test.ini') }}"
      
    5. dig:获取指定域名的IP地址(需要在ansible控制机使用)。

      # 此插件依赖dnspython库。
        0 16:38:37 root@ck-ansible,172.16.2.9:/server/ops_ansible # pip install dnspython
        0 16:38:55 root@ck-ansible,172.16.2.9:/server/ops_ansible # cat test8.yaml
      ---
      - hosts: ck-node1
        tasks:
        - debug:
            msg: "{{ lookup('dig','www.baidu.com',wantlist=true) }}"
      
    6. password:生成随机密码并保存在指定文件中(需要在ansible控制机使用)。

        0 16:43:41 root@ck-ansible,172.16.2.9:/server/ops_ansible # cat test9.yaml
      ---
      - hosts: ck-node1
        tasks:
        - debug:
            msg: "{{ lookup('password','/root/testpwd') }}"
      


    写作不易,转载请注明出处,谢谢~~

  • 相关阅读:
    apache安全—用户访问控制
    hdu 3232 Crossing Rivers 过河(数学期望)
    HDU 5418 Victor and World (可重复走的TSP问题,状压dp)
    UVA 11020 Efficient Solutions (BST,Splay树)
    UVA 11922 Permutation Transformer (Splay树)
    HYSBZ 1208 宠物收养所 (Splay树)
    HYSBZ 1503 郁闷的出纳员 (Splay树)
    HDU 5416 CRB and Tree (技巧)
    HDU 5414 CRB and String (字符串,模拟)
    HDU 5410 CRB and His Birthday (01背包,完全背包,混合)
  • 原文地址:https://www.cnblogs.com/ccbloom/p/15508698.html
Copyright © 2011-2022 走看看