美文网首页
ansible笔记-清单配置详情-(2)

ansible笔记-清单配置详情-(2)

作者: 张都尉 | 来源:发表于2019-07-15 17:26 被阅读0次
    • 清单配置
      • 以上篇ansible基本概念和基础配置,我们已能达成ansible控制各节点主机,那么为了更好管理这些主机,则需要将这些主机添加到受管理的ansible管理清单中去。
        • ansible提供了一个默认的管理清单,位置于 /etc/ansible/hosts文件中
        • 我们仍然以上篇环境演示,三台主机如下
          192.168.3.41 192.168.3.42 192.168.3.43(ansbile主机)



          如图所示 那我们在ansible主机 192.168.3.43上执行命令,那么清单内的主机均执行如上所有主机


          • 如果41属于A组服务器 42属于B组服务器 那么我们可以在清单进行如下操作配置
          [testserverA]
          k8s1 ansible_host=192.168.3.41  ansible_ssh_port=22
          [testserverB]
          k8s2 ansible_host=192.168.3.42  ansible_ssh_port=22 
          
          • 分别执行 ansible testserverA -m ping和 ansible testserverB -m ping


          • 如果192.168.3.41和192.168.3.42 在同一个组里这两台主机IP是连续的 那么我们也可以在配置管理组里面 那么我们可以这样设置,示例如下
            [serverA]
            192.168.3.[41:42]

          • 上例serverA组的配置,那么当然我们也可以以主机名安按顺序排列的方式进行处理
            [serverA]
            k8s1
            k8s2
            发现此类规律后,我们可以添加成
            [serverA]
            k8s[1:2]
          • 但实际使用环境中,服务器从使用类别上面分“生产环境”和“测试环境”
            那么我们分成两组,A和B组,举例
            [serverA]
            192.168.3.41
            [serverB]
            192.168.3.42
            [server:children]
            serverA
            serverB
            上述表示我们配置三个组,serverA和serverB和server组。而server组中包含的子组就是serverA和serverB,也就是说当我们操作server组里,也就相当操作了serverA和serverB组中的所有主机。


          • 如上,我们都一直在使用ini配置风格配置的清单,但与此同是时,ansible主机清单也支持和识别YAML的配置语法。举例:
            all:
            hosts:
            192.168.3.41
            192.168.3.42
            192.168.3.43
            • 那么我们来对比一下用户
    #先看INI风格的配置,示例如下
    192.168.3.43
    [test1]
    192.168.3.41
    [test2]
    192.168.3.42
    #上述配置表示当前清单中有3台受管主机,主机43不属于任何组,主机41属于test1组,主机42属于test2组
    
    #使用YAML语法进行同等效果的配置如下
    #注意,为了使缩进显得更加明显,此处每次缩进使用两个空格
    all:
      hosts:
        192.168.3.43:
      children:
        test1:
          hosts:
            192.168.3.41:
        test2:
          hosts:
            192.168.3.42:
        ```
                
       #从上例可以看出,当直接在清单中创建组时,需要在all关键字内使用children关键字,而定义每个组时,有必须使用hosts关键字,指明组内的主机
    
       # 按上面操作,我们来看一下组里面嵌套组时,YAML语法应该怎么写:
       #仍然写出INI风格示例
            [serverA]
             192.168.3.41
            [serverB]
              192.168.3.42
            [server:children]
              serverA
              serverB
        #对应YAML格式则为:
              all:
                 children:
                  server:
                    children:
                     serverA:
                        hosts:
                            192.168.3.41:
                      serverB:
                         hosts:
                             192.168.3.42:
    

    验证如图所示:
    ·

    YAML格式
    .
    验证结果
            # 等同效果语法 还有如
            #INI风格
              192.168.3.43
              k8s2 ansible_host=192.168.3.42 ansible_port=22
              192.168.3.41
            #YAML风格
                all:
                     hosts: 
                          192.168.3.43:
                           serverA: 
                                ansible_host: 192.168.3.41 #此处 HOST和IP处空格不可省
                                ansible_port: 22
                           192.168.3.42: 
    

    当然这块清单中可以配置变量,具体内容可以参考官网手册 https://docs.ansible.com/ansible/2.4/intro_inventory.html

    相关文章

      网友评论

          本文标题:ansible笔记-清单配置详情-(2)

          本文链接:https://www.haomeiwen.com/subject/jegnkctx.html