首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ansible:通过CLI传递变量时,无法触发带有when条件的任务

Ansible是一种自动化工具,用于配置管理、应用部署和任务协调。它基于Python开发,可以通过命令行界面(CLI)进行操作。在使用Ansible时,有时候需要传递变量给任务,并且希望在特定条件下触发任务执行。然而,当使用CLI传递变量时,无法直接触发带有when条件的任务。

当使用CLI传递变量时,Ansible会将这些变量作为额外的变量传递给主机,但是无法在CLI中指定when条件。这是因为when条件是在Ansible playbook中定义的,而不是在CLI中。

要解决这个问题,可以通过在CLI中传递额外的变量来模拟when条件的效果。具体步骤如下:

  1. 在Ansible playbook中定义一个额外的变量,用于模拟when条件。例如,可以定义一个名为"trigger_task"的变量,并将其设置为true或false。
  2. 在任务中使用when条件来检查"trigger_task"变量的值。例如,可以使用"when: trigger_task"来指定只有当"trigger_task"为true时才执行任务。
  3. 在CLI中使用"--extra-vars"参数来传递额外的变量。例如,可以使用"--extra-vars 'trigger_task=true'"来将"trigger_task"变量设置为true。

通过以上步骤,可以在CLI中传递变量并触发带有when条件的任务执行。这样可以根据需要动态地控制任务的执行。

腾讯云提供了一系列与Ansible相关的产品和服务,可以帮助用户更好地使用和管理Ansible。其中,腾讯云的云服务器(CVM)提供了强大的计算能力,可以用于执行Ansible任务。此外,腾讯云还提供了云数据库(TencentDB)和云存储(COS)等服务,可以与Ansible集成,实现更全面的自动化管理。

更多关于腾讯云产品和服务的信息,请访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ansible之playbook功能简述

