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

Ansible -在vars_file中更新变量并在攻略中再次调用它不起作用

Ansible是一种自动化工具,用于配置管理、应用部署和任务执行。它基于Python开发,可以通过SSH协议远程管理和配置多台服务器。

在Ansible中,可以使用vars_file来定义变量,并在playbook中引用这些变量。然而,如果在vars_file中更新了变量的值,并且在playbook中再次调用该变量,更新的值不会生效。这是因为Ansible在加载变量时会缓存它们,一旦缓存了变量,后续的更新将不会影响已经加载的变量。

为了解决这个问题,可以使用include_vars指令来动态加载变量文件。这样,在更新变量文件后,再次调用变量时就能获取到更新后的值。

下面是一个示例:

  1. 创建一个变量文件vars.yml,定义一个变量my_var:
代码语言:txt
复制
# vars.yml
my_var: initial_value
  1. 创建一个playbook playbook.yml,引用变量my_var,并在任务中输出该变量的值:
代码语言:txt
复制
# playbook.yml
- name: Load variables
  include_vars:
    file: vars.yml

- name: Print variable value
  debug:
    var: my_var
  1. 运行playbook:
代码语言:txt
复制
ansible-playbook playbook.yml

输出结果将是:

代码语言:txt
复制
TASK [Print variable value] ****************************************************
ok: [localhost] => {
    "my_var": "initial_value"
}
  1. 更新变量文件vars.yml,修改变量my_var的值:
代码语言:txt
复制
# vars.yml
my_var: updated_value
  1. 再次运行playbook:
代码语言:txt
复制
ansible-playbook playbook.yml

输出结果将是:

代码语言:txt
复制
TASK [Print variable value] ****************************************************
ok: [localhost] => {
    "my_var": "updated_value"
}

通过使用include_vars指令,可以在每次调用变量时动态加载变量文件,从而实现更新变量的效果。

在腾讯云中,可以使用Ansible Tower来管理和执行Ansible任务。Ansible Tower是一个基于Web的界面,提供了更多的功能和扩展性,可以方便地管理和监控Ansible的自动化任务。您可以在腾讯云官网了解更多关于Ansible Tower的信息:Ansible Tower产品介绍

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

相关·内容

自动化运维实践 | Ansible变量

Ansible使用变量的几个场景 playbook, 常用的几种变量包括以下几种情况: 1)playbook中用户自定义的变量 2)用户无须自定义。...当变量较多时,或者变量需要在多个playbook重用的时候,可以把变量放到一个单独的文件,通过关键字"vars_file"把文件定义的变量引用到playbook。...每个playbook执行前都会默认执行setup模块,所以这些Facts信息可以直接以变量的形式使用。 哪些Facts变量可以引用呢?可以通过命令行上调用setup模块命令查看。...,作用域为某个主机 --- 定义主机清单变量 --- 主机的系统变量 --- 注册变量 Ansible变量的优先级 Ansible变量的优先级(由低到高) role defaults dynamic...Play vars_files 把一个变量单独放在一个文件,通过关键字vars_file从文件加载进来的变量就是play vars_file. - host: web vars_file:

1.9K30

第四章.自动化运维工具-Ansible变量

playbook调用,会方便许多。...-- 命令行 > playbook文件 > Inventory文件 ---- 变量定义 playbookvars定义变量 playbook变量可以通过多种方式进行定义,最简单的方式就是playbook...所以我们可以采取第二种定义变量的方式,vars_file定义变量。...定义变量 注意:Inventory定义变量,主机的变量要高于主机组的变量,所以该方法不推荐使用,容易将环境弄乱。...的result并不会显示出来,所以,我们可以把这些返回值'存储'到变量,这样我们就能通过'调用'对应的变量名,从而获取到这些result,这种将模块的返回值,写入到变量的方法被称为变量注册 那么咋样将返回值注册到变量

41340

Ansible自动化运维工具

