0

0

自动化运维 | Ansible lookup

看不見的法師

看不見的法師

发布时间:2025-10-06 09:33:01

|

1035人浏览过

|

来源于php中文网

原创

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. 读取配置文件

    乐彼多用户商城系统LBMall(.net)
    乐彼多用户商城系统LBMall(.net)

    乐彼多用户商城系统,采用ASP.NET分层技术和AJAX技术,运营于高速稳定的微软.NET+MSSQL 2005平台;完全具备搭建超大型网络购物多用户网上商城的整体技术框架和应用层次LBMall 秉承乐彼软件优秀品质,后台人性化设计,管理窗口识别客户端分辨率自动调整,独立配置的菜单操作锁,使管理操作简单便捷。待办事项1、新订单、支付、付款、短信提醒2、每5分钟自动读取3、新事项声音提醒 店铺管理1

    下载

    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的课程视频,需要其他视频可以联系小编。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

772

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

661

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

764

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

679

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1365

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

570

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

579

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

730

2023.08.11

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

4

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.8万人学习

C# 教程
C# 教程

共94课时 | 7.3万人学习

Java 教程
Java 教程

共578课时 | 49.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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