playbooks剧本简介 playbooks是ansible更为强大配置管理组件,实现基于文本文件编排执行多个任务,且多次重复执行。...test.yml -extra-vars “hosts=www user=zhenping” 通过命令行传递 通过roles传递 主机变量 定义在inventory中主机之后变量,直接传递给单个主机变量...传递变量(手动传递,优先级要高于脚本中变量ansible-playbook script.yml --extra-vars "username=ubunt" ansible-playbook...script.yml -e VARS playbook条件测试 在某task后面添加when子句,即可实现条件测试功能,when语句支持jinja2语法 ####当主机操作系统为redhat系列操作系统...只有在其关注条件满足,才会被触发执行任务 示例:只有原配置文件被修改了,才会重新加载服务 - hosts: webserver remote_user: root tasks: -

1.7K50

Ansible 详细用法说明(二)

#这里就可以开始用模块来执行具体任务了。 handlers: #定义触发通知所作操作。里面也是跟tasks一样,用模块定义任务。...1.核心元素: Tasks:任务,由模块定义操作列表; Variables:变量 Templates:模板,即使用了模板语法文本文件; Handlers:由特定条件触发Tasks; Roles:...,而非传递给playbook变量ansible_ssh_host ansible_ssh_port ansible_ssh_user...在我们打算使用基于文本模板语言,jinja2是很好解决方案。yeml是写playbook,jinja2是写配置文件模板 功用 将模板文件变量值转换成对应本地主机的确定值。...; 这个是以任务为中心,围绕每个任务来跑主机,如果中间某个任务中断,那么所有主机以后任务无法安装。

2.6K50

Ansible PlayBook语法

当发生改动notify这个actions会在playbook每一个tasks结束触发,而且即使有多个不同tasks通知改动发生,notify actions只会被触发一次.这样可以避免多次有改变发生每次都执行指定操作...,通常与条件语句组合使用,当满足条件,终止当前play运行,也可以直接由failed_when取代....when: cmdb_status != "to-be-staged" PlayBook条件判断 在有的时候play结果依赖于变量,fact或者是前一个任务执行结果,从而需要使用到条件语句...." 条件语句还有一种用法,它还可以让你当达到一定条件时候暂停下来,等待你输入确认.一般情况下,当ansible遭遇到error,它会直接结束运行.那其实你可以当遭遇到不是预期情况时候给使用pause...◆ failed_when其实是ansible一种错误处理机制,是由fail模块使用了when条件语句组合效果.示例如下: - name: this command prints FAILED when

2.3K20

Ansible 极简教程

#任务,即调用模块完成某操作 variable #变量 templates #模板 handlers #处理器,由某事件触发执行操作 roles..." 5.1.5 通过roles传递变量 当给一个主机应用角色时候可以传递变量,然后在角色内使用这些变量,示例如下: - hosts: webserver roles: - common...ansible_python_interpreter 5.3 条件测试 如果需要根据变量、facts或此前任务执行结果来做为某task执行与否前提要用到条件测试。...: root 不过,remote_user也可用于各task中,也可以通过指定其通过sudo方式在远程主机上执行任务,其可用于play全局或其任务;此外,甚至可以在sudo使用sudo_user指定...tags:在playbook可以为某个或某些任务定义一个"标签",在执行此playbook通过ansible-playbook命令使用--tags选项能耐实现仅运行指定tasks而非所有的; #

3K20

大神带你 20 分钟学会 Ansible

#任务,即调用模块完成某操作 variable #变量 templates #模板 handlers #处理器,由某事件触发执行操作 roles..." 5.1.5 通过roles传递变量 当给一个主机应用角色时候可以传递变量,然后在角色内使用这些变量,示例如下: - hosts: webserver roles: - common...ansible_python_interpreter 5.3 条件测试 如果需要根据变量、facts或此前任务执行结果来做为某task执行与否前提要用到条件测试。...: root 不过,remote_user也可用于各task中,也可以通过指定其通过sudo方式在远程主机上执行任务,其可用于play全局或其任务;此外,甚至可以在sudo使用sudo_user指定...tags:在playbook可以为某个或某些任务定义一个"标签",在执行此playbook通过ansible-playbook命令使用--tags选项能耐实现仅运行指定tasks而非所有的; #

3.5K20

ansible超详细讲解,值得收藏

httpd" -e "hosts=web" hosts变量通过-e传递是比较常见,我们可以区分测试环境和生产环境,当然你也可以定义不同文件来区分 ansible 变量优先级 上面我们介绍了多种变量定义方式...通过执行命令传递变量 在playbook中引入vars_files中变量 在playbook中定义vars变量 在host_vars中定义变量 在group_vars中组名文件中定义变量 在group_vars...task任务控制流程 Task任务控制 任务控制包括以下逻辑关键字: 条件判断 when 循环语句 with_items 触发器 handlers 标签 tags 包含 include 忽略错误 ignore_error...: name=httpd2 state=present when: ( ansible_distribution == "Ubuntu" ) 给task加上when条件,在执行时候...mysql.yml:playbook文件 mysql:roles目录,也是角色名 files:存放文件、压缩包、安装包等 handlers:触发任务放在这里 tasks:具体任务 templates:存放通过

2.3K20

Ansible条件判断介绍和使用

条件语句在Ansible使用场景: 在目标主机上定义了一个硬限制,比如:目标主机发行版本必须是RedHat,才能执行该task; 捕获一个命令输出,根据命令输出结果不同以触发不同task;...下面就介绍一些常用条件判断 when 关键字 1. when 关键字使用 在ansible中,when条件判断最常用关键字。...when关键字后面跟着是python表达式,在表达式中你能够使用任何变量或者fact,当表达式结果返回是false,便会跳过本次任务。...msg: "var3 is a string" when: var3 is string 条件判断与block block when条件判断,如果条件成立则执行对应任务...当fail和when组合使用时候,还有一个更简单写法,即failed_when,当满足某个条件ansible主动触发失败。

1.4K10

Ansible极简教程

mageedu" 5.1.5 通过roles传递变量 当给一个主机应用角色时候可以传递变量,然后在角色内使用这些变量,示例如下: 1234 - hosts: webserver roles:...5.3 条件测试 如果需要根据变量、facts或此前任务执行结果来做为某task执行与否前提要用到条件测试。...: root 不过,remote_user也可用于各task中,也可以通过指定其通过sudo方式在远程主机上执行任务,其可用于play全局或其任务;此外,甚至可以在sudo使用sudo_user指定...“notify”这个action可用于在每个play最后被触发,这样可以避免多次有改变发生每次都执行执行操作,取而代之,仅在所有的变化发生完成后一次性地执行指定操作,在notify中列出操作称为...简单来讲,roles就是通过分别将变量、文件、任务、模板以及处理器放置于单独目录中,并可以便捷地include他们一种机制。

4.1K30

第五章·自动化运维工具-Ansible流程控制

---- playbook条件语句 不管是shell还是各大编程语言中,流程控制,条件判断这些都是必不可少,在我们使用Ansible过程中,条件判断使用频率极其高。...register将命令执行结果保存至变量,然后通过when语句进行判断 - hosts: web_group tasks: - name: Check Httpd Server...handler用来执行某些条件任务,比如当配置文件发生变化时候,通过notify触发handler去重启服务。...2.Handlers只有在其所在任务被执行时,才会被运行;如果一个任务中定义了notify调用Handlers,但是由于条件判断等原因,该任务未被执行,那么Handlers同样不会被执行。...5.不能使用handlers替代tasks ---- playbook任务标签 默认情况下,Ansible在执行一个playbook,会执行playbook中定义所有任务Ansible标签(tag

62310

python中Ansible模块Playbook具体使用

handler是Ansible提供条件机制,与tasks比较类似,都是去执行某些操作。但是,handler只有在被notify触发以后才会执行,如果没有被触发则不会执行。...Ansibie是通过什么条件判断notify触发是哪一个handler呢?很简单,在Ansible中,task使用handler名字作为参数,以此来触发特定handler。...有时候,一个任务是否执行取决于一个变量取值,或者上一个任务执行结果,这个时候找们就需要条件语句。...在Playbook中可以通过when选项执行条件语句,when就类似于编程语言中if语句。...-t now when: ansible_os_family == "RedHat" when选项也支持多个条件语句,下面是一个YAML格式条件: tasks: - name: "shutdown

4.1K10

AnsiblePlaybook基操

也可以通过指定其通过sudo方式在远程主机上执行任务,其可用于play全局或某任务.此外,甚至可以在sudo使用sudo_user指定sudo切换用户. varniables: 内置变量或自定义变量在...playbook中调用 Templates模板 : 可替换模板文件中变量并实现一些简单逻辑文件 Handlers和notify: 结合使用,由特定条件触发操作,满足条件方才执行,否则不执行 tags...Notify: 此action可以用在每个play最后被触发,这样可以避免多次有改变发生每次都执行指定操作,仅仅在所有变化发生完后,一次性执行制定操作,在notify中列出操作称为hendler...When语法 条件测试:如果需要根据变量、facts或此前任务执行结果来做为某task执行与否前提要用到条件测试, 通过when语句实现,在task中使用,jinja2语法格式 在task后添加...when子句即可使用条件测试;when语句支持Jinja2表达式语法 当ansible_distribution=CentOS时候才会去执行template --- - hosts: test

86610

基于Ansible和Devops一键测试环境部署实践

: files:存放copy模块或script模块调用文件 templates:存放jinja2模板 tasks:目录包含一个main.yml文件,该角色执行入口 handlers: 角色中触发条件执行动作...vars: 定义此角色用到变量 defaults:为当前角色设定默认变量 Playbook模式在安装有ansible 机器上执行如下命令即可: ansible-playbook -ilinux.inventory...所有参数化完成后,利用devops中shell脚本执行功能调用ansible-playbook命令并将定义参数通过extra-vars选项传递ansible完成测试环境部署。 ?...定义发布流水线既可以通过定时构建触发,定时构建触发使用参数定义默认值;也可以手动发布,手动发布可以动态修改部署参数。这样就可以根据测试需求快速实现不同组合环境部署。 ?...对于不同测试环境组合,也可以定义多个发布任务。根据实际环境规划,对不同任务通过标签进行分类管理,就可以快速定位部署任务,也可以有效实现环境部署任务管理。 ?

1.5K20

ansible基础应用

ansible任务配置文件被称为playbook,就是剧本,每个剧本里面包含一系列任务,每个任务ansible中又被称为“戏剧”(play)。...(1)YAML语法格式 数据结构可以用类似大纲缩排方式呈现,结构通过通过缩进来表示,连续项目可以通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。...-a "ss -tnl |grep :8080" (3)上面的有一个缺陷,我改动那个配置文件了怎么办,这个时候就要用handlers了 在特定条件触发;接收到其他任务通知触发。...:-e 使用变量 ansible-playbook -e pkname=memcached –check web2.yaml 3、通过roles传递变量 4、Host Inventory (6)模版templates...(7)条件判断,when语句,在task中使用,支持jinja2语法格式 (8)循环,迭代,我一下装好几个包 作者:yezi 来源:http://www.178linux.com/65855

1.3K71

如何在Ubuntu 14.04上使用Ansible部署高级PHP应用程序

先决条件 在本教程中,我们将使用Ansible在Ubuntu 14.04 Droplet上安装和配置Nginx,PHP和其他服务。本教程以Ansible基本知识为基础。...我们还需要告诉任务仅在dbpwd变量发生变化时才运行,这只会在密码生成任务运行时运行。...shell在Ansible中使用任务,记住在运行任务之前完成处理任务输出/结果整个工作流程以避免必须手动登录和重置状态,这一点非常重要。...: dbpwd.changed 正如我们对MySQL用户创建任务所做那样,我们使用生成密码变量(dbpwd.stdout)来使用密码填充文件,并添加了when选项以确保它仅在dbpwd更改时运行。...队列工作者与cron作业类似,因为他们在后台运行任务。不同之处在于应用程序通过用户执行操作或通过cron作业调度任务将作业推送到队列中。

10.7K60

【DevOps】Ansible v.s. Salt (SaltStack) v.s. StackStorm

一旦你有了清单,你就可以构建主机或组特定变量,你剧本可以利用这些变量。这些再次保存在静态文本文件中。 然后 Ansible 将连接到您选择主机或组并执行剧本。...架构 Ansible 架构很简单,你有在你机器上运行应用程序,你有在远程主机上运行任务通过 SSH 进行通信并通过 SCP/SFTP 传输文件。...触发器是外部事件 StackStorm 表示。有通用触发器(例如计时器、网络钩子)和集成触发器(例如 Sensu 警报、更新 JIRA 问题)。可以通过编写传感器插件来定义新触发器类型。...操作是 Python 插件或任何脚本,通过添加几行元数据使用到 StackStorm 中。操作可以由用户通过 CLI 或 API 直接调用,或者作为规则和工作流一部分使用和调用。...规则将触发器映射到操作(或工作流),应用匹配条件并将触发器有效负载映射到操作输入。 工作流将动作拼接成“超级动作”,定义顺序、转换条件传递数据。大多数自动化不仅仅是一个步骤,因此需要多个操作。

1.1K20

深入了解 Ansible:全面掌握自动化 IT 环境利器

5.2.3 使用条件判断和循环 利用 Ansible 条件判断和循环功能,根据不同条件执行不同任务,或者对一组主机重复执行相同任务。...将常用参数提取为变量,以便于修改和重用,并将这些变量传递给模块或角色。...5.2.7 使用标签和条件执行 在 Playbooks 中使用标签(tags)来标记任务任务集,以便在运行 Playbooks 选择性地执行或跳过特定任务。...这样可以实现任务之间信息传递和数据共享。 5.2.9 测试和调试 在编写 Playbooks ,及时进行测试和调试是非常重要。...变量(Variables): 角色可以定义一组变量,用于控制任务行为和配置参数。这些变量可以在角色内部使用,并可以在角色被调用时传递给角色。

49311

ansible简易入门之playbook

我们使用 adhoc ,主要是使用 /usr/bin/ansible程序执行任务.而使用 playbooks ,更多是将之放入源码控制之中,用之推送你配置或是用于确认你远程系统配置是否符合配置规范...这里主要看example1.yml这个文件,其代表意义是在webservers这组主机上执行一个任务列表(先确保安装了httpd软件包,再通过模板写入一个配置文件,再确保httpd服务已启动),很简单吧...: True - shell: /usr/bin/bar when: foo_result.rc == 5 通过vars_files引入外部变量文件 --- - hosts:all remote_user...shutdown -t now when: ansible_os_family == "Debian" 在roles 和 includes 上面应用’when’语句 根据条件决定是否执行一段任务列表...: - include:tasks/sometasks.yml when:"'reticulating splines' in output" 根据条件决定是否执行一个role上所有操作序列:

1.1K40

现代 IT 人一定要知道 Ansible系列教程:Roles详解

在 playbook roles: 部分中使用 vars: 变量将添加到剧本变量中,使它们可用于角色之前和之后剧本中所有任务。...定义此参数规范后,将在角色执行开始插入一个新任务,该任务将根据规范验证为角色提供参数。如果参数验证失败,则角色将无法执行。...如果在每个角色定义中传递不同参数,则 Ansible 会多次运行该角色。提供不同变量值与传递不同角色参数不同。...使用角色依赖关系 角色依赖关系允许我们在使用角色自动拉入其他角色。 角色依赖关系是先决条件,而不是真正依赖关系。这些角色没有父/子关系。...如果一个角色中两个角色都将第三个角色列为依赖项,则 Ansible 只会运行该角色依赖项一次,除非我们传递不同参数、标签、when 子句或在要多次运行角色 allow_duplicates: true

23010

如何在Ubuntu 14.04上使用Ansible部署多个PHP应用程序

然后,我们在以下任务中使用when: cloned|changed来条件触发任务。现在我们需要更新这些引用以支持应用程序循环。...这是通过使用with_together选项完成,并将其传入applications和cloned。当with_together循环通过两个变量通过使用item....对于cloned,我们需要从任务传递结果,这些结果可以通过cloned.results进行访问,然后我们可以检查它是否已通过item.1.changed进行更改。...打开您剧本进行编辑: nano php.yml 找到MySQL任务,在我们初始传递中,我们将添加基本变量,就像我们在之前任务中所做那样: - name: Create MySQL DB mysql_db...我们可以对每个任务进行条件检查,以确定哪个服务器正在运行任务,或者我们可以使用主机变量。主变量就是它们听起来样子:适用于特定主机变量,而不是整个剧本中所有主机。

8.6K00
领券