美文网首页
Ansible教程 第三章 Inventory详解

Ansible教程 第三章 Inventory详解

作者: Alex_Honnold | 来源:发表于2017-07-23 14:51 被阅读0次

    Inventory是Ansible管理主机信息的配置文件,相当于系统HOSTS文件的功能,默认存放在/etc/ansible/hosts。
    为方便批量管理主机,便捷使用其中的主机分组,Ansible通过Inventory来定义其主机和组,在使用时通过–i或--inventory-file指定读取。
    与Ansible命令结合使用时组合如下:

    ansible –i /etc/ansible/hosts webs –m ping 
    

    如果只有一个Inventory时可不用指定路径,默认读取/etc/ansible/hosts。Inventory可以同时存在多个,而且支持动态生成,如AWS EC2、Cobbler等均支持。

    定义主机和组

    主机设定:
    # “# ”开头的行表示该行为注释行,即当时行的配置不生效
    192.168.37.149 # Inventory可以直接为IP地址
    nfs.magedu.com # Inventory同样支持Hostname的方式
    ntp.magedu.com:2222 # 后跟冒号加数字表示端口号,默认22号端口

    # 中括号内的内容表示一个分组的开始,紧随其后的主机均属于该组成员,空行后的主机亦属于该组,即web2.magedu.com这台主机也属于[websevers]组  
    [websevers]  
    web1.magedu.com  
    web[10:20].magedu.com  # [10:20]表示10~20之间的所有数字(包括10和20),即表示web10.magedu.com、web11.magedu.com……web20.magedu.com的所有主机  
     
    web2.magedu.com
    
    [dbservers] 
    db-a.magedu.com  
    db-[b:f].magedu.com  # [b:f]表示b到f之间的所有数字(包括b和f),即表示db-b.magedu.com、db-e.magedu.com……db-f.magedu.com的所有主机 
    
    [webservers2]   #定义主机变量
    web2.magedu.com http_port=808 maxRequestsPerChild=801 # 自定义http_port的端口号为808,配置maxRequestsPerChild为801
    

    组设定:
    #定义组变量
    [groupservers]
    web1.magedu.com
    web2.magedu.com

    [groupservers:vars]  
    ntpntp_server=ntp.magedu.com  # 定义groupservers组中所有主机ntp_server值为ntp.magedu.com  
    nfsnfs_server=nfs.magedu.com # 定义groupservers组中所有主机nfs_server值为nfs.magedu.com 
    
    [apache]  
    httpd1.magedu.com  
    httpd2.magedu.com  
     
    [nginx]  
    ngx1.magedu.com  
    ngx2.magedu.com
    
    [webservers:children]  
    apache  
    nginx  
     
    [webservers:vars]  
    ntpntp_server=ntp.magedu.com 
    

    变量读取顺序及优先级

    变量读取顺序从如下4个位置检索:

    • Inventory配置文件(默认/etc/ansible/hosts)
    • Playbook中vars定义的区域(可以直接写变量,或引用文件)
    • Roles中vars目录下的文件
    • Roles同级目录group_vars和hosts_vars目录下的文件

    对于变量的读取,Ansible遵循如上优先级顺序,因此大家设置变量时尽量沿用同一种方式,以方便维护人员管理。

    假如foosball主机同属于raleigh和webservers组,那么其变量在如下文件中设置均有效:

    /etc/ansible/group_vars/raleigh # can optionally end in '.yml', '.yaml', or '.json'  
    /etc/ansible/group_vars/webservers  
    /etc/ansible/host_vars/foosball
    

    Inventory参数列表

    具体请官网查找,以下示例:

    ansible_ssh_host:指定连接主机ansible_ssh_port,指定SSH连接端口,默认22  
    ansible_ssh_user:指定SSH连接用户ansible_ssh_pass,指定SSH连
    接密码ansible_sudo_pass:指定SSH连接时sudo密码  
    ansible_ssh_private_key_file:指定特有私钥文件
    

    正则表达式

    ????????

    相关文章

      网友评论

          本文标题:Ansible教程 第三章 Inventory详解

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