【漏网之鱼】Ansible AWX调用playbook传参问题

  • 问题背景
  • 问题一:读不到inventory.ini中的变量
  • 问题二:读到的变量与定义值不同

问题背景

通过ansible AWX使用Web接口调用playbook时,出现了playbook在运行时无法读取某些变量、以及读取到的某些变量与定义的值不同的情况。Playbook的结构如下:

my-test-playbook
|--ansible.cfg
|--fact_files
|--group_vars|--all.yml
|--deploy.yml
|--inventory.ini
|--log|--ansible.log
|--README
|--retry_files
|--roles|--rolePremiere|--defaults|--main.yml|--tasks|--main.yml|--files|--templates|--app.conf.j2|--vars|--roleSecond|--roleThird
|--rollback.yml
|--start.yml
|--stop.yml

问题一:读不到inventory.ini中的变量

inventory.ini中定义如下内容:

[appNode]
192.168.x.A ansible_ssh_port=xxx ansible_ssh_user=root
192.168.y.B ansible_ssh_port=xxx ansible_ssh_user=root[all:vars]
major_version = 5
basedir = /opt/app
is_cluster = true
is_consistent = false

在执行roles/rolePremiere/tasks/main.yml中的相关任务时,在使用inventory.ini中[all:vars]下定义的变量时,竟然提示该变量未定义!但是[appNode]中的hosts信息可以读到。

奇怪的是,当我把这些变量移动到group_vars/all.yml或者是对应role下的defaults/main.yml中后,就可以读取到相应的变量了!

问题二:读到的变量与定义值不同

我在roles/rolePremiere/templates/app.conf.j2中使用到了变量is_consistent作为判断的条件,如下

{% if ( is_consistent == "false" ) %}

根据上面定义的值(假设该变量定义在group_vars/all.yml中),这个判断条件应该成立。但事实上,if后面对应的语句却并没有执行。

通过检查日志和目标机器上的文件发现,在调用该模板文件时,该变量的值变成了False,即首字母变成了大写,导致判断条件不成立。

绕行的办法是改写上面的判断语句为

{% if ( is_consistent | string | lower == "false" ) %}

【漏网之鱼】Ansible AWX调用playbook传参问题相关推荐

  1. DM8 jdbc调用存储过程传参list<实体类>

    DM8 jdbc调用存储过程传参list<实体类> 一.前提 jdbc的连接串参数prepareOptimize,表示是否对预编译SQL做优化,取值true/false,默认false不开 ...

  2. python调用so库输出传入指针_python中使用ctypes调用so传参设置遇到的问题及解决方法...

    问题 近日在做一组声纹聚类时,使用了另一团队同学开发的声纹距离算法.该算法对外提供的是一组so包,需要使用方自己去使用.在python中调用纯so包一般使用ctypes类库,用起来看起来简单但也有不少 ...

  3. MySQL在脚本中执行传参数_ZZW_shell脚本中的调用MYSQL传参及注意的问题

    [oracle@ip9140 db_pcc]$ cat zzw_cc.sh #!/bin/bash z_user='pcc_csuser22' z_pass='pcc_csuser22' z_db=' ...

  4. Android Java调用cocos2d-js传参

    Android Java调用cocos2d-js传参 cocos2djs 拿走即可用 cocos2djs // src/js/public.jsfunction test(value) {data = ...

  5. python调用函数传参时、有默认值的在中间 报错了_python的大坑:使用空列表作为默认参数,让我怀疑遇到了灵异代码...

    在python中,不要使用列表或者其他可变类型的数据容器作为默认参数.否则你很可能会遇到奇奇怪怪的问题. 如果你在调用某一个函数时,传了同样的参数,手动执行,每次结果都正确.但是用循环遍历重复多次执行 ...

  6. 计算机系统-函数调用约定/调用规范/传参方式

    cdecl:使用栈传参,通常使用ax寄存器存放返回值,由调用方重置sp stdcall:使用栈传参,通常使用ax寄存器存放返回值,由被调用方重置sp fastcall:约定优先使用寄存器传递参数,其次 ...

  7. 1.函数的结构,调用,传参,形参,实参,args,kwargs,名称空间,高阶函数

    1.函数的初识 初始函数 获取任意一个字符串的元素的个数 s1='dsjdkjkfefenga' count=0 for i in s1:count+=1 print(count) 获取列表的元素的个 ...

  8. python一个函数可以有参数也可以没有参数_python 传入任意多个参数(方法调用可传参或不传参)...

    1.可传参数与不传参数,在定义中给参数设置默认值 class HandleYmal: """ 获取测试环境的配置 """ def __ini ...

  9. winform数据传递到html,C#下winform和JS的互相调用和传参(webbrowser)

    不多说,直接上代码,winform下button1调用js函数,从html页面获取值,然后JS调用WINFORM的函数,传送获取到的值到winform并通过messagebox的方法show出来.一步 ...

最新文章

  1. OpenGL函数功能glutTimerFunc()
  2. BIP_BI Pubisher的SQL/XSL/FO扩展函数应用(概念)
  3. R2LIVE: 一个鲁棒实时的雷达-惯导-视觉紧耦合的位姿估计和建图系统
  4. 《Spring Cloud微服务实战》100本赠书获得名单
  5. Android中使用Canvas和Paint绘制一个安卓机器人
  6. VS2005 sp1安装体会
  7. 周长相等的正方形面积一定相等_三年级下册数学期末重点——面积
  8. idea开启自动热部署自动化devtools
  9. 科学语言与matlab计算 实验2、3
  10. ctfmon是什么启动项_win7系统启动项中没有ctfmon进程的解决方法
  11. Nginx 去除多斜杠 (//)
  12. OpenCV蒙版的使用实例(1)
  13. 微软bi报表服务器,升级 Power BI 报表服务器
  14. 转《七年之前和七年之后》-祭奠高考
  15. Kubernetes 如何重塑虚拟机
  16. Color Banding的个人记录
  17. NR基础1-NR帧结构
  18. 说太多都是话痨,上才艺——PostMan接口自动化测试(一)
  19. 论文翻译 SGCN:Sparse Graph Convolution Network for Pedestrian Trajectory Prediction 用于行人轨迹预测的稀疏图卷积网络
  20. IP Camera 和 Web Camera 的区别

热门文章

  1. 大闻桌面 v0.08
  2. MacOS(苹果电脑苹果系统)连接京瓷300i 打印机
  3. java 获取gif帧数_Java图片处理之获取gif图一帧图片的两种方法
  4. Ubuntu 16.04 桌面壁纸问题解决
  5. 如何根据美国的邮编带出对应的州呢
  6. 程序设计第五单元知识点
  7. MT7688wifi射频参数校准 - MTK物联网在线解答 - 技术论坛
  8. 什么是Deeply Embedded Systems?
  9. 【报错管理】can only concatenate str (not float) to str
  10. SpringMVC使用@CrossOrigin解决跨域无效问题的解决方案