首页 > 其他分享 >ansible内置主机变量与魔法变量

ansible内置主机变量与魔法变量

时间:2023-02-18 18:31:30浏览次数:34  
标签:hostname 变量 主机 魔法 ansible ssh inventory

一、内置主机变量

所谓内置变量其实就是ansible.cfg配置文件中的选项,在其前加上ansible_即成为内置变量。当然内置变量拥有比ansible.cfg中选项更高的优先
级,而且针对不同的主机,可以定义不同的值。 之所以叫内置主机变量,其实就是这些变量一般写在inventory的主机或主机组中。

# 一般连接
ansible_host #用于指定被管理的主机的真实IP
ansible_port #用于指定连接到被管理主机的ssh端口号,默认是22
ansible_user #ssh连接时默认使用的用户名
# 特定ssh连接
ansible_connection #SSH连接的类型:local, ssh, paramiko,在ansible 1.2 之前默认是
paramiko,后来智能选择,优先使用基于ControlPersist的ssh(如果支持的话)
ansible_ssh_pass #ssh连接时的密码
ansible_ssh_private_key_file #秘钥文件路径,如果不想使用ssh‐agent管理秘钥文件时可以使用此选项
ansible_ssh_executable #如果ssh指令不在默认路径当中,可以使用该变量来定义其路径
# 特权升级
ansible_become #相当于ansible_sudo或者ansible_su,允许强制特权升级
ansible_become_user #通过特权升级到的用户,相当于ansible_sudo_user或者ansible_su_user
ansible_become_pass # 提升特权时,如果需要密码的话,可以通过该变量指定,相当于
ansible_sudo_pass或者ansible_su_pass
ansible_sudo_exec #如果sudo命令不在默认路径,需要指定sudo命令路径
# 远程主机环境参数
ansible_shell_executable # 设置目标机上使用的shell,默认为/bin/sh
ansible_python_interpreter #用来指定python解释器的路径,默认为/usr/bin/python 同样可以指
定ruby 、perl 的路径
ansible_*_interpreter #其他解释器路径,用法与ansible_python_interpreter类似,这里"*"可以
是ruby或才perl等其他语

二、魔法变量

1、hostvars

         获取inventory中定义的所有主机的相关变量。

2、inventory_hostname

inventory_hostname是Ansible所识别的当前正在运行task的主机的主机名。
如果在inventory里定义过别名,那么这里就是那个别名,如果inventory包含如下一行:
server1 ansible_ssh_host=192.168.194.129
则 inventory_hostname 即为 server1 。

ansible all -m shell -a "echo {{ inventory_hostname }}" -i hosts
ansible init_server -m debug -a "msg='{{ inventory_hostname}}'"

与inventory_hostname相近的还有一个inventory_hostname_short,
如果一台主机的 inventory_hostname为server1.exmaple.com,则inventory_hostname_short的值为server1;
如果主机的inventory_hostname为192.168.194.129,则inventory_hostname_short为192

3、group_names

group_names返回的是主机所属主机组,如果该主机在多个组中,则返回多个组,如果它不在组 中,则返回ungrouped这个特殊组

ansible all -m debug -a "msg='{{ group_names }}'"

4、groups

groups是inventory中所有主机组的列表,可用于枚举主机组中的所有主机。

ansible all -m debug -a "msg='{{ groups }}'"
ansible testB -m debug -a "msg={{groups.testA}}"
ansible testB -m debug -a "msg={{groups.ungrouped}}"

5、play_hosts

当前playbook会在哪些hosts上运行。

6、inventory_dir

机清单所在目录。
ansible all -m debug -a "msg='{{ inventory_dir }}'"

7.、inventory_file

主机清单文件。
ansible all -m debug -a "msg='{{ inventory_file }}'"

标签:hostname,变量,主机,魔法,ansible,ssh,inventory
From: https://blog.51cto.com/u_13236892/6065493

相关文章

  • 修改linux下jdk环境变量
    1、查看jdk版本:2、查看jdk安装路径:echo$JAVA_HOME    3、用vim/etc/profile进入编辑状态,以下配置需要修改:(配置的jdk的路径一定得对) 修改:JAVA_HOME=/usr......
  • jdk系统环境变量的配置
    安装需要版本的JDK,然后进行如下配置:(1)新建->变量名”JAVA_HOME”,变量值”C:\Java\jdk1.x.x_xx”(即JDK的安装路径) (2)编辑->变量名”Path”,在原变量值的最后面加上“;%JA......
  • C语言错误1 全局变量声明
    #include<stdio.h>//从整体上看,C语言代码是由一个一个的函数构成的,除了定义和说明类的语句(例如变量定义、宏定义、类型定义等)可以放在函数外面,//所有具有运算或逻辑处......
  • python魔法方法
    python魔法方法1.基本的魔法方法(1)__init__方法用于对实例进行初始化,在实例创建是会自动执行。classHello():def__init__(self):print("HelloWorld!")......
  • STATA CFPS变量列表导出到EXCEL整理
    SubCheckTableCells()Application.DisplayAlerts=FalseDimshtAsWorksheetDimi,jAsIntegerFori=1To284If(Range("e"&i).Value="")ThenI......
  • stata变量名特别多,des显示不完整,只能看到最后一部分
    stata变量名特别多,des显示不完整,只能看到最后一部分解决方法:第一步: sscinstalldes2 logusingexam22a,replacetext des2(显示结果复制,自动成表格,EXCEL粘贴形成表格) log......
  • 处理坑爹的 GOPATH (系统变量和Goland)
    学习go的过程中发现写好的代码放到自己电脑上发现跑不起来,说是导包失败,晚上睡觉看书的时候突然想到GOPATH,这是go语言特有的环境变量,是不是这个东西搞的鬼。设置gopath也是......
  • C语言填空:全局 局部变量应用
    【1】//全局变量与局部变量的使用【2】d=1;【3】fun(int【4】){intd=5;d+=p++;printf("%d",d);}main(){inta=3;【5】;//以a为参......
  • python中condition条件变量的作用
    1、Python提供的Condition对象支持复杂的线程同步。2、Condition被称为条件变量,除了提供类似Lock的acquire和release方法外,还提供wait和notify方法。线程先acquire条件变量,......
  • jmeter学习:常用属性变量类
    1、__setProperty功能介绍:设置Jmeter属性,可跨线程使用${__setProperty(参数1,参数2,参数3)}参数1:属性名称参数2:属性值参数3:是否返回属性......