我有一个Ansible playbook,它首先在google cloud上创建一个实例,然后将新实例加载到一个组中。然后,它继续并尝试为该组运行一个角色,该角色将更新新的实例设置。我从谷歌云上的Ansible文档中获得了大部分代码。
我真正添加的是添加<code>vars_prompt)和一个用于软件座位数的变量。
在我的剧本中,我使用<code>vars_prompt<code>来收集一些用户输入。我在剧本中使用这些变量:
- name: Create Customer
hosts: localhost
gather_facts: no
connection: local
vars:
machine_type: n1-standard-1 # default
image: appname-cloud-base
service_account_email: myemailaccount@developer.gserviceaccount.com
credentials_file: /home/developer/ansible/appnamecloud.json
project_id: appnamecloud
vars_prompt:
- name: "t_customername"
prompt: "enter customer name"
private: no
- name: "tag"
prompt: "enter tag"
private: no
- name: "t_seats"
prompt: "enter number of simultaneous seats or -1 for unlimited."
private: no
任务:...
初始化新实例后,我使用add_host将其添加到一个组中,然后开始一个新的部分,在那里我要调用一个角色,并将变量<code>t_customname
- name: Manage new instances
hosts: my_instances
connection: ssh
sudo: True
roles:
- role: update
vars:
dbinstalltype: "CREATE"
customername: "{{ t_customername }}"
seats: "{{ t_seats }}"
当我试图访问<code>{{customername}}
我在上面的< code>sudo: True行下尝试做了一个调试行,结果显示< code>t_customername和< code>t_seats也没有定义。我还试着在第一段代码中调用set_fact,看看是否有帮助,但是这些变量在第二段代码中也没有定义。
是因为我组织双名部分的方式吗?如何将我的< code>vars_prompt变量传递给下一节/角色?
这是我的完整档案。
在add_host
任务中定义变量,而不是在后续重头戏中定义变量:
- name: Add host to groupname
add_host:
hostname: "{{ newstatic.address }}
groupname: my_instances
dbinstalltype: "CREATE"
customername: "{{ t_customername }}"
seats: "{{ t_seats }}"
with_items: "{{ gce.instance_data }}"
说明:
变量在Ansible中会受到惰性求值的影响,因此只有在您使用客户名称
(更新
角色内部的某个地方)时,Ansible才会第一次查看其内容,找到一个模板{{t_customername}}
,并尝试使用未定义的变量的值t_customername
来解析它。
使用< code>add_host任务中定义的变量,在执行< code>add_host时进行评估。
关于你的标题“剧本变量/剧本中稍后不可用的事实”:
> < li>
使用< code>vars_prompt定义的变量是变量,而不是事实(即,它们不绑定到任何主机,这也是您无法使用< code>hostvars魔术变量访问这些值的原因);
正如缩进所暗示的,这些变量仅在定义它们的游戏中可用。
问题内容: 我有以下两项艰巨的任务 用于获取计算机(Linux)中的接口列表并获取每个接口的总线地址。我在同一本剧本中还有另外一项任务,如下 我希望对var2的值进行迭代,然后打印总线号。 var2.results如下 我的目标是获取上述每个项目中stdout的值,例如(“ stdout”:“ 09:00.0”)。我试图给像 但这不能正确提供标准输出中的总线值。当第二个变量是and indexed
我有一个Java Maven项目,使用Serenity BDD (serenity-bdd)结合Selenium来运行自动化测试。pom.xml包含serenity-bdd依赖项 当我导入时,确保类不可用。其他类 sush Actor 可用: 我已经更新了Maven存储库。我也关注了这个文档:https://serenity-bdd.github.io/theserenitybook/latest
我正在写一本Ansible剧本,在远程服务器上安装先决条件(解压、Python、Docker、Terraform)。运行playbook时,它会通过所有阶段,直到获得“安装地形”部分。在这个阶段,我正在运行一个脚本,在服务器上安装Terraform(手动运行时该脚本工作)。然而,剧本仍停留在那个阶段,没有写日志,也没有失败。 名为“Plans.yml”的剧本是: 叫做“config_Terrafo
根据Ansible的文档,一个剧本是: ...一个非常简单的配置管理和多机部署系统的基础,不像任何已经存在的系统,并且非常适合部署复杂的应用程序。 同样,根据这些文档,一个角色是: 如果有人能给我解释这些差异,我对Ansible的理解将会大大提高! 剧本vs角色vs以及中的类似条目 如果剧本是在YAML文件中定义的,那么角色在哪里定义? 除了Ansible服务器上的之外,如何使用可用的剧本/角色添
我肯定这里有人能解决我的问题。我正在我的可移动主机文件中定义的主机上创建用户。但当用户希望登录时,root用户需要定义用户密码。我需要自动创建用户密码。 要使用playbook创建用户密码,我们不能以明文形式指定密码,只能通过提供哈希值来实现: 非常感谢任何帮助!
是否可以定义一个禁用Javascript的浏览器来模拟爬虫如何查看页面?应该有一个选项可以通过。