Ansbile-变量

news2024/9/21 4:02:45

文章目录

  • 一、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 variables
  hosts: web_servers
  become: no
  tasks:
   - name: task1
     debug:
     # 下面的msg的内容是错误书写:
       msg: "web_servers conent: id:{{web_servers.id}}, user:{{web_servsers.user}}"
  

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

  • 正确调用:
---
- name: the play to test the inventory variables
  hosts: web_servers
  become: no
  tasks:
   - name: task1
     debug:
     # 下面的msg的内容是正确书写:
       msg: "vars defined in web_servers have: id:{{id}}, user:{{user}}"

在这里插入图片描述

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

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

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

vars方式

---
- name: the play1
  hosts: xxx
  become: no
  vars:
    packages1:
      - redis
      - tomcat
  tasks:
    - name: task1
      yum:
        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 play1
  hosts: web_servers
  become: 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 play1
  hosts: web_servers
  become: no
  tasks:
    - name: the task1
      user:
        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 play1
  hosts: xxx
  become: no
  tasks:
    - name: task1
      shell: 'date'
    - name: task2
      debug:
        msg: "{{date.stdout}}"

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2151060.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

八、explicit关键字在C++中的用法

使用方法:修饰单参构造函数 作用:explicit修饰构造函数,禁止类型转换 使用Date d2 19; 这样的方式来进行d2对象的实例化。 在程序上是可以进行下去的,但不符合语法、也不合逻辑。 class Date { public:Date(int day)…

sqlite数据库设计工具

下载 开发环境 VS2022 + Qt5.14.2 CMake修改 add_subdirectory(sqlite3-cmake) include_directories(${CMAKE_SOURCE_DIR}/sqlite3-cmake/src) target_link_libraries(${PROJECT_NAME} sqlite3) 效果 参考 https://github.com/sqlitebrowser/sqlitebrowser

Java之封装

文章目录 1.封装1.1 什么是封装1.2 访问限定符1.3 包1.3.1 什么是包1.3.2 导包1.3.3 自定义包 2. static2.1 static 修饰成员变量2.2 static 修饰成员方法2.3 static成员变量初始化 3. 代码快3.1 普通代码块3.2 实例代码块3.3 静态代码块 4. 对象的打印 1.封装 1.1 什么是封装…

【JPCS出版】第四届电气工程与计算机技术国际学术会议(ICEECT 2024,9月27-29)

会议信息 会议官网:www.iceect.com 2024 4th International Conference on Electrical Engineering and Computer Technologywww.iceect.com 时间地点:2024年9月27日-29日 | 线上(ZOOM) 最终截稿时间:9月23日 主办…

【GVINS】

【GVINS】 1. GVINS的系统特点2. GVINS的融合导航存在问题3. GVINS的信号的组成4. GVINS的信号的组成 原理推导知乎 1. GVINS的系统特点 概述了一种名为GVINS的系统,它旨在解决视觉-惯性里程计(VIO)在长时间运行时出现的漂移问题。GVINS通过…

neo4j导入csv数据

neo4j数据可视化实践 手动输入数据 - 官方democsv数据导入准备数据数据处理导入步骤① 导入疾病表格② 导入药物表格③导入疾病-药物关系表格 爬虫的csv文件 手动输入数据 - 官方demo 点击之后,按照左边10张图中的代码,复制粘贴熟悉语法 效果如下 csv数据…

(undone) 学习语音学中关于 i-vector 和 x-vector

来源:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber8461375 (这是一篇跟 X-vector 有关的论文) 这里有更适合初学者的两个资料: 1.https://www.youtube.com/watch?vR3rzN6JYm38 (MIT教授的youtube视频) 2.https://people.c…

JavaScript高级——组合继承

1、借用构造函数继承(假的) (1)套路: ① 定义父类型构造函数 ② 定义子类型构造函数 ③ 在子类型构造函数中调用父类型构造 (2)关键:在子类型构造函数中通用 call(&…

VS2019配置C++版本的GDAL

VS2019配置GDAL教程 【特别注意】 vs2019编译好的GDAL库是可以在VS2022上面使用的,我这边做项目已经测试过没有问题,所以vs2022使用vs2019编译的gdal没有问题。 【编译版本介绍】 由于GDAL在vs2019源码流程有点复杂,因此我们在这不做讲解…

CSP-J2024年全真模拟题 阅读程序篇2

因为明天考试,这回给大家准备了超详细的解析~ 22.程序中 n 和 m 只有输入正整数,程序的输出值才可能是 YES A.对B.错 23.程序中用到了递归函数 bool fun(int n) A.对B.错 24.若输入 n 和 m 都是素数,程序的输出值…

vue MVC设计模式与MVVM设计模式

使用Vue框架开发前端项目,最大的优势就是再也不用进行复杂的DOM操作了,我们只要关心数据的变化即可,Vue框架会帮我们把复杂的DOM进行渲染,这背后都要归功于他的设计思想,即MVVM设计模式。 了解MVVM设计模式之前,有必要先了解一下MVC设计模式,MVVM模式是在MVC模式基础上…

【博弈论 斐波那契博弈】 HRPA

HRPA 这道题就是一个斐波那契博弈的经典模型: 有一堆个数为n的石子,第一个人第一次不能全部取完,每次一个人取石子的个数都应当大于0,且小于等于上一个人取的石子个数的两倍。 问是否有先手必胜策略。 如果有,第一个人…

分享一个通用OCR模型GOT-OCR2.0

通用OCR模型GOT-OCR2.0 在信息化快速发展的今天,光学字符识别(OCR)技术的应用越来越广泛。从文档数字化到自动化数据录入,OCR技术都发挥着重要作用。今天,我将为大家介绍一个开源的通用OCR模型——GOT-OCR2.0。 软件…

手把手教你-MAC虚拟环境搭建TensorFlow开发环境

参考如下代码布置,直接运行,即可: 1) 安装virtualenv $ sudo pip install virtualenv 2)创建虚拟环境文件夹 $ virtualenv --system-site-packages -p python2.7 ./EnvPy27 3) 激活环境 $ source EnvPy27/bin/activate 4) 更新pip $ pi…

