仅当主机名包含字符串时才运行 Ansible 任务

2023-12-30

我的角色有多项任务,如下所示。我不想创建另一个yml文件来处理此任务。我已经包含了 Web 服务器,但是我们的几个 Perl 服务器需要安装一些 Web 软件包。

- name: Install Perl Modules
  command: <command>
  with_dict: perl_modules

- name: Install PHP Modules
  command: <command>
  with_dict: php_modules
  when: <Install php modules only if hostname contains the word "batch">

主机清单文件

[webs]
web01
web02
web03

[perl]
perl01
perl02
perl03
perl-batch01
perl-batch02

下面应该可以解决这个问题:

- name: Install PHP Modules
  command: <command>
  with_dict: php_modules
  when: "'batch' in inventory_hostname"

请注意,在剧本运行期间您将跳过几个主机。

inventory_hostname是 Ansible 的“神奇”变量之一:

此外,inventory_hostname 是主机名,如下所示 在 Ansible 的清单主机文件中配置。这对于 当您不想依赖发现的主机名时 ansible_hostname 或出于其他神秘原因。如果你有一个长 FQDN、inventory_hostname_short 还包含直到第一个的部分 期间,没有域的其余部分。

Source: Ansible 文档 - 魔法变量 https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html#magic-variables

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅当主机名包含字符串时才运行 Ansible 任务 的相关文章

  • 如何在 jinja2 中缩进嵌套的 if/for 语句

    我有一个很长的 Jinja2 模板 其中有很多嵌套if for声明 很难读 我想缩进 位 使其更清晰 但是 如果我这样做 这些块的内容也会进一步缩进 我怎样才能缩进just the bits 我正在使用安塞布尔 重现步骤 template
  • ansible:基于 extra-vars 文件的任务顺序

    我有包含 10 个任务的 ansible 剧本 任务的顺序因用例而异 因此我必须为每个用例创建 extraVar yml 文件 并且 extraVar yml 将定义任务的顺序 怎么做 Example 剧本 tasks name task1
  • Ansible 无法运行任何命令或 shell

    我在 RPi 上运行任何命令或 shell 时遇到问题 当我使用以下代码时 name Example command ansible builtin command cmd cat etc motd 我收到此错误 Unsupported p
  • 有没有办法同时拥有加密和非加密的主机变量?

    如果我加密host vars 文件与ansible vault 除了清单文件中的主机变量之外 我似乎没有机会拥有未加密的主机变量 我错过了什么吗 事实证明 http docs ansible com ansible intro invent
  • 包含 contains 的 json 格式查询

    我在 ansible 中有以下 json 输出 active transaction null cores 4 hostname alpha auth wb01 active transaction null cores 4 hostnam
  • 如何使用 Ansible 遍历嵌套的 dict 结构?

    我在 ansible 剧本中有以下 dict 结构变量 apache vhosts name foo server name foo com server aliases a foo com b foo com c foo com name
  • Ansible bitbucket 克隆配置 ssh 错误

    总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 主机密钥验证失败 然而 如果我流浪 ssh 然后运行 克隆 命令 私有存
  • 开发/生产中的 Ansible 服务器/组

    我所处的情况是看不到正确的使用方法 我有多个分配了不同角色的服务器 分布在多个组中 与生产 登台环境相比 我在本地 Vagrant 环境中遇到了一些使用 group vars 的困难 在生产中 有更多的服务器 分配的组更少 在我的 Vagr
  • 无法获得与取消存档模块一起使用的“排除”选项

    我有一个 tar gzip 文件 我正在使用 ansible 取消归档模块将其提取到主机列表中 以下是configs tgz的部分内容列表 rw rw r ian ian 1295 2015 09 25 15 27 Makefile rw
  • Ansible - 默认/显式标签

    我有一本剧本 其中包含并标记了各种角色 name base hosts host default localhost roles role apt tags base apt ubuntu role homebrew tags base h
  • 安塞布尔 + 10.11.6

    我在 非常 干净地安装 10 11 6 时遇到了 Ansible 的奇怪问题 我已经安装了brew zsh oh my zsh Lil snitch 和1password 实际上没有安装其他任何东西 我安装了ansible brew ins
  • ansible playbook失败:超时(12秒)等待权限升级提示:“}

    我正在尝试在虚拟机上自动执行一些手动任务 作为其中的一部分 我的虚拟机没有直接的根访问权限 所以我必须使用不同的用户 然后升级到root 当我尝试切换到 root 用户时 密码提示与默认提示不同 我看到的提示如下图 user1 vm 1 t
  • 如何在microsoft windows下使用ansible克隆git存储库

    Ansible 2 1 centos7下控制主机 windows 10数量作为客户端 我需要在远程端克隆 git 存储库 但不知道如何执行此操作 没有Windows 本机模块 http docs ansible com ansible li
  • AnsibleError:模板化字符串时出现模板错误:预期标记“:”,得到“}”

    准备模板时出现错误 谁能告诉你如何修复它 如有必要 还可以编辑变量 vars All ountry name1 name2 name1 region1a region1b name2 region2a region2b Code for c
  • 如何在 Ansible 中制作幂等 shell

    我正在使用 Ansible 在尝试使 shell 执行幂等时遇到一些问题 我做的第一件事是安装python apt 包因为我需要它来使用 apt 模块来安装其他软件包 但每次我运行我的playbookshell 任务始终运行 我想使其幂等
  • 有没有办法验证 Ansible Inventory 文件中组的主机数量?

    我的要求如下所示 我有一个 Ansible 库存文件 它根据如下所示的组件分为几个组 all node1 node2 node3 node4 webapp node3 node4 ui node1 如果条件失败 则有没有办法验证清单文件中组
  • 如何将主机添加到 Ansible Tower 库存中的组?

    如何使用以下命令将主机添加到组中tower group or tower host模块 以下代码创建一个主机和一个组 但它们彼此无关 hosts localhost connection local gather facts false t
  • Ansible - 任务系列 1 逆序

    我想创建两本剧本 一本用于停止环境 另一本用于启动它 环境的一部分是 RabbitMQ 集群 对于其停止 启动顺序非常重要 特别是最后一个停止的节点需要是第一个启动的节点 我想知道是否有一种方法可以指定针对组运行任务的相反顺序 这样我就可以
  • 如果条件为 true 则运行一些包含 yml 文件

    我有一些剧本ubuntu and centos我想用main yml去检查when ansible os family RedHat or ansible distribution Centos 运行剧本 如一些和许多 当我跑步时 incl
  • Ansible 从列表中使用存档模块创建 tar.gz

    我试图在 Ansible 中查找超过一天的文件 然后创建这些文件的 tar gz 我已经尝试过archive模块 尽管它只创建列表中最后一个元素的 tar 有什么方法可以创建包含所有文件的 tar gz 吗 下面是我的脚本 name Che

随机推荐