当前位置: 首页 > news >正文

Ansbile-变量

文章目录

  • 一、Ansible的常量(内置的变量)有哪些
  • ???????????????????????????
  • 二、Ansible的变量的使用
    • 在主机清单文件中定义变量(不推荐)
    • 在bash中之间定义变量(不推荐)
    • 在剧本中定义变量(不推荐)
      • `vars`方式
      • `vars_files`方式
    • bash中定义变量、`vars`和`vars_files`同时定义相同变量谁的优先级高?
    • 在/etc/ansible/host_vars目录和/etc/ansible/group_vars目录中定义变量(!!推荐!!)
      • 简述:
        • 为什么推荐使用这两种方式
        • 内容:
      • 在/etc/ansible/host_vars目录中定义变量
      • 在/etc/ansbile/group_vars目录中定义变量
      • 两种方式定义相同变量时,谁的优先级高
    • 以上所有的定义变量的方式谁的优先级高?
  • Ansible变量注册`register`
    • 什么是`register`为什么使用`register`
    • 如何使用`register`

一、Ansible的常量(内置的变量)有哪些

???????????????????????????

二、Ansible的变量的使用

在Ansible中,变量可以分为多个类别,主要包括:

  1. 主机变量(Host Variables):特定于主机的变量,可以在 inventory 文件中定义。

  2. 组变量(Group Variables):针对主机组定义的变量,通常在 group_vars 目录中。

  3. Playbook 变量:在 playbook 中定义的变量,可以在 vars 部分声明。

  4. Facts:通过 Ansible 收集的关于主机的信息,使用 setup 模块自动收集。

  5. 临时变量:在任务中定义的临时变量,使用 set_fact 模块。

  6. 环境变量:可以通过 env 变量获取。

  7. 注册变量:通过任务的结果注册的变量,可以使用 register 关键字。

  8. Jinja2 变量:使用 Jinja2 模板语法定义和处理的变量。

  9. Playbook 参数:通过命令行传递给 playbook 的变量,使用 --extra-vars

  10. 默认变量:角色中的 defaults/main.yml 文件中定义的变量。

这些变量可以在任务、模板和其他地方使用,提供灵活的配置选项。

在主机清单文件中定义变量(不推荐)

[rsync:children]
web_servers
nfs_servers
backup_servers[web_servers]
...
[web_servers:vars]
id=777
user=ooo[nfs_servsers]
...
[backup_servers]
...

调用测试:

  • 错误调用:
---
- name: the play to test the inventory variableshosts: web_serversbecome: notasks:- name: task1debug:# 下面的msg的内容是错误书写:msg: "web_servers conent: id:{{web_servers.id}}, user:{{web_servsers.user}}"

会报错:
在这里插入图片描述

  • 正确调用:
---
- name: the play to test the inventory variableshosts: web_serversbecome: notasks:- name: task1debug:# 下面的msg的内容是正确书写:msg: "vars defined in web_servers have: id:{{id}}, user:{{user}}"

在这里插入图片描述

在bash中之间定义变量(不推荐)

ansible-playbook -e 'user=kk' -e 'id=888'

在剧本中定义变量(不推荐)

vars方式

---
- name: the play1hosts: xxxbecome: novars:packages1:- redis- tomcattasks:- name: task1yum:name: {{packages1}}# name: "{{packages}}"不加引号可以吗??????????state: present

vars_files方式

# 创建含有变量的文件
vim ansbile_vars.txt
# vim中写入以下内容:
vars:packages1:- redis- tomcat

调用测试:

---

bash中定义变量、varsvars_files同时定义相同变量谁的优先级高?

bash方式 > vars _files > vars
测试:

---
- name: the play1hosts: web_serversbecome: no# 定义一个user变量tasks:

在/etc/ansible/host_vars目录和/etc/ansible/group_vars目录中定义变量(!!推荐!!)

简述:

为什么推荐使用这两种方式
内容:
  • host_vars目录:
    定义单个主机的变量

  • group_vars目录:
    定义主机组的变量

在/etc/ansible/host_vars目录中定义变量

# 单独为web01主机定义变量,文件名必须和DNS解析的主机名(这里是web01)相同
vim /etc/ansbile/host_vars/web01# 进入vim写入:
user:web01_user
id:4443# 单独为web02主机定义变量,文件名必须和DNS解析的主机名(这里是web02)相同
vim /etc/ansible/host_vars/web02# 进入vim写入:
user:web02_user
id:4444

测试调用:

---
- name: the play1hosts: web_serversbecome: notasks:- name: the task1user:name: "{{user}}"uid: "{{id}}"state: present# 尽管变量名相同,但效果是会为web01和web02各自创建不同的user

在/etc/ansbile/group_vars目录中定义变量

# 为主机组创建统一的变量,文件名必须与定义的主机组名相同
vim /etc/ansible/group_vars/web_servers# vim写入:
user:group_uni_user
id: 4449

两种方式定义相同变量时,谁的优先级高

host_vars > group_vars
测试:

以上所有的定义变量的方式谁的优先级高?

1、命令行方式
2、host_vars方式
3、group_vars方式
4、playbook中vars_files方式
5、playbook中vars方式
6、主机清单方式

Ansible变量注册register

什么是register为什么使用register

如何使用register

---
- name: the play1hosts: xxxbecome: notasks:- name: task1shell: 'date'- name: task2debug:msg: "{{date.stdout}}"

在这里插入图片描述


http://www.mrgr.cn/news/31389.html

相关文章:

  • 【云网络】软件定义网络SDN的概念与应用(以PVE8用户隔离,TLS证书介绍,自签证书等为例)
  • 服务器非法关闭后MySQL服务启动失败
  • 解决RabbitMQ设置TTL过期后不进入死信队列
  • 【数据结构】什么是二叉搜索(排序)树?
  • 二层、三层网络基本原理
  • 6.C++程序中的基本数据类型
  • A. Closest Point
  • 基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
  • OpenAI GPT o1技术报告阅读(3)-英文阅读及理解
  • ubuntu 20.04 ‘Wired Unmanaged‘ 网络无法配置解决方法
  • 八股文-多线程、并发
  • 小新-13 2019 Intel款IML版【81UQ】原装出厂Win10系统镜像下载
  • 缓存装饰器@cached_property
  • vulnhub(11):derpnstink(hydra爆破用户名和密码、验证的文件上传)
  • 变量的作用域和生命周期
  • React基础教程(10):React Hooks
  • 建筑工程五方责任主体项目负责人质量终身责任追究暂行办法
  • 哈希表的使用
  • Spring Boot中使用注解拦截器实现通用校验器和基于角色的权限注解
  • java之杨辉三角问题