Ansible - [07] 定义变量的几种方式
题记部分
Ansible 支持十几种定义变量的方式
- Inventory 变量
- Host Facts 变量
- Register 变量
- Playbook 变量
- Playbook 提示变量
- 变量文件
- 命令行变量
一、Inventory 变量
1、定义变量(在主机清单配置文件中进行定义)
[root@control ansible]# cat ~/ansible/hosts
[test]
node1 myvar1="hello world" myvar2="content"
[proxy]
node2
[webserver]
node[3:4]
[webserver:vars]
yourname="jacob"
2、使用变量(以下是以playbook的场景演示变量的使用)
[root@control ansible]# cat ~/ansible/inventory_var.yml
---
- hosts: test
tasks:
- name: create a file with var.
shell: echo {{ myvar1 }} >/tmp/{{myvar2}}
- hosts: webserver
tasks:
- name: create a user with var.
user:
name: "{{ yourname }}"
第11行以双花括号开始的时候,需要用双引号引起来,第6行如果不是以双花括号开头则不需要加引号。
二、Host Facts 变量
Host Facts 变量(可以直接调用ansible收集的系统信息)
[root@control ansible]# cat ~/ansible/facts_var.yml
---
- hosts: test
tasks:
- name: Use facts info.
copy:
content: "{{ansible_hostname}}:{{ansible_bios_version}}"
dest: /tmp/facts.txt
上述playbook可以将目标主机名及其bios版本号输出到目标主机/tmp/facts.txt文件中
三、Register 变量
register语句可以将某个命令的执行结果保存到变量中
[root@control ansible]# cat ~/ansible/register.yml
---
- hosts: agent
tasks:
- name: save shell result to a variable.
shell: hostname
register: myvar
- name: print the variable's value through debug
debug:
msg: "{{ myvar.stdout }}"
如果(使用debug模块)在msg直接获得myvar,则会将所有输出信息到保存在myvar中,可以通过myvar.stdout获取提取部分数据(如:输出结果 stdout)
四、Playbook 变量
使用 vars 关键词可以在playbook内定义变量(注意密码必须是字符串,需要加引号)
[root@control ansible]# cat ~/ansible/playbook_var.yml
---
- hosts: agent
vars:
iname: heal
ipass: '123456'
tasks:
- name: Use variables create user.
user:
name: "{{ iname }}"
password: "{{ ipass | password_hash('sha512') }}"
五、Playbook 提示变量
根据提示输入变量的值
[root@control ansible]# cat ~/ansible/prompt_var.yml
---
- hosts: agent
vars_prompt:
- name: iname
prompt: "请输入用户名:"
private: no
- name: ipasswd
prompt: "请输入密码:"
private: yes
tasks:
- name: create a user.
user:
name: "{{ iname }}"
password: "{{ ipasswd | password_hash('sha512') }}"
[root@control ansible]# ansible-playbook prompt_var.yml
请输入用户名: xyz
请输入密码:
六、变量文件(vars_files)
单独定义一个变量文件,在playbook中用vars_files调用该文件
[root@control ansible]# cat ~/ansible/varibales.yml
---
iname: cloud
ipass: '123456'
[root@control ansible]# cat ~/ansible/file_var.yml
---
- hosts: test
vars_files: variables.yml
tasks:
- name: create user.
user:
name: "{{ iname }}"
password: "{{ ipass | password_hash('sha512') }}"
七、命令行定义变量
执行ansible-playbook命令时使用-e参数定义变量
[root@control ansible]# cat ~/ansible/command_var.yml
---
- hosts: agent
tasks:
- name: create user
user:
name: "{{ iname }}"
password: "{{ ipass | password_hash('sha512') }}"
[root@control ansible]# ansible-playbook command_var.yml -e iname=jack -e ipass=123456
— 要养成终身学习的习惯 —
Ansible - [07] 定义变量的几种方式的更多相关文章
- JN_0003:JS定义变量的3种方式
js中三种定义变量的方式const, var, let的区别. 1,const定义的变量不可以修改,而且必须初始化. 2,var定义的变量可以修改,如果不初始化会输出undefined,不会报错. 3 ...
- js中定义变量的三种方式const,val,let 的区别
js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 const b = 2;//正确 2 // const b;//错误,必须初始 ...
- PHP定义字符串的四种方式
1.简介 在PHP中这门语言中,因为是弱类型语言,因此使用变量时不需提前定义即可使用. 我们在使用php进行开发的时候,大多数使用双引号.单引号进行定义字符串.既然有这两种方式,那么他们之间肯定是有区 ...
- js声明变量的三种方式及作用域
js声明变量的三种方式及作用域 CreateTime--2017年9月11日17:19:11 Author:Marydon 一.参考链接 本篇文章的创作灵感来源于博主-奔跑的铃铛关于js中cons ...
- js声明变量的三种方式
JS 声明变量的三种方式 (1)使用变量步骤:a.声明-->b.赋值-->3.调用 正确用法: <script type="text/javascript"> ...
- JavaScript学习12 JS中定义对象的几种方式
JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...
- JavaScript学习12 JS中定义对象的几种方式【转】
avaScript学习12 JS中定义对象的几种方式 转自: http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. ...
- (六)javascriptJS中定义对象的几种方式(转)
JavaScript学习12 JS中定义对象的几种方式 转自: http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象 ...
- CentOS添加环境变量的三种方式
CentOS添加环境变量的三种方式,以添加php环境变量为例,假定php的安装目录为 /usr/local/php5 一.仅对当前会话临时生效 [root@bogon ~]# export PATH= ...
- ansible中定义变量的若干方法
Ansible支持十几种定义变量的方式 根据优先级排序的定义方式: Inventory变量 Host Facts变量 Playbook变量 Playbook提示变量 变量文件 命令行变量 1.Inve ...
随机推荐
- QEMU固件模拟技术-stm32仿真分析及IRQ仿真实践
文章首发于 https://forum.butian.net/share/124 概述 上一篇文件介绍了luaqemu的实现,也提到luaqemu并没有对中断相关api进行封装,本节主要基于stm32 ...
- 渗透测试-前端验签绕过之SHA256
本文是高级前端加解密与验签实战的第1篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过SHA256签名来爆破登录. 绕过 通过查看源代码可以看到key为 123412 ...
- 解密prompt系列44. RAG探索模式?深度思考模式?
前一阵多步RAG的风吹入了工业界,kimi推出了探索版本,各应用都推出了深度搜索,You.COM更是早就有了Genius的多步模式.其实都是类似multi-hop RAG的实现.之前学术界在讨论mul ...
- 我的世界服务端插件安装 AuthMe用户登录插件安装
Minecraft服务端插件安装-AuthMe用户登录插件安装 需要准备AuthMe插件 AuthMe-5.6.0.jar用户登录插件 例如使用/register <密码> <确认密 ...
- 【报错解决】【人工智能】【深度学习】验证cuda和tensorflow之间的版本对应关系时遇到的问题
验证环境B 验证成功,没有问题 验证环境A 得到结果false 检查是否与CUDA关联成功 tf.test.is_built_with_cuda() 发现没有关联成功 根据查询可知道,失败的原因是1. ...
- 龙哥量化:通达信的macd改进优化方法及选股公式源码
有很多同学是看macd的数值,遇到股价比较低的,macd数值变成0.00,就看不明白了, 优化: 第一步,给股价乘100,所有的哦 源码: DIF:EMA(CLOSE*100,12)-EMA(CLOS ...
- 绞尽脑汁终于搞定/天地图标注点marker旋转/任意角度旋转/无需引入其他框架
一.前言说明 在其他地图组件中,标注点marker都是可以设置旋转角度的,这个功能其实非常实用,比如飞机移动轨迹,就是需要旋转飞机头飞行,轮船轨迹移动也是,百度地图和腾讯地图是通过调用setRotat ...
- Qt编写地图综合应用45-路径规划
一.前言 路径规划一般是根据起始点坐标经纬度和结束点坐标经纬度,查询出合适的路线.关于起始坐标和结束坐标,最开始做的是直接传入具体中文地址即可,后面百度地图不再开放此功能,貌似变成了收费功能,但是经纬 ...
- [转]创建Visual Studio 2019离线安装包
可以在不同的网络环境和不同的计算机上在线安装微软Visual Studio 2019.微软提供的在线安装工具(Visual Studio web installer)可以让用户在线下载最新版本Visu ...
- Pytorch损失函数总结
损失函数 nn.L1Loss 创建一个衡量输入中每个元素之间的平均绝对误差 (MAE) 的标准XX和目标是的是的. nn.MSELoss 创建一个标准,用于测量输入中每个元素之间的均方误差(平方 L2 ...