,并且只能含有字母,数字和下划线.通过vars声明变量通过“{{变量名}}”进行调用undefined左边的就是使用变量写的,右边就是没用.实质效果一样也可以通过指定一个变量文件来实现 参数:vars_files...: 此目录main.yml文件定义新角色变量的默认值,该目录定义的优先级较低,使用角色时可以覆盖这些变量Files: 存放角色任务引用的静态文件Handlers: 此目录main.yml 文件定义处理程序...: 此目录可以包含清单和test.yml(playbook)用于测试角色Vars: 此目录main.yml文件定义角色使用的变量值,优先级高于default目录GalaxyGalax是ansible...构成Jinja2模板的构成:数据 变量 表达式使用jinja2模板时变量和表达式会被替代成对应的值,变量的值可以plasybook定义也可以直接调用facts事实,当然调用facts需要你编写的playbook...vars_file: .

2.5K30

为什么不允许使用 Java 静态构造函数?

[zhtwu6wcpq.png] 静态属于类,构造函数属于对象 我们知道静态方法,静态块或变量属于该类。而构造函数属于该对象,并在使用 new 运算符创建实例时调用。...由于构造函数不是类属性,因此有理由认为它不能是静态的。 静态块 / 方法无法访问非静态变量 我们知道静态方法不能访问非静态变量。静态块也是如此。 现在,构造函数的主要目的是初始化对象变量。...因此,如果构造函数转换静态,我们将无法使用它,这将破坏java的继承性。 正是金九银十跳槽季,为大家收集了2019年最新的面试资料,有文档、有攻略、有视频。...有需要的同学可以公众号【Java知己】,发送【面试】领取最新面试资料攻略!暗号【1024】千万不要发,否则..... Java静态构造方法替代 如果要在类初始化一些静态变量,则可以使用静态块。...请注意,我们无法将参数传递给静态块,因此,如果您要初始化静态变量,则也可以常规构造函数执行此操作。

3K70

如何在Ubuntu 14.04上使用Ansible部署基本PHP应用程序

本教程,我们将创建一个本地hosts文件并使用它。我们可以通过工作目录创建一个新的Ansible配置文件来完成此操作,我们可以使用它来告诉Ansible同一目录查找hosts文件。...让我们运行一个简单的检查,以确保Ansible能够通过新php组上调用ping模块来按预期连接到主机。...该composer create-project会再次运行,并在Laravel的情况下,这意味着一个新的APP_KEY。所以我们想要的是将该任务设置为仅在新克隆之后运行。...我们可以通过git clone任务结果中注册变量,然后composer create-project任务检查这些结果来确保它只运行一次。...第6步 - 更新环境变量 在此步骤,我们将更新应用程序的环境变量。 Laravel附带一个默认的.env文件,该文件用于设置APP_ENVto local和APP_DEBUGto true。

5.9K00

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

Ansible CVM的SSH密钥授权PHP部署CVM上登录。 第1步 - 切换应用程序存储库 在此步骤,我们将Git存储库更新为稍微自定义的示例存储库。...一种方法是本地生成密码并将其保存在我们的Ansible playbook,但这是不安全的,并且有更好的方法。 我们将在服务器上使用Ansible生成密码,并在需要的地方直接使用。...我们的例子,我们想要创建一个被调用的用户,laravel并为他们提供laravel表的完全权限。我们还需要告诉任务仅在dbpwd变量发生变化时才运行,这只会在密码生成任务运行时运行。...Laravel附带默认调用的名为schedule:run的Artisan命令,该命令旨在每分钟运行并在应用程序执行定义的计划任务。...保存并运行剧本: ansible-playbook php.yml --ask-sudo-pass 现在,浏览器刷新页面。一分钟内,它将更新为这样。

10.7K60

使用Ansible构建虚拟机模板二

