Ansible中的变量定义以及变量的优先级详解

文章目录

  • 前言
  • 一、变量的优先级以及命名
    • 1. 变量命名
    • 2. 变量分类
    • 3. 变量的优先级
  • 二、变量设定和使用方式
    • 1.在playbook中直接定义变量
    • 2.文件中定义变量
    • 3.清单定义变量
    • 4.目录设定变量
    • 5. 命令设定变量
    • 6.数组变量使用和设定
    • 7.注册变量
    • 8.事实变量
    • 9.魔法变量使用方式
  • 总结


前言

一、变量的优先级以及命名

1. 变量命名

只能包含数字,下划线,字母
只能用下划线或字母开头

2. 变量分类

全局:
从命令行或配置文件中设定的
paly:
在play和相关结构中设定的
主机:
由清单,事实收集或注册的任务

3. 变量的优先级

变量优先级设定: 狭窄范围有限与广域范围
extra vars (-e 选项指定的变量)最高
inventory 主机清单中定义的变量(ansible_ssh_user等)
play剧本中vars、vars_files定义的变量
系统的facts变量
角色定义的默认变量 最低

二、变量设定和使用方式

1.在playbook中直接定义变量

  1 ---
  2 - name: for 91-93 httpd.server install and start
  3   hosts: server
  4   tags: httpd server start and firealld add + port 8080/tcp
  5   vars:
  6     NAME: westos
  7   tasks:
  8     - debug:
  9         msg: '{{NAME}}'

Ansible中的变量定义以及变量的优先级详解_第1张图片

2.文件中定义变量

  1 ---
  2 - name: demo
  3   hosts: server
  4   vars_files: /root/.ansible/group_vars/server.yml
  5   tasks:
  6     - debug:
  7         msg: '{{NAME}}'

Ansible中的变量定义以及变量的优先级详解_第2张图片
变量文件内容

1 ---
2 vars: westoslinux

3.清单定义变量

清单内容

[westos:vars]
NAME:westoslinux
  1 ---
  2 - name: demo
  3   hosts: westos
  4   tasks:
  5     - debug:
  6         msg: '{{NAME}}'

Ansible中的变量定义以及变量的优先级详解_第3张图片

4.目录设定变量

mkdir groups_vars
vim groups_vars/server
  1 ---
  2 NAME: westoslinux
  1 ---
  2 - name: demo
  3   hosts: server
  4   vars_files:
  5     - ./group_vars/server.yml
  6   tasks:
  7     - debug:
  8         msg: '{{NAME}}'

5. 命令设定变量

将原有Playbook中的变量覆盖掉,使其自行使用新的变量

ansible-playbook 2.yml -e 'NAME=hellow'

Ansible中的变量定义以及变量的优先级详解_第4张图片

6.数组变量使用和设定

  1 ---
  2 - name: demo
  3   hosts: server
  4   vars_files:
  5     ./1.yml
  6   tasks:
  7     - debug:
  8         msg: "{{USER['westos']['gid']}}"

变量文件

  1 ---
  2 USER:
  3   linux:
  4     uid: westos
  5     gid: 1000
  6   westos:
  7     uid: 0
  8     gid: root

Ansible中的变量定义以及变量的优先级详解_第5张图片Ansible中的变量定义以及变量的优先级详解_第6张图片Ansible中的变量定义以及变量的优先级详解_第7张图片

7.注册变量

  1 ---
  2 - name: demo
  3   hosts: server
  4   tasks:
  5     - shell:
  6         cmd: date
  7       register: westos
  8     - debug:
  9         var: westos['stdout_lines']

Ansible中的变量定义以及变量的优先级详解_第8张图片

8.事实变量

  1 ---
  2 - name: demo
  3   hosts: server
  4   gather_facts: no						#开启不会进行采集信息的步骤
  5   tasks:
  6     - debug:
  7         var: ansible_memtotal_mb

facts组件是Ansible用于采集被管理机器设备信息的一个功能,采集的机器设备信息主要包含IP地址,操作系统,以太网设备,mac 地址,时间/日期相关数据,硬件信息等。
Ansible中的变量定义以及变量的优先级详解_第9张图片Ansible中的变量定义以及变量的优先级详解_第10张图片Ansible中的变量定义以及变量的优先级详解_第11张图片

9.魔法变量使用方式

也叫做ansible的内置变量

ansible server -m debug -a "msg='{{inventory_dir}}'"					#清单目录位置
ansible server -m debug -a "msg='{{inventory_file}}'"					#清单位置
ansible server -m debug -a "msg='{{inventory_hostname}}'"				#获取主机的名称
ansible server -m debug -a "msg='{{inventory_hostname_short}}'"			#获取主机的简短名称
ansible server -m debug -a "msg='{{playbook_dir}}'"						#playbook存储目录
ansible server -m debug -a "msg='{{hostvars}}'"							#主机的信息
ansible server -m debug -a "msg='{{groups}}'"							#列出清单中所有的组和主机
ansible server -m debug -a "msg='{{group_names}}'"						#当前受管主机所在组

总结

你可能感兴趣的:(anible,linux,vim,运维)