ANSIBLE---变量

注册变量

ansible的模块在运行之后,其实都会返回一些”返回值”,只是默认情况下,这些”返回值”并不会显示而已,我们可以把这些返回值写入到某个变量中,这样我们就能够通过引用对应的变量从而获取到这些返回值了,这种将模块的返回值写入到变量中的方法被称为”注册变量”。

提示用户输入信息并写入变量

在运行某些脚本时,有时候脚本会提示用户输入一些信息,脚本需要根据用户输入的信息决定下一步的动作,这种”交互”有时候是必须的,那么,在playbook中该怎样实现这种交互呢?我们可以这样做,提示用户输入信息,然后将用户输入的信息存入到指定的变量中,当我们需要使用这些”输入的信息”时,只要引用对应的变量即可
使用”vars_prompt”关键字创建了两个变量,在定义” vars_prompt”中的变量时,使用private关键字,将变量的private属性设置为no即可, “private: no”表示变量值为非私有的,可见的,默认情况下 private值为yes,表示不可见。我们还能为提示信息设置默认值,即如果用户不输入任何信息,则将默认值赋予变量

[root@server4 ~]# vim bl_test4.yml
[root@server4 ~]# cat bl_test4.yml 
---
- hosts: testBremote_user: rootvars_prompt:- name: "solution"prompt: "Choose the solution you want \nA: solutionA\nB: solutionB\nC: solutionC\n"private: nodefault: Atasks:- name: output varsdebug:msg: The final solution is {{solution}}.

我们使用了default关键字设置了”solution”变量的默认值,如果用户没有输入任何值(直接回车),则将”solution”变量的值设置为A,如果用户输入了值,则”solution”变量值为用户输入的值

encrypt关键字表示对用户输入的信息进行哈希,encrypt: “sha512_crypt”表示使用sha512算法对用户输入的信息进行哈希,当使用”encrypt”关键字对字符串进行哈希时,ansible需要依赖passlib库完成哈希操作,如果未安装passlib库(一个用于哈希明文密码的python库),执行playbook时会报错。

除了能够使用”encrypt”关键字对字符串进行哈希加密,还能够使用”confirm”关键字实现类似确认密码的功能,我们在为用户设置密码时,通常需要输入两次完全相同的密码,才能够设置成功,通过”confirm”关键字就能实现类似的效果

通过命令行传入变量

在调用playbook时使用 –extra-vars选项可以传递对应的变量与变量值, –extra-vars是长选项,对应的短选项是-e,我们也可以一次性传入多个变量,变量之间用空格隔开。在playbook中定义好变量,然后在执行playbook时,再次传入相同名称的变量,最终还是以传入的变量值为准。命令行传入的变量的优先级要高于playbook中的变量,传入相同名称的变量,除了使用”key=value”的方式传递变量,ansible还支持通过json的格式传入变量。

使用”@”符号加上变量文件的路径,即可在命令行中传入对应的变量文件,变量文件中的所有变量都可以在playbook中引用

 

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

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

相关文章

inux中限制用户进程CPU和内存占用率

#!/bin/sh PIDStop -bn 1 | grep "^ *[1-9]" | awk { if($9 > 50 || $10 > 25 && id -u $2 > 500) print $1} echo $PIDS for PID in $PIDS dorenice 10 $PIDecho "renice 10 $PID" done

按月拆分数据库表--oracle

生产有一张日志表,数据量很大,需要按月进行存储,存储过程如下: CREATE OR REPLACE PROCEDURE NEWLOG4_SUB_TABLE IStable_name1 VARCHAR2(50);create_table_sql VARCHAR2(4000);insert_data_sql VARC…

plsql定时器

Oralce中的任务有2种:Job和Dbms_job,两者的区别有: 1. jobs是oracle数据库的对象, dbms_jobs只是jobs对象的一个实例, 就像对于tables, emp和dept都是表的实例。 2. 创建方式也有…

PL/SQL批处理语句:BULK COLLECT 和 FORALL

PL/SQL程序中运行SQL语句是存在开销的,因为SQL语句是要提交给SQL引擎处理,这种在PL/SQL引擎和SQL引擎之间的控制转移叫做上下文却换,每次却换时,都有额外的开销 请看下图: 但是,FORALL和BULK COLLEC…

