• Ansible中inventory配置说明


    本文对常见的Ansible中Inventory配置相关内容整理如下

    1.   配置文件位置

    默认的文件路径为 /etc/ansible/hosts

    除此之外还可以使用动态Inventory,如有这个需求可以参考Ansible中文指南网站:http://www.ansible.com.cn/docs/intro_dynamic_inventory.html

    2.   配置文件格式

    方括号“[]”中表示组名,其下方是主机配置,一个主机可以属于多个不同的组。

    组内参数通过“[组名:vars]”格式表示。

    组的包含关系通过“[组名:children]”格式表示,其下方是成员组。

    3.   指定主机SSH端口

    如果主机SSH端口不是默认22端口,可以在主机后添加“:端口”指明端口号,例如:abcd.example.com:9922

    注:ansible使用Paramiko进行ssh连接时,不会使用你SSH配置文件中列出的端口,但是如果修改ansible使用openssh进行ssh连接时将会使用

    4.   指定主机别名

    如果打算给主机起别名给ansible使用,格式如下

    web1 ansible_ssh_port = 3333 ansible_ssh_host = 192.168.1.2

    注:实际上这是在使用主机变量

     

    5.   指定主机范围

    可以按照如下格式对主机名中部分字符进行范围匹配

    [webservers]
    www[01:50].yanruogu.com

    [databases]
    db-[a:f].yanruogu.com

    6.   Inventory自带变量说明

    ansible_ssh_host     #用于指定被管理的主机的真实IP
    ansible_ssh_port     #用于指定连接到被管理主机的ssh端口号,默认是22
    ansible_ssh_user     #ssh连接时默认使用的用户名
    ansible_ssh_pass     #ssh连接时的密码
    ansible_sudo_pass     #使用sudo连接用户时的密码
    ansible_sudo_exec     #如果sudo命令不在默认路径,需要指定sudo命令路径
    ansible_ssh_private_key_file     #秘钥文件路径,秘钥文件如果不想使用ssh-agent管理时可以使用此选项
    ansible_shell_type     #目标系统的shell的类型,默认sh
    ansible_connection     #SSH 连接的类型: local , ssh , paramiko,在 ansible 1.2 之前默认是 paramiko ,后来智能选择,优先使用基于 ControlPersist 的 ssh (支持的前提)
    ansible_python_interpreter     #用来指定python解释器的路径,默认为/usr/bin/python 同样可以指定ruby 、perl 的路径
    ansible_*_interpreter     #其他解释器路径,用法与ansible_python_interpreter类似,这里"*"可以是ruby或才perl等其他语言

    使用方法例如:

    [test]
    192.168.1.1 ansible_ssh_user=root ansible_ssh_pass='P@ssw0rd'
    192.168.1.2 ansible_ssh_user=breeze ansible_ssh_pass='123456'
    192.168.1.3 ansible_ssh_user=bernie ansible_ssh_port=3055 ansible_ssh_pass='456789'

    7.   主机变量的使用

    可以在主机后边追加变量k/v,如:

    [websvrs]
    192.168.1.1 https_port=8443 max_threads=8

    8.   组内变量的使用

    通过“[组名:vars]”的方式定义组内变量

    [test]
    host1
    host2
    [test:vars]
    ntp_server=192.168.1.10
    proxy=192.168.1.20

     

    9.   组内包含与组内变量

    [haidian]
    web1
    web2
    [yizhuang]
    web4
    web3
    [beijing:children]
    haidian
    yizhuang
    [beijing:vars]
    ntp_server=192.168.1.10
    zabbix_server=192.168.1.10
    [china:children]
    beijing
    shanghai

    上面的示例中,指定了海淀机房有web1、web2;亦庄机房有web3、web4主机;又指定了一个北京组代表北京地区数据中心,同时包含海淀和亦庄机房;为该组内的所有主机指定了2个vars变量。之后设定了一个组中国组,包含北京和上海两地数据中心。

    注:vars变量主要用在ansible-playbook中,不支持ad-hoc。

     

    10. 单独的变量文件或目录

    在 inventory 主文件中保存所有的变量并不是最佳的方式。还可以保存在独立的文件中,这些独立文件与 inventory 文件保持关联。

    配置文件名称要跟主机或组名完全相同。

    主机变量文件应放在:/etc/ansible/host_vars

    组内变量文件应放在:/etc/ansible/ group_vars

    例如创建文件“/etc/ansible/group_vars/raleigh”来保存raleigh组的组内变量

    vim /etc/ansible/group_vars/raleigh

    ---

    ntp_server: acme.example.org

    database_server: storage.example.org

    如果使用变量目录,变量的目录名要跟主机或组的名字完全相同,目录内部的配置文件名可以自行命名。

    注:分文件定义变量的方式只适用于 Ansible 1.4 及以上版本

    例如创建目录“/etc/ansible/group_vars/raleigh/”来保存raleigh组的组内变量,那么还需要再创建一个“/etc/ansible/group_vars/raleigh/db_settings”文件保存raleigh组的数据库配置相关变量

    vim /etc/ansible/group_vars/raleigh/db_settings

    ---

    ntp_server: acme.example.org

    database_server: storage.example.org

  • 相关阅读:
    ELK的学习与应用
    windows 常用命令
    Electron笔记
    C#基础
    IIS运行NetCore程序
    nuget打包
    web pack备忘
    基于并发订课系统的架构演变
    面试造核弹的童话
    Python3-接口自动化-11-使用join方法请求参数拼接,格式key1=value1&keys=value2....
  • 原文地址:https://www.cnblogs.com/xiaoleimagic/p/13444485.html
Copyright © 2020-2023  润新知