当前位置: 首页 > 知识库问答 >
问题:

Anable playbook范围的设置和任务

洪念
2023-03-14

我有一个具有这种结构的剧本:

---
- hosts: foo-servers
  roles:
    - foo_setup
  become: yes
  tags: tweaks

- hosts: bar-servers
  roles:
    - bar_setup
  become: yes
  tags: tweaks

[a few more server groups with a similar pattern]

我在所有服务器中部署了一个有点相似的功能,但每个服务器组都有自己的小差异,因此我需要为每个组保留单独的角色。

我还想在所有主机中从每个角色中运行一组选定的任务,即标记为“调整”的任务。

所有主机都应该以提升的权限运行,但并不是所有剧本都是这样,所以我希望该设置仅适用于此剧本(没有全局变量)。

我想将所有重复的参数- 变成:是和< code >标记:调整移到< code >主机:游戏之外,它们将被指定应用于下面的所有角色。大意为…的某事

--
- all_hosts_this_playbook:
  become: yes
  tags: tweaks

- hosts: foo-servers
  roles:
    - foo_setup

- hosts: bar-servers
  roles:
    - bar_setup

我想这在命令行中是可能的。像 ansible-playbook setup_tweaks.yml --tags “tweak” --be?但是有没有一个剧本等价物?我宁愿在文件中而不是在命令行中拥有这些内容,因为在命令行中我经常忘记添加内容。

循环不起作用。。。

错误!“循环”不是游戏的有效属性

- name: Make tweaks in many servers
  become: yes
  tags: tweaks
  hosts: "{{ item.host }}"
  roles:
    - "{{ item.role }}"
  loop:
    - { host: 'foo-servers', role: 'foo_setup' }
    - { host: 'bar-servers', role: 'bar_setup' }

我还想添加<code>post_tasks:

post_tasks_all_hosts:
- name: Upgrade system
  apt:
  autoremove: yes
  autoclean: yes
  update_cache: yes
  upgrade: dist
  tags: tweaks

- name: Reboot
  shell: sleep 2 && reboot
  async: 3
  poll: 0
  tags: tweaks

是否可以定义剧本范围内的<code>pre_tasks?

这里回答:如何在剧本中声明全局变量?有人指出“不能在剧本级别定义可访问的变量”,但在我的例子中,它不是变量,而是任务参数和< code>post_tasks:。

也许参数和“前/后任务”是不同的问题,有不同的解决方案,但我决定在同一个地方问,因为它们都属于我想为整个剧本设置的同一类参数,而不是主机:播放。

共有1个答案

储俊英
2023-03-14

Q: “我想这在命令行中是可能的。像ansible playbook setup_tweaks.yml——标记“tweak”——变为?但是否有一个Playboo等效物?”

答:不可以。没有这样的剧本等价物。

只运行用这些值标记的游戏和任务

与标记继承相比?

添加标签:向游戏或静态导入的任务和角色添加这些标签到所有包含的任务...当您将标签:属性应用于任务以外的结构时,Anable会处理标签属性以仅应用于它们包含的任务。在任务以外的任何地方应用标签只是一种方便,因此您不必单独标记任务。

细节

在play below标签中,“tweaks”被添加到所有包含的任务中

- hosts: foo-servers
  roles:
    - foo_setup
  tags: tweaks

下面的命令仅选择标记为“调整”的任务

ansible-playbook setup_tweaks.yml --tags "tweak"

问:“是否可以定义剧本范围的pre_tasks或post_tasks?”

答:不可以。这是不可能的。前/post_tasks的范围是戏剧。

 类似资料:
  • 本文向大家介绍设置MongoDB $ slice带范围?,包括了设置MongoDB $ slice带范围?的使用技巧和注意事项,需要的朋友参考一下 要设置切片和范围,请使用带参数的$slice运算符。这些参数将针对要获取的元素的开始位置进行设置,第二参数针对范围。让我们创建一个包含文档的集合- 在方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是设置范围的切片的查询- 这将产生以下输出

  • 问题内容: 我有一个从或指令属性或任何其他属性中获得的字符串,我想基于此在作用域上创建一个变量。所以: 但是,如果字符串包含一个或多个点,我想将其拆分并实际上“向下钻取”到作用域中。所以应该成为。这意味着简单版本不起作用! 在读取基于字符串的变量时,您可以通过做来获得这种行为,但是在分配值时如何实现呢? 问题答案: 我发现的解决方案是使用$ parse。 “将Angular表达式转换为函数。” 如

  • 问题内容: 我最近切换到了Google Maps API V3。我正在研究一个简单的示例,该示例从数组中绘制标记,但是我不知道如何相对于标记自动居中和缩放。 我搜索了包括谷歌自己的文档在内的最高和最低值,但没有找到明确的答案。我知道我可以简单地取坐标的平均值,但是如何设置缩放比例呢? 问题答案: 一切都排序了-请查看最后几行代码-()

  • 我正在尝试使用谷歌应用程序脚本将谷歌工作表中的所有公式从一个工作表(1月)复制到多个工作表(2月、3月、4月等)。下面的代码正在为单元格A1执行我想要的操作。但是,我想将所有公式(或者说A1:Z10)从表1复制到目标表中各自的单元格中。 除此之外,我确信还有一个更好的方法来写这个:例如,类似于和而不是为每个月创建单独的变量。

  • Matplotlib 可以根据自变量与因变量的取值范围,自动设置 x 轴与 y 轴的数值大小。当然,您也可以用自定义的方式,通过 set_xlim() 和 set_ylim() 对 x、y 轴的数值范围进行设置。 当对 3D 图像进行设置的时,会增加一个 z 轴,此时使用 set_zlim() 可以对 z 轴进行设置。 下面示例分别对自动设置和自定义设置做了演示:第一种 Matplotlib 自动

  • 我目前正在用下面的代码从Google表单中获取所有值,但是在从那里获取所有值之后,现在如何在另一个表单中设置它们呢? var ss=电子表格应用程序。openById(ID); var值=ss。getDataRange()。getValues(); var ss1=电子表格应用程序。openById(ID1); 我没能做到,有没有办法用for循环做到?