首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible:基于主机变量创建动态主机组

问Ansible:基于主机变量创建动态主机组
EN

Stack Overflow用户
提问于 2022-11-10 16:31:17
回答 1查看 32关注 0票数 0

是否可以根据手动定义的主机变量自动创建主机组?

这是我的清单:

代码语言:javascript
复制
[webserver]
web1         ansible_host=192.168.20.1     production=False
web2         ansible_host=192.168.20.2     production=False
web3         ansible_host=192.168.20.3     production=True
web4         ansible_host=192.168.20.4     production=True
...

我希望有一个动态主机组,例如,webserver_production,并使用它作为目标。

还有其他方法来存档吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-10 18:00:06

使用已构建的库存插件。看见

代码语言:javascript
复制
shell> ansible-doc -t inventory constructed
  1. 创建库存
代码语言:javascript
复制
shell> tree inventory/
inventory/
├── 01-webserver
└── 02-webserver_production.yml

0 directories, 2 files
代码语言:javascript
复制
shell> cat inventory/01-webserver
[webserver]
web1 ansible_host=192.168.20.1 production=False
web2 ansible_host=192.168.20.2 production=False
web3 ansible_host=192.168.20.3 production=True
web4 ansible_host=192.168.20.4 production=True
代码语言:javascript
复制
shell> cat inventory/02-webserver_production.yml
plugin: constructed
groups:
  webserver_production: production
  1. 检验存货
代码语言:javascript
复制
shell> ansible-inventory -i inventory --list --yaml
all:
  children:
    ungrouped: {}
    webserver:
      hosts:
        web1:
          ansible_host: 192.168.20.1
          production: false
        web2:
          ansible_host: 192.168.20.2
          production: false
        web3:
          ansible_host: 192.168.20.3
          production: true
        web4:
          ansible_host: 192.168.20.4
          production: true
    webserver_production:
      hosts:
        web3: {}
        web4: {}
  1. 在游戏手册中测试清单
代码语言:javascript
复制
shell> cat pb.yml
- hosts: webserver
  gather_facts: false
  tasks:
    - debug:
        var: ansible_play_hosts_all
      run_once: true

- hosts: webserver_production
  gather_facts: false
  tasks:
    - debug:
        var: ansible_play_hosts_all
      run_once: true

给予(删节)

代码语言:javascript
复制
shell> ansible-playbook -i inventory pb.yml

PLAY [webserver] *****************************************************************************

TASK [debug] *********************************************************************************
ok: [web1] => 
  ansible_play_hosts_all:
  - web1
  - web2
  - web3
  - web4

PLAY [webserver_production] ******************************************************************

TASK [debug] *********************************************************************************
ok: [web3] => 
  ansible_play_hosts_all:
  - web3
  - web4

备注:

  • 目录目录中的文件按字母顺序计算。
  • 见特殊变量 ansible_play_hosts ansible_play_hosts_all ..。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74392322

复制
相关文章

相似问题

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