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') }}"
      


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

  • 相关阅读:
    你好毒
    Sketchup创建屋顶插件
    sketchup实体开洞插件holeonsolid
    SolidWork支架模型
    让WebForm异步起来
    正则表达式点滴(2)
    异步调用之精简方式
    浅谈C#中常见的委托
    基于异步方式的语法着色器
    利用WPF的ListView进行大数据量异步加载
  • 原文地址:https://www.cnblogs.com/ccbloom/p/15508698.html
Copyright © 2011-2022 走看看