例如,我们可能只需要更改文件的一行,而将替换整个文件变成更改一行的工作量有点繁重,特别是当你考虑到配置文件可能会在将来的软件包版本更新时。...出于安全原因,这是不可取的,所以问题是,我们如何更新SSH守护程序配置而不必替换整个文件呢?幸运的是,Ansible有用于此类任务的模块。 要执行此任务,lineinfile模块将派上用场。...Ansible,有许多方法都可以执行此任务,我们举一个简单的例子。假设你有一个存档脚本,它使用bzip2压缩实用程序来压缩文件。...我们一个名为bzip2result的变量register(注册)stat模块运行的结果,然后在任务上定义一个自定义故障条件,如果文件不存在,该条件将导致任务失败(从而使整个剧本运行失败)。...如果你已经完成了构建后定制的过程(如本章所述),那么生成的映像可能需要再次清理。我们可以再次使用virtsysprep命令,不过,Ansible也可以帮助我们。

21020

如何在Ubuntu 18.04上安装和配置Ansible

但是,执行此操作之前,您应首先更新软件包索引并安装software-properties-common软件包。...接下来,再次刷新系统的包索引,以便它知道PPA可用的包: sudo apt update 在此更新后,您可以安装Ansible软件: sudo apt install ansible 您的Ansible...运行以下命令以更新主机的软件包索引并安装python软件包: sudo apt update sudo apt install python 在此之后,您可以再次运行exit命令以关闭与客户端的连接:...因此,我们的场景,我们想象我们将使用Ansible控制三台服务器。...如果sammy用户也不在远程系统上,这将不起作用。 我们可以创建一个文件,告诉“服务器”组的所有服务器以root用户身份进行连接。

6K30

Ansible 实战与配置(Ⅳ)

虽然我们把站点的配置全部配置到了每台server,但是这仅仅是安装,我们仍需要去管理配置,优化,一旦不符合当前要求我们需要重新再次去配置。如何使用ansible自动搞定呢?.../roles/new/files/ 定义变量 vim /etc/ansible/nginx_config/roles/new/vars/main.yml nginx_basedir: /usr/local...更新前一定要记得先备份,目的就是一旦出现错误,我们需要马上回滚!...更新配置前,我们是不是需要把现在的配置备份下,万一配置不对,线上的环境不就崩了? 备份就是如上 rsync。...第二步:更新 备份完毕后,我们才可以去改变(/etc/ansible/nginx_config/roles/new/files)当前的配置,然后去更新ansible-playbook /etc/ansible

53940

现代 IT 人一定要知道的 Ansible系列教程:持续交付和滚动升级

可重用内容:角色 到目前为止,我们应该对角色以及它们 Ansible 的工作方式有一定的了解。角色是一种组织方式内容:任务、处理程序、模板和文件,转化为可重用的组件。...本例,我们只需设置两个变量,一个用于 Web 服务器的端口,另一个用于 我们的机器应该使用 NTP 服务器来进行时间同步。 这是另一个组变量文件。...我们的例子执行更新之前,我们需要了解环境中所有监控服务器的一些信息,因此这个简单的操作会强制我们的监控服务器上执行事实收集步骤。您有时会看到这种模式,这是一个有用的技巧。...对于其他负载均衡器,可能需要向它们发送 shell 命令或者调用 API。对于 Ansible 具有模块的负载均衡器,可能希望它们联系 API 时将其作为 a 运行。...这应该可以很好地了解如何使用 Ansible 构建多层应用程序,并在该应用程序上编排操作,最终目标是持续交付给客户。

22510

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

以下是一些常用的 Ansible 模块以及它们的简要介绍和示例: 5.1.1 apt / yum 简介: 用于 Debian/Ubuntu(apt)或 CentOS/RHEL(yum)系统上安装、更新和删除软件包...可以使用不同级别的变量,包括全局变量、主机组变量和主机变量,以覆盖或补充默认值。使用 vars 关键字定义变量,或者主机组或主机的 Inventory 定义。...5.2.8 使用注册变量 利用 Ansible 的注册变量功能,可以一个任务执行命令,并将输出保存到变量,然后在后续的任务中使用这些变量。这样可以实现任务之间的信息传递和数据共享。...变量(Variables): 角色可以定义一组变量,用于控制任务的行为和配置参数。这些变量可以角色内部使用,并可以角色被调用时传递给角色。...利用角色依赖关系: 设计角色时,可以考虑将一些通用的功能抽象为独立的角色,并在需要时引入这些角色作为依赖。

