首页
学习
活动
专区
工具
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.4K20

    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.1K20

    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:存放通过

    3.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.6K20

    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.5K10

    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

    65610

    Ansible的Playbook基操

    也可以通过指定其通过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

    89010

    基于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.6K20

    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.2K20

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

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

    91011

    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

    42310

    如何在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.7K00

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券