【动态规划】最大正方形

最大正方形(难度:中等) 该题对应力扣网址 思路 min_valuemin({dp[i-1][j-1],dp[i-1][j],dp[i][j-1]}) dp[i][j]min_value 关键点是正方形的右下角(n>1时),通过画图,可以看出,在基础正方形22中&#x…

安卓13长按电源按键直接关机 andriod13不显示关机对话框直接关机

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 有些设备需要在长按电源键的时候,直接关机。不需要弹出对话框进行询问。 2.问题分析 过滤电源按键,需要在系统里面处理的话,那么我们需要熟悉android的事件分发,然后再…

Unsupervised Deep Representation Learning for Real-Time Tracking

摘要 我们的无监督学习的动机是稳健的跟踪器应该在双向跟踪中有效。具体来说,跟踪器能够在连续帧中前向定位目标对象,并回溯到其在第一帧中的初始位置。基于这样的动机,在训练过程中,我们测量前向和后向轨迹之间的一致性&#xf…

【专题】2024年9月直播、短视频行业报告合集汇总PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37744 在信息时代的浪潮下,直播短视频行业以其独特的魅力和强大的影响力,迅速成为了大众娱乐、信息传播以及商业营销的重要领域。从微短剧的异军突起,到 TikTok 在海外市场的蓬勃发展;…

音视频入门基础:AAC专题(3)——AAC的ADTS格式简介

音视频入门基础:AAC专题系列文章: 音视频入门基础:AAC专题(1)——AAC官方文档下载 音视频入门基础:AAC专题(2)——使用FFmpeg命令生成AAC裸流文件 音视频入门基础:AAC…

OpenSSH从7.4升级到9.8的过程 亲测--图文详解

一、下载软件 下载openssh 下载地址: Downloads | Library 下载openssl Index of /pub/OpenBSD/OpenSSH/ zlib Home Site 安装的 openssl-3.3.1.tar.gz ,安装3.3.2有问题 安装有问题, 二、安装依赖 yum install -y perl-CPAN perl-ExtUtils-CB…