首页 > 其他分享 >Ansible变量

Ansible变量

时间:2022-11-20 14:36:43浏览次数:36  
标签:play 变量 作用域 主机 ansible Ansible facts

1 ansible变量的作用
主要用于保存Ansible运维操作中所需使用的信息
通过对变量值的更改或者变量值的读取,可以对Ansible运维操作进行灵活的管控
一方面能提升运维的自动化程度,另一方面也能实现更为复杂的运维功能

2 Ansible变量的类型

inventory变量(主机与主机组)
task任务变量
play变量
register注册变量
facts主机信息变量
命令行变量

3 Ansible变量的使用
在ad hoc命令行的模块参数中使用:{{变量名}}

在playbook中使用:在任务的模块参数中使用: {{变量名}}

inventory变量——在主机清单文件中定义

1)inventory主机变量
针对主机的变量,不同主机的变量值可以不同
2)inventory主机组变量
主机组中所有主机共享的变量

task变量——在任务中定义的变量
定义方式
在任务中使用vars键值对

vars:
 变量1: 值1
 变量2: 值2
 …
 变量N:值N

4 play变量——在某一play中定义的变量
定义方式
1)通过vars键值对定义变量

vars:
 变量1: 值1
 变量2: 值2
 …
 变量N:值N

2)通过外部文件定义变量,并将变量引入play中

vars_files:
  - 外部文件的路径列表

注:外部文件也是yml文件,并且其中只包含了变量的定义

变量存储数据的类型

整型(int)
浮点型(float)
布尔型(bool)
字符串
列表
字典

5 facts变量
facts信息:由ansible setup模块获得的远程主机的信息
facts变量:用于保存facts信息的变量,称为 facts变量
默认情况下,在play中的任务执行之前,ansible会自动收集远程主机的facts信息,并存放在相应facts变量中
facts变量由ansible自动创建,通常情况下无需手动定义facts变量

访问ansible_facts变量
方法1:通过点号引用
ansible_facts.键名
方法2:通过[ ]引用(推荐)
ansible_facts[ '键名' ]
eg1:

---
- hosts: group1
  tasks:
     - name: show memory
       debug:
           msg: "{{ansible_facts['memory_mb']['real']['total']}}"
#显示被管理主机的实际内存大小

eg2:

---
- hosts: group1
  tasks:
     - name: show uptime
       debug:
           msg: "{{ansible_facts['uptime_seconds']}}"
#显示主机的运行时间

6 register变量
register变量用于保存当前任务的执行结果,变量在任务中定义

---
- name: task任务的描述性信息
  模块名: 模块参数
  register: 变量名

eg:

---
- hosts: group1
  tasks:
     - name: show register variable value
       ping:
       register: result 
    - name: show result
      debug: 
          msg: "{{result}}"
#把ping执行结果保存在保存在result中,并通过debug显示

7 命令行变量
通过ansible-playbook命令定义与传递变量

ansible-playbook -e “变量1=值1 变量2=值2 …”
eg:

---
- name: play 1
  hosts: group1
  tasks:
     - name: show task variable
       debug:
           msg: "{{service}} is {{state}}"
 #playbook中定义service 和 state变量名 
ansible-playbook test.yml  -i myhosts -e "service=vsftpd state=stopped"
 #命令行传参直接把值赋给变量名

8 变量的作用域
全局作用域——在playbook的任何位置都能够访问该变量
命令行变量具有全局作用域

Host作用域——该变量能够被对应主机的所有相关任务访问(这些任务可以是属于不同play的)
Inventory主机变量/注册变量/facts变量

Play作用域——变量只能被其所在的play访问
Play变量具有Play作用域

task作用域——变量只能被其所在的task访问
task变量具有task作用域

9 变量的优先级
通常情况下,作用域越小的变量,优先级越高
当两个变量的变量名相同时,优先级低的变量会被优先级高的变量覆盖

10 变量引用的注意事项
采用键值对形式提供模块参数时,如果键值对冒号:后面紧跟着对变量的引用,则必须使用双引号或单引号将参数的值整个包含起来

标签:play,变量,作用域,主机,ansible,Ansible,facts
From: https://www.cnblogs.com/tjane/p/16908409.html

相关文章

  • ansible 自动化运维工具
    Ansible实战部署三台虚拟机Rsync01192.168.0.10 被管理的机器Nfs01           20被管理的机器(配置好ssh服务以及关闭防火墙等)M01        ......
  • 变量和数据类型
    Python零基礎新手入門#02變數與資料型態intfloatstring姓名=input("请输入你的姓名:")出生年=input("请输入你的出生年:")print(f"{姓名}你好,你出生于{出生......
  • AnsiblePlaybook变量默认值设置
    ----hosts:localremote_user:roottasks:-name:debugdebug:msg:"vis{{item}}"with_items:-"{{v|default(10)}}......
  • Ansible磁盘分区
    #main.yaml----hosts:localvars:disks:-disk:/dev/sdbnumber:1start:0%end:50%fstype:x......
  • JS语法语句、变量
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title></title></head><body><!--语法与语句,变量--><!--......
  • Ansible通知与处理机制
    一、Ansible通知与处理机制介绍notify键值对(通知)与handlers键值对(处理)当任务模块执行完毕后,任务的notifiy键值对将观察任务模块的执行是否对被管理主机进行了修改,并根据......
  • 72:局部变量和全局变量_效率测试
    ###局部变量和全局变量效率测试局部变量的查询和访问速度比全局变量快,优先考虑使用,尤其是在循环的时候。在特别强调效率的地方或者循环次数较多的地方,可以通过将全局变量......
  • 71:变量的作用域_全局变量_局部变量_栈帧内存分析讲解
    ###变量的作用域(全局变量和局部变量)变量起作用的范围称为变量的作用域,不同作用域内同名变量之间互不影响。变量分为:全局变量、局部变量。全局变量:1.在函数和类定义之......
  • 变量、常量、作用域
    变量、常量、作用域一、变量变量是可以变化的量!Java是一种强类型语言,每个变量都必须申明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和......
  • Ansible+LAMP+Zabbix
    Ansible+LAMP+ZabbixServer1:172.25.254.1Server2:172.25.254.2安装ansibleansible-2.7.8-1.el7.noarch.rpmlibtomcrypt-1.17-25.el7.x86_64.rpmlibtommath-0.42.0-5.el7.x86_......