RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1035755
Accepted
Василий Никпуп
Василий Никпуп
Asked:2020-10-17 23:34:01 +0000 UTC2020-10-17 23:34:01 +0000 UTC 2020-10-17 23:34:01 +0000 UTC

如何构建库存文件

  • 772

我有一个这样的文件hosts,内容如下:

 192.168.77.101 ansible_user=vagrant ansible_ssh_pass=vagrant zookeeperId=1 kafkaBrokerId=1
 192.168.77.102 ansible_user=vagrant ansible_ssh_pass=vagrant zookeeperId=2 kafkaBrokerId=2
 192.168.77.103 ansible_user=vagrant ansible_ssh_pass=vagrant zookeeperId=3 kafkaBrokerId=3

我不喜欢一台服务器的所有变量都必须在一行上。有没有办法让它更漂亮?在文档中,我只找到了一组服务器变量列表的描述。

ansible
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Мелкий
    2020-10-18T00:11:34Z2020-10-18T00:11:34Z

    无需在清单文件中指定所有变量。实际上,根据最佳实践,清单中根本没有变量,只有组和主机的名称。

    Ansible 期望使用目录树:

    production                # inventory file for production servers
    staging                   # inventory file for staging environment
    
    group_vars/
       group1.yml             # here we assign variables to particular groups
       group2.yml
    host_vars/
       hostname1.yml          # here we assign variables to particular systems
       hostname2.yml
    
    library/                  # if any custom modules, put them here (optional)
    module_utils/             # if any custom module_utils to support modules, put them here (optional)
    filter_plugins/           # if any custom filter plugins, put them here (optional)
    
    site.yml                  # master playbook
    webservers.yml            # playbook for webserver tier
    dbservers.yml             # playbook for dbserver tier
    
    roles/
        common/               # this hierarchy represents a "role"
            tasks/            #
                main.yml      #  <-- tasks file can include smaller files if warranted
            handlers/         #
                main.yml      #  <-- handlers file
            templates/        #  <-- files for use with the template resource
                ntp.conf.j2   #  <------- templates end in .j2
            files/            #
                bar.txt       #  <-- files for use with the copy resource
                foo.sh        #  <-- script files for use with the script resource
            vars/             #
                main.yml      #  <-- variables associated with this role
            defaults/         #
                main.yml      #  <-- default lower priority variables for this role
            meta/             #
                main.yml      #  <-- role dependencies
            library/          # roles can also include custom modules
            module_utils/     # roles can also include custom module_utils
            lookup_plugins/   # or other types of plugins, like lookup in this case
    
        webtier/              # same kind of structure as "common" was above, done for the webtier role
        monitoring/           # ""
        fooapp/               # ""
    

    group_vars 包含以имя группы.ymlyml 格式命名的文件,host_vars 包含名为 hostname 的文件。组和主机的名称是清单中指定的名称。在这些文件中,您可以为组或主机定义或覆盖变量。

    变量可以在很多地方声明,变量的优先顺序在文档中定义。

    所以你可以制作一个文件group_vars/vagrant.yml

    ---
    ansible_user: vagrant
    ansible_ssh_pass: vagrant
    

    然后host_vars/192.168.77.101.yml包含内容的文件:

    ---
    zookeeperId: 1
    kafkaBrokerId: 1
    

    其他两位主持人也是如此。

    之后,您只能留在库存中

    [vagrant]
    192.168.77.101
    192.168.77.102
    192.168.77.103
    

    之后,可以提高可读性 - 以某种方式命名此主机,并在变量中指定主机以ansible_ssh_host: 192.168.77.101进行连接。


    这两个变量本身显然看起来像枚举。也许你也可以让 ansible来处理这个问题?将主机组合成一个组,并在组列表中获取该主机的位置,而不是变量:

     {{groups['zookeeper'].index(inventory_hostname)}}
    
    • 3

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5