首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >遍历ansible主机组,在剧本运行时修改模板化文件

遍历ansible主机组,在剧本运行时修改模板化文件
EN

Server Fault用户
提问于 2020-02-10 13:31:38
回答 1查看 641关注 0票数 1

假设我有以下主机组在我的不可接受的清单中

代码语言:javascript
运行
复制
[qrouters]
devops-qr1
devops-qr2

[shards]
devops-shrd1
devops-shrd2
devops-shrd3

我必须使用类似于sh.addShard("<$REPLICASETNAME>/comma-separated-list-of-hosts") (ex:sh.addShard( "/s1-mongo1.example.net:27018,s1-mongo2.example.net:27018,s1-mongo3.example.net:27018") )的命令将碎片添加到mongodb集群中

我想在我的角色(比如roles/mongo_sharding/templates/addShards.j2)的模板文件中编写该命令,但不知道如何迭代库存文件。

请记住,[shards]组中的主机数量可能会不时变化。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2020-02-10 14:25:00

模板

代码语言:javascript
运行
复制
$ cat addShards.j2
sh.addShard( "<{{ my_replica_set }}>/{{ my_hosts }}")

和剧本

代码语言:javascript
运行
复制
$ cat my_playbook.yml
- hosts: localhost

  vars:
    my_replica_set: "replSetName"
    my_group: "shards"

  tasks:

    - set_fact:
        my_hosts: "{{ groups[my_group]|join( ':27018,') ~ ':27018' }}"
    - template:
        src: addShards.j2
        dest: my_command

代码语言:javascript
运行
复制
$ cat my_command 
sh.addShard( "/devops-shrd1:27018,devops-shrd2:27018,devops-shrd3:27018")
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1002490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档