`

Ansible主机与组的定义Inventory

 
阅读更多

Inventory

Ansible的Inventory文件,可以理解为saltstack中的salt-key中的所有minion的列表以及用户自定义的nodegroup的概念,默认情况下这个文件是/etc/ansible/hosts,到目前为止,以上仅仅是Inventory文件的小小一部分作用,其实他的作用远远不止这些:)

Hosts and Groups

对于/etc/ansible/hosts最简单的定义格式像下面:

mail . lightclooud . com

[ webservers ]

web1 . lightcloud . com

web2 . lightcloud . com

[ cloudservers ]

cloud1 . lightcloud . com

cloud2 . lightcloud . com

  • 想当然,标准的FQDN自然表示的是主机的主机名或者域名
  • 中括号中的名字代表组名,你可以根据你自己的需求将庞大的主机分成具有标识的组。

如果某些主机的SSH运行在自定义的端口上,ansible使用Paramiko进行ssh连接时,不会使用你SSH配置文件中列出的端口,但是如果修改ansible使用openssh进行ssh连接时将会使用:

badwolf . lightcloud . com : 5309

假如你想要为某些静态IP设置一些别名,类似于SaltStack中minion配置文件中id的参数配置。你可以这样做:

jumper ansible_ssh_port = 5555 ansible_ssh_host = 192.168.1.50

假如你有很多主机遵循某一种模式,你还可以这样来表示他们:

[ webservers ]

web [ 1 : 50 ] . lightcloud . com

  • 表示从web1到web50,共计50台主机

当然你还可以通过字母来定义可变的范围,例如:

[ database ]

db - [ a : f ] . lightcloud . com

对于每台主机的连接类型,连接用户等这些你都可以完全自定义,例如:

[ targets ]

localhost ansible_connection = local

cloud1 . lightcloud . com ansible_connection = ssh ansible_ssh_user = light

cloud2 . lightcloud . com ansible_connection = ssh ansible_ssh_user = cloud

而对于上面的定义方式,只能算是我们针对每台主机的一个快速定义,随后将会讲述如何在host_vars目录下,以单个文件存储它们。

Host Variables

如上面提到,我们目前可以轻易的给某台或多台主机赋予变量,提供给后面的playbooks使用:

[ lightcloud ]

web1 http_port = 202 maxRequestsPerChild = 404

web2 http_port = 303 maxRequestsPerChild = 606

Groups Variables

变量也可以通过组名,应用到组内的所有成员:

[ lightcloud ]

host1

host2

[ lightcloud : vars ]

ntp_server = ntp . lightcloud . com

proxy = proxy . lightcloud . com

Groups of Groups, and Group Variables

主机组可以包含主机组,主机的变量可以通过继承关系,继承到最高等级的组的变量。定义主机组之间的继承关系我们使用”:children”来表示:

[ atlanta ]

host1

host2

[ raleigh ]

host2

host3

[ southeas : children ]

atlanta

raleigh

[ southeas : vars ]

some_server = foo . southeast . example . com

halon_system_timeout = 30

self_destruct_countdown = 60

escape_pods = 2

[ usa : children ]

southeast

northeast

southwest

northwest

Splitting Out Host and Group Specific Data

Ansible并不建议将主机的变量都存储在Inventory文件中,这些变量也可以存储在单个文件中,而这些变量文件必须遵循YAML语法,假设Inventory文件没有被修改,路径如下:

/ etc / ansible / hosts

如果主机的名字“foosball”,两个组的名字分别是“raleigh”,“raleigh”,以下路径的yaml文件中的变量将会应用到对应的主机上:

/ etc / ansible / group_vars / raleigh

/ etc / ansible / group_vars / webservers

/ etc / ansible / host_vars / foosball

Tip:在Ansible 1.2或更高版本中,group vars和host vars目录可以存在于playbook目录或者Inventory目录,如果两个目录都存在同一主机的相同定义,那么playbook目录将会第二次被加载,也就是说playbook中定义的将会覆盖Inventory中对应的定义

List of Behavioral Inventory Parameters

Ansible内置了一些关于连接主机的变量,设置以下变量控制ansible与远程主机:

ansible_ssh_host

   ansible 通过 ssh 连接的 IP 或者 FQDN

ansible_ssh_port

   SSH 连接端口

ansible_ssh _ user

   默认 SSH 连接用户

ansible_ssh_pass

   SSH 连接的密码(这是不安全的, ansible 极力推荐使用 -- ask - pass 选项或使用SSH keys )

ansible_sudo_pass

   sudo 用户的密码

ansible_connection

   SSH 连接的类型: local , ssh , paramiko ,在 ansible 1.2 之前默认是 paramiko ,后来智能选择,优先使用基于 ControlPersist 的 ssh (支持的前提)

ansible_ssh_private_key_file

   SSH 连接的公钥文件

ansible_shell _ type

   指定主机所使用的 shell 解释器,默认是 sh ,你可以设置成 csh , fish 等 shell 解释器

ansible_python _ interpreter

   用来指定 python 解释器的路径

ansible \ _ \ * \ _interpreter

   用来指定主机上其他语法解释器的路径,例如 ruby , perl 等

例如:

some_host         ansible_ssh_port = 2222      ansible_ssh_user = manager

aws_host           ansible_ssh_private_key_file = / home / example / . ssh / aws . pem

freebsd_host       ansible_python_interpreter = / usr / local / bin / python

ruby_module_host   ansible_ruby_interpreter = / usr / bin / ruby . 1.9.3

分享到:
评论

相关推荐

    Python自动化运维之Ansible定义主机与组规则操作详解

    Ansible通过定义好的主机与组规则(Inventory)对匹配的目标主机进行远程操作,配置规则文件默认是/etc/ansible/hosts。 二 定义主机与组 所有定义的主机与组规则都在/etc/Ansible/hosts文件中,为ini文件格式,主机...

    ansible-yaml_inventory:Ansible动态库存,从YAML文件读取库存

    yaml_inventory Ansible动态清单脚本,从特殊格式的YAML文件读取清单。... 属于多个组的主机必须在多个位置定义。 在多个组之间共享相同的group_vars是一个具有挑战性的问题。 这个Ansible动态清单脚本正在尝试通

    Ansible使用介绍

    (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机; (3)、各种模块核心模块、command模块、自定义模块; (4)、借助于插件完成记录日志邮件等功能; (5)、playbook:剧本执行多个任务时,非...

    ansible-nutanix-inventory:与Nutanix API交互的Ansible动态清单脚本

    要指定nutanix.yml的其他路径,请定义NUTANIX_YML_PATH环境变量: export NUTANIX_YML_PATH=/path/to/nutanix.yml 该脚本要求所有VM名称和IP地址在群集之间都是唯一的,否则将失败。 这是为了防止具有相同名称或...

    ansible-meta-dynamic-inventory:命名很难。 该包装脚本允许您将集合符号与动态主机组一起使用

    这是一个简单的静态清单示例: [web]10.0.1.210.0.1.3[db]10.2.0.210.2.0.3[aws_us_east][aws_us_east:children]webdb该静态清单文件描述了两个组( web , db ),每个组都有两个主机,第三组( aws_us_east )是...

    aws-inventory:用于 AWS EC2 的 Ansible Inventory 插件

    对于每个主机,使用公共 ip 设置ansible_ssh_host变量。 这消除了通过 IP 引用主机或维护/etc/hosts文件的需要。 然后,您可以在同一目录中创建另一个清单文件,并通过其 EC2 标签Name引用主机。 在_meta顶级元素...

    openshift-ansible:安装和配置OpenShift 3.x集群

    创建一个库存创建一个清单文件,其中定义了适当的组和变量。 可以在找到。 必需的变量包括: openshift_kubeconfig_path集群openshift_kubeconfig_path路径运行RHEL节点放大手册cd openshift-ansibleansible-...

    ansible-inventory-inverted:自下而上的Ansible库存

    Ansible倒置存货 ... 我们使用Ansible的静态清单来指定主机和组。 我们倾向于使用很多组,这意味着我们最终在多个父组中指定了一个主机组。 例如,如果我们有一个sydney-webservers组,则可能会得到以下

    drone-ansible:适用于Ansible部署的无人机插件

    ssh-key定义用于连接主机的ssh-key 以下是.drone.yml文件中的示例配置: pipeline : deploy-staging : image : rics3n/drone-ansible:2 inventory : staging secrets : [ ssh_key ] when : branch : master...

    linux 自动化运维工具ansible的使用详细教程

    一、ansible简介 1.ansible ansible是新出现的自动化运维工具,基于Python研发。...(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机; (3)、各种模块核心模块、command模块、自

    Centos下安装Ansible的示例代码

    ansible ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、... host inventory:指定操作的主机,是一个配置文件里面定义监控的主机; 各种模块核心模块、command模块、自定义模块;

    ansible作为python模块库使用的方法实例

    前言 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、... (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;  (3)、各种模块核心模

    ansible-print-farm

    配置inventory.yml 来定义你的主机 - 主机 - 所有由这个剧本管理的主机 - 孩子 - 用于角色分配的子组,即测试/生产 将 SSH 密钥复制到远程主机,以便 ansbile 访问sh-copy-id pi@ 仅在测试主机组上运行部署ansible...

    opstools-ansible:这已过时,未经测试且在任何情况下均不受支持

    创建一个Ansible库存文件inventory/hosts ,以定义您的主机并将其映射到在inventory/structure声明的主机组。 例如: server1 ansible_host=192.0.2.7 ansible_user=centos ansible_become=true

    Ansible-repretory

    host_vars/ -每个主机定义的变量 play_vars/ -剧本中每次播放定义的变量 inventory_file文件-具有与环境相关的主机的库存文件 molecule/ -分子v2配置 resources/ -在分子场景资源之间共享 scenario_name/ -根据平台...

    ansible-vapoursynth:该脚本使您可以轻松地在Linux上安装vapoursynth

    使用变量user定义ansible通过其登录的用户。 使用变量ssh_port定义可以访问服务器的ssh端口。 例子: # inventory/host_vars/domain.tld/vars.yml user= ansible # default is root ssh_port= 4489 # default is...

    itop-utilities:itop(一个开源cmdb)的实用程序脚本。 通过将CMDB连接到其他系统(例如Ansible)来赋能CMDB

    您必须使用OQL select语句定义一组主机。 安装 前提条件是,在相同或不同的服务器中,您还需要一个iTop实例和一个Ansible实例。 只需将脚本复制到/ etc / ansible中的ansible机器中,然后使其可执行即可。 cd /...

    simple-deploy

    首先,我们需要定义一个清单文件,其中包含我们希望Ansible连接的实例的所有IP地址,为此,我在该项目的ansible目录中创建了一个Shell脚本。 要创建清单文件,请在终端中运行以下命令: $ ansible/create_...

    portable:命令和软件,全部开放或免费

    inventory文件夹用于定义主机,例如: ubuntu ansible_host=localhost 然后可以将ubuntu.yml剧本运行到localhost,而无需更改ubuntu.yml的主机。 巧克力色(Windows) 某些脚本需要choco (Windows的软件包管理器...

    bun-setup:设置本地Ubuntu开发环境

    默认情况下,它将针对inventory/hosts定义的所有主机运行。 本地设置 在本地计算机上运行剧本需要本地连接。 例如,要在本地计算机上运行linux_setup.yml ,您的inventory/hosts应包含以下内容,其中mycomputer是...

Global site tag (gtag.js) - Google Analytics