oracle 中DATETIME与TIMESTAMP区别

1.DATETIME的日期范围是1001——9999年,TIMESTAMP的时间范围是1970——2038年。 2.DATETIME存储时间与时区无关,TIMESTAMP存储时间与时区有关,显示的值也依赖于时区。在mysql服务器,操作系统以及客户端连接都有时区的设置。 3.DAT…

PARALLEL(并行)

在Oracle中,PARALLEL(并行)方式最大化调用计算机资源来成倍提高数据分析效率。 1. 用途 强行启用并行度来执行当前SQL。这个在Oracle 9i之后的版本可以使用,之前的版本现在没有环境进行测试。也就是说,加…

Oracle数据库查询优化

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t w…

redis-full-check

https://github.com/alibaba/RedisFullCheck/releases redis-full-check是阿里云Redis&MongoDB团队开源的用于校验2个redis数据是否一致的工具。   redis-full-check通过全量对比源端和目的端的redis中的数据的方式来进行数据校验,其比较方式通过多轮次比较&a…

2021-06-22

服务器信息 [rootiZs7z01dz0z12dyttz9zn5Z cluster]# /app/redis/redis-3.2.1/src/redis-cli -c -h 10.252.120.9 -p 8003 10.252.120.9:8003> cluster nodes b1f543d646c5c97a70b0635439a44a72f8a143b1 10.252.120.10:8004 master - 0 1624349601417 7 connected 0-5460 1…

Docker目录挂载

Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定。 譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定: # docker run -it -v /test:/soft centos /bin/ba…

Redis主从复制原理学习

Redis主从复制原理学习总结 - 运维笔记 和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构&#xff…

redis数据恢复

公司线上一个项目数据存储采用MySQL,共分为10个库,分布在4台机器上,每个库数据量约为10G,各机器均采用RAID5加速磁盘访问; 当同时在线人数达高峰期(10w),DB磁盘IO压力巨大&#xff0…

Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

Redis的集群方案大致有三种:1)redis cluster集群方案;2)master/slave主从方案;3)哨兵模式来进行主从替换以及故障恢复。 一、sentinel哨兵模式介绍 Sentinel(哨兵)是用于监控redis集群中Master状态的工具&…

Redis之Redis内存模型

Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合&…

MySQL 数据库误删除后的数据恢复操作说明

在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据。 线上数据库备份场景: 每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备份. 下面对这种备份方案…

MySQL 之binlog日志说明及利用binlog日志恢复数据操作记录

众所周知,binlog日志对于mysql数据库来说是十分重要的。在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份binlog日志恢复增量数据部分),化险为夷! 一、简单了解binlog MySQ…

zabbix巡检脚本

#!/bin/bash BIN/usr/local/zabbix/binpasswort() { name$2 while read line do ipecho $line|awk -F {print $1} timeecho $line|awk -F {print $2} echo -e "${name}passport${ip}探活时间\t $time" done <$1 }for i in 100.245.160.113 100.245.160.141 1…

mysqldump备份(全量+增量)

在日常运维工作中&#xff0c;对mysql数据库的备份是万分重要的&#xff0c;以防在数据库表丢失或损坏情况出现&#xff0c;可以及时恢复数据。 线上数据库备份场景&#xff1a; 每周日执行一次全量备份&#xff0c;然后每天下午1点执行MySQLdump增量备份. 下面对这种备份方案…

查找指定日期数据所在分区数据

select a.subobject_namefrom dba_objects a join (select dbms_rowid.rowid_object(rowid) object_idfrom NEWLOG4 where TO_CHAR(autudt,YYYY-MM-DD) 2021-06-22) b on a.object_id b.object_id and object_name UPPER(NEWLOG4) group by a.subobject_name

统计内存使用率shell

#!/bin/bashdatedate "%Y-%m-%d %H:%M:%S"#显示消耗资源内存最高的进程名firstps aux | grep -v "grep" | grep -v "USER" | sort -rn -k 4 | head -4 | awk -F {print $13} | sed -n 1pSecondps aux | grep -v "grep" | grep -v &q…