首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不确定的库存模式与极限论证

不确定的库存模式与极限论证
EN

Stack Overflow用户
提问于 2020-06-19 15:16:21
回答 1查看 1.7K关注 0票数 0

我有以下名为hosts-local的库存文件

代码语言:javascript
复制
host-1   ansible_host=minio-1.localdomain
host-2   ansible_host=minio-2.localdomain
host-3   ansible_host=minio-3.localdomain
host-4   ansible_host=minio-4.localdomain

[minio_cluster_members]
host-1
host-2
host-3
host-4

[nginx_reverse_proxies]
host-1
host-3

[all:vars]
ansible_connection=ssh

还有一本引用小组的剧本:

代码语言:javascript
复制
- name: "Install and configure Minio"
  hosts: minio_cluster_members
  become: yes
  remote_user: ansible
  roles:
    - minio

- name: "Install and configure nginx reverse proxy"
  hosts: nginx_reverse_proxies
  become: yes
  remote_user: ansible
  roles:
    - nginx

我调用ansible像这样的$ ansible-playbook -i hosts-local playbook.yml

我最初的想法是拥有hosts-localhosts-testhosts-prod文件,以便在部署环境的基础上定义host-1host-2等(尽管与其他组重复)。

但后来有人建议我看一下argument,特别是--limit参数,引用不可信的医生。这似乎特别相关:

最后,您可以使用--限制从文件中读取主机列表,方法是以@作为文件名的前缀: site.yml -限制@retry_hosts.txt

我读到这篇文章的方式是,我会有一个这样的清单文件:

代码语言:javascript
复制
[minio_cluster_members]
host-1
host-2
host-3
host-4

[nginx_reverse_proxies]
host-1
host-3

[all:vars]
ansible_connection=ssh

然后为每个环境定义host-1host-2等一系列文件:

代码语言:javascript
复制
# local dev hosts
host-1   ansible_host=minio-1.localdomain
host-2   ansible_host=minio-2.localdomain
host-3   ansible_host=minio-3.localdomain
host-4   ansible_host=minio-4.localdomain
代码语言:javascript
复制
# test hosts
host-1   ansible_host=test-minio-1.test.domain.com
host-2   ansible_host=test-minio-2.test.domain.com
host-3   ansible_host=test-minio-3.test.domain.com
host-4   ansible_host=test-minio-4.test.domain.com

等。

然后我会像这样调用ansible:$ ansible-playbook -i inventory playbook.yml --limit 'all:@hosts-local'

但为了我的生命,我不能让这件事起作用。它抱怨限制文件中的每一行(包括注释):

代码语言:javascript
复制
[WARNING]: Could not match supplied host pattern, ignoring: # local dev hosts
[WARNING]: Could not match supplied host pattern, ignoring: host-1   ansible_host=minio-1.localdomain
[WARNING]: Could not match supplied host pattern, ignoring: host-2   ansible_host=minio-2.localdomain
[WARNING]: Could not match supplied host pattern, ignoring: host-3   ansible_host=minio-3.localdomain
[WARNING]: Could not match supplied host pattern, ignoring: host-4   ansible_host=minio-4.localdomain

我做错什么了?我是否误解了模式,特别是文件中的--limit参数的工作原理?文件应该是什么格式/语法?我在任何地方的互联网上都找不到这样的例子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-19 16:04:58

我认为--limit的论点是一种“青鱼”,而不是我为解决这个问题而想要的。

我发现你可以指定多个库存文件。所以我有主要的库存hosts

代码语言:javascript
复制
[minio_cluster_members]
host-1
host-2
host-3
host-4

[nginx_reverse_proxies]
host-1
host-3

[all:vars]
ansible_connection=ssh

我有一个本地主机的清单,叫做hosts-local

代码语言:javascript
复制
[local]
host-1   ansible_host=minio-1.localdomain
host-2   ansible_host=minio-2.localdomain
host-3   ansible_host=minio-3.localdomain
host-4   ansible_host=minio-4.localdomain

还有一个用于测试的叫做hosts-test

代码语言:javascript
复制
[test]
host-1   ansible_host=test-minio-1.test.domain.com
host-2   ansible_host=test-minio-2.test.domain.com
host-3   ansible_host=test-minio-3.test.domain.com
host-4   ansible_host=test-minio-4.test.domain.com

我可以将它们与:$ ansible-playbook playbook.yml -i hosts -i hosts-local结合起来

就这样!非那样做不行。

此外,我还获得了拥有组testlocal等的额外好处,因此我可以根据组名设置变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62473343

复制
相关文章

相似问题

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