自动化运维 | Ansible lookup

看不見的法師
发布: 2025-10-06 09:33:01
原创
1015人浏览过

ansible playbook提供了使用自定义变量的功能,但当变量内容庞大或复杂时,无论是在playbook中通过vars定义,还是在单独的变量文件中定义,都会导致可读性降低,且不够灵活。

利用lookup可以解决这些问题,lookup不仅能从Ansible管理节点上的文件系统读取文件内容到变量中,还可以从配置的数据库中读取内容。

lookup使用案例

  1. 读取Ansible管理节点上的文件内容

    通过lookup可以读取管理节点上的/root/testfile文件内容,并将其赋值给contents变量。

    - hosts: all
      remote_user: root
      tasks:
        - vars:
            contents: "{{ lookup('file','/root/testfile') }}"
          tasks:
            - debug:
                msg: "the content of file /root/testfile is {{ contents }}"
    登录后复制

    运行结果:

    自动化运维 | Ansible lookup自动化运维 | Ansible lookup

    上述示例中,contents: "{{ lookup('file','/root/testfile') }}"使用了file类型的lookup,这是最简单的lookup用法。

  2. 生成随机密码

    password lookup可以生成随机密码,并将密码写入指定的文件中。以下示例展示了如何为MySQL用户bob创建随机密码,并将密码写入管理节点的bob-password.txt文件中:

    - hosts: all
      remote_user: root
      tasks:
        - name: create deploy mysql user
          mysql_user:
            name: bob
            password: "{{ lookup('password', 'bob-password.txt') }}"
            priv: '*.*:ALL'
            state: present
    登录后复制
  3. 读取环境变量

    env类型的lookup可以读取Linux系统上的环境变量。

    - hosts: all
      remote_user: root
      tasks:
        - debug:
            msg: "{{ lookup('env','HOME') }} is $HOME result"
    登录后复制

    自动化运维 | Ansible lookup

  4. 读取Linux命令的执行结果

    pipe类型的lookup可以将Linux命令的执行结果读取到Ansible中:

    - hosts: all
      remote_user: root
      tasks:
        - debug:
            msg: "{{ lookup('pipe','date') }} is the raw result of running this command"
    登录后复制

    运行结果:

    自动化运维 | Ansible lookup

  5. 读取配置文件

    千面视频动捕
    千面视频动捕

    千面视频动捕是一个AI视频动捕解决方案,专注于将视频中的人体关节二维信息转化为三维模型动作。

    千面视频动捕 27
    查看详情 千面视频动捕

    lookup支持读取两种类型的配置文件:ini和Java的Properties。默认情况下,ini类型的lookup读取配置文件。

    假设有以下ini类型的配置文件:

    自动化运维 | Ansible lookup

    运行结果:

    自动化运维 | Ansible lookup

  6. 读取CSV文件的指定单元

    csvfile可以从.csv文件中读取特定条目。假设我们有一个名为users.csv的文件:

    username,email
    lorin,lorin@test.com
    john,john@example.com
    sue,sue@exmaple.com
    登录后复制

    以下是提取sue的电子邮件地址的示例:

    - name: get sue's email
      debug:
        msg: "{{ lookup('csvfile', 'sue file=users.csv delimiter=, col=1') }}"
    登录后复制

    向插件传递了四个参数:sue, file=users.csv, delimiter=, col=1。参数说明如下:

    • 第一个参数指定一个名字,该名字必须出现在其所在行的第0列。如果名字在文件中多次出现,则匹配第一次出现的结果。
    • 第二个参数指定csv文件的文件名。
    • 第三个参数指定csv文件中条目的分隔符。
    • 第四个参数指定要取得哪一列的值,这一列正是第一个参数所在行的那一列的值。
    参数 默认值 描述
    file ansible.csv 要加载的文件名称
    col 1 要输出的列,索引从0开始
    delimiter TAB 文件的分隔符
    default empty string 如果key不在csv文件中,则为默认返回值
    encoding utf-8 使用的CSV文件的编码(字符集)(added in version 2.1)
  7. 读取DNS解析的值

    dig类型的lookup可以向DNS服务器查询指定域名的DNS记录,包括正向查询和反向查询。

    - debug:
        msg: "The IPv4 address for example.com. is {{ lookup('dig', 'example.com.') }}"
    - debug:
        msg: "The TXT record for example.org. is {{ lookup('dig', 'example.org.', 'qtype=TXT') }}"
    - debug:
        msg: "The TXT record for example.org. is {{ lookup('dig', 'example.org./TXT') }}"
    登录后复制

今天我们先介绍到这里,未完待续!

往期精选

  • 手把手教你搭建MySQL主从经典架构搭建Amoeba实现MySQL主从数据库读写分离
  • 高可用篇之Keepalived (HAProxy+keepalived 搭建高可用负载均衡集群)
  • HAProxy负载均衡器用法详解
  • Linux 集群总结 + LVS(负载均衡器)原理及配置
  • Nginx可以做什么?看完这篇你就懂了!

参考资料:

希望此文对大家有所帮助,也希望大家持续关注转载。关注公众号获取相关资料请typescript,springcloud,springboot,nodejs,nginx,mq,javaweb,java并发实战,java并发高级进阶,实战java并发,极客时间dubbo,kafka,java面试题,ES,zookeeper,java入门到精通,区块链,java优质视频,大数据,kotlin,瞬间之美,HTML与CSS,深入体验java开发,web开发CSS系列,javaweb开发详解,springmvc,java并发编程,spring源码,python,go,redis,docker,即获取相关资料。回复001,获取价值1w的课程视频,需要其他视频可以联系小编。

以上就是自动化运维 | Ansible lookup的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号