Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 在特定的主机集/主机列表上有条件地执行_Apache Kafka_Ansible - Fatal编程技术网

Apache kafka 在特定的主机集/主机列表上有条件地执行

Apache kafka 在特定的主机集/主机列表上有条件地执行,apache-kafka,ansible,Apache Kafka,Ansible,我第一次使用ansible,我的任务是仅为生产环境更改属性。 我很快就在网上读到了,但还不能完全理解这个概念 这就是我的目录层次结构。因此,基本上该文件既不是task/role/handler,因为main.yaml文件中没有name/task/handler/role tag/key,只有kafka服务器代理属性和其他coinfg变量。在我最近看到的文档/示例中,以及何时和主机键/标记中显示了执行此操作 我想做一些像 禁用/设置false生产环境的kafka主题删除。默认情况下,此属性为tr

我第一次使用ansible,我的任务是仅为生产环境更改属性。 我很快就在网上读到了,但还不能完全理解这个概念

这就是我的目录层次结构。因此,基本上该文件既不是task/role/handler,因为main.yaml文件中没有name/task/handler/role tag/key,只有kafka服务器代理属性和其他coinfg变量。在我最近看到的文档/示例中,以及何时和主机键/标记中显示了执行此操作

我想做一些像

禁用/设置false生产环境的kafka主题删除。默认情况下,此属性为true。 delete.topic.enable:true

我有点像

{% set env_bool: ture if ("production" == {{inventory_dir.split('/')[-1]}}) else false %}
  delete.topic.enable: true
我有三个环境目录,在生产/库存中,我有集群中kafka实例的IP


如何实现这一点?

与其使用模板化的if条件,不如始终定义变量

因此,在
defaults/main.yml
中将属性设置为true,然后在库存文件或
group\u vars
目录中,为生产添加一个覆盖该属性的组变量

然后,在属性文件模板中,只需引用
delete.topic.enable={{{delete\u topic\u enabled}


顺便说一下,您可能想看看现有的合流Ansible脚本

我认为您需要了解更多关于Ansible的知识,然后才能理解问题的答案。Espc。阅读哪些角色以及它们是如何构成的。文件
defaults/main.yml
不包含任何任务,只包含变量默认值。任务存储在
Tasks/main.yml
中。如果要覆盖
默认值中的var,请在该主机或组的资源清册中进行设置,但不更改角色。