49311

数据库领域一些概念介绍

,保证CMDB的记录在多个数据源没有重复现象,维持CMDB每个配置项目数据源的完整性;自动调整流程使得初始实施、数据库管理员的手动运作和现场维护支持功能将至最低; 同步指确保CMDB的信息能够反映联合数据源的更新情况...,联合数据源更新频率的基础上确定CMDB更新日程,按照经过批准的变更来更新CMDB,找出未被批准的变更; 应用映射与可视化,说明应用间的关系并反应应用和其他组件之间的依存关系,了解变更造成的影响并帮助诊断问题...MySQL故障切换过程,MHA能做到0~30秒之内自动完成数据库的故障切换操作,并且进行故障切换的过程,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。...比如同时100台服务器上安装nginx服务,并在安装后启动它们。...API: 供第三方程序调用的应用程序编程接口 6.ANSIBLE: 组合INVENTORY、 API、 MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,

51830

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

一旦你有了清单,你就可以构建主机或组特定的变量,你的剧本可以利用这些变量。这些再次保存在静态文本文件。 然后 Ansible 将连接到您选择的主机或组并执行剧本。...当 Ansible 管理远程机器时,它不会在这些机器上安装或运行软件,因此迁移到新版本时如何升级 Ansible 没有真正的问题。...可扩展性 Ansible 模块真的很容易开发,与所有 3 个产品一样,如果您以后决定尝试将您的解决方案合并到产品的开源存储库,而不是再次重构它,请阅读样式指南。 #!...Ansible 的独特之处在于,供应商支持主要由供应商提供和支持,而不是社区。目前,这表明 API 覆盖范围更广、功能更多、平台支持更新(支持更新版本)。...工作流,就像“原子”动作一样,动作库可用,可以手动调用或由规则触发。 包(Packs)是内容部署的单位。

1.1K20

如何在Ubuntu 18.04上测试与分子的可靠角色

使用Ansible,Molecule将角色卸载到配置器,该配置器配置的环境中部署角色并调用验证器(例如Testinfra)来检查配置偏差。这可确保您的角色该特定方案对环境进行了所有预期的更改。...本指南中,您将构建一个Ansible角色,将Apache部署到主机并在CentOS 7上配置firewalld。...包括将非root用户添加到docker组。 Python 3并在您的服务器上安装和配置venv。请遵循如何在Ubuntu 18.04服务器上安装Python 3和设置编程环境以获得指导。...您还将在此步骤创建新模板。 "Ensure httpd service is started and enabled":此任务将启动并启用svc_list变量文件列出的服务。...第6步 - 使用分子测试角色 一旦启动测试,Molecule将执行您在场景定义的操作。现在让我们再次运行默认molecule方案,更仔细地查看每个方案时执行默认测试序列的操作。

2.5K84

Ansible 客户端需求–设置Windows主机

您可以使用Upgrade-PowerShell.ps1脚本来更新它们。...注意  username和 password参数都存储注册表的纯文本。确保脚本完成后运行清除命令,以确保主机上仍没有存储凭据。...注意 创建HTTPS侦听器时,需要创建一个现有证书并将其存储LocalMachine\My证书存储。如果此存储没有证书,则大多数命令将失败。...造成此问题的常见原因是环境变量包含文件共享的UNC路径,并且由于存在双跳/凭据委派问题,Ansible进程无法访问这些文件夹。...PSModulePathPSModulePath 从PSModulePath环境变量删除UNC路径,或者 使用支持凭据委派的身份验证选项,例如credssp或kerberos启用了凭据委派 有关此问题的更多信息

9.9K41
领券