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

37.Ansible循环+常用过滤器

Ansible循环

with_items迭代

安装httpd、samba软件包时,可以使用with_items迭代功能进行实现

---
- name: bhosts: node1tasks:- name: yumyum:name: "{{item}}"state: presentwith_items:- httpd- samba

with_dict迭代字典

item.key对应着是字典的键,item.value对应着字典的值

---
- name: bhosts: node1tasks:- name: de1debug:msg: "{{item.key}}&{{item.value}}"with_dict:- kuga: 1- agito: 2- ryuki: 3

with_fileglob迭代文件

拷贝多个文件到受控主机上时,可以使用

---
- name: bhosts: node1tasks:- name: cpcopy:src: "{{item}}"dest: /tmp/with_fileglob:- /tmp/*.sh- /home/student/ansible/*.yml

with_lines迭代行

With_lines可以将命令行的输出结果按行迭代

---
- name: bhosts: node1tasks:- name: b1copy:src: "{{item}}"dest: /tmp/with_lines:- find /etc/ansible -name "*.yml"

with_nested嵌套迭代
---
- name: bhosts: node1tasks:- name: bb1debug:msg:"{{item[0]}}&{{item[1]}}"with_nested:- [a,b]- [1,2,3]

with_sequence排序

正序

---
- name: bhosts: node1tasks:- name: vdebug:msg: "{{item}}"with_sequence:start=1end=10stride=1

倒序

---
- name: bhosts: node1tasks:- name: vdebug:msg: "{{item}}"with_sequence:start=10end=1stride=-1

with_random_choice

随机获得列表中的一个值

---
- name: bhosts: node1tasks:- name: bbdebug:msg: "{{item}}"with_random_choice:- 1- 2- 3- 4- 8- a- cc

loop

loop 是 Ansible 中用于创建循环的核心功能,它取代了旧的 with_* 语法,提供了更一致和易用的循环机制

---
- name: bhosts: node1tasks:- name: bbdebug:msg: "{{item}}"loop:- abc- bbc- cca

Ansible常用字符串过滤器
  1. center 过滤器:如果指定宽度小于字符串长度,则返回原字符串
  2. count 过滤器:与 length 完全等效,可根据个人偏好选择使用
  3. shuffle 过滤器:每次执行结果都会不同,因为是随机打乱顺序
  4. listshuffle 通常结合使用,先将字符串转换为字符列表,然后打乱顺序
过滤器名称功能描述示例代码
upper将字符串中的所有字符转换为大写`{{ testvar
lower将字符串中的所有字符转换为小写`{{ testvar
trim移除字符串首尾的空白字符`{{ testvar1
length返回字符串的长度`{{ testvar
capitalize将字符串首字母大写,其余字母转换为小写`{{ testvar
first返回字符串的第一个字符`{{ testvar
last返回字符串的最后一个字符`{{ testvar
center将字符串居中,并用空格填充至指定宽度`{{ testvar1
count返回字符串长度(与 length 等效)`{{ testvar2
list将字符串转换为列表,每个字符作为一个元素`{{ testvar3
shuffle将字符串转换为列表后随机打乱顺序(洗牌)`{{ testvar3

Ansible 中常用数字相关过滤器
  1. 使用 intfloat 过滤器时,如果转换失败且未指定默认值,Ansible 会报错
  2. random 过滤器每次执行都会生成不同的随机值
  3. abs 过滤器适用于整数和浮点数
  4. round 过滤器不指定精度时默认为0(即取整)
  5. 对于 random 过滤器,步长参数定义了随机数的可能取值间隔
过滤器名称功能描述示例代码示例输入值示例结果/说明
int将值转换为整数类型`{{ ‘8’int }}`"8"
int(default)将值转换为整数,失败时返回默认值`{{ ‘a’int(default=6) }}`"a"
float将值转换为浮点数类型`{{ ‘8’float }}`"8"
float(default)将值转换为浮点数,失败时返回默认值`{{ ‘a’float(8.88) }}`"a"
abs获取数值的绝对值`{{ testvar4abs }}`-5
round对数值进行四舍五入`{{ 12.5round }}`12.5
round对数值进行四舍五入到指定小数位`{{ 3.1415926round(5) }}`3.1415926
random生成0到指定值之间的随机整数`{{ 100random }}`100
random生成指定起始值到上限值之间的随机整数`{{ 10random(start=5) }}`10 (start=5)
random(start,step)生成指定范围内按步长递增的随机整数`{{ 15random(start=5,step=3) }}`15 (start=5, step=3)
random(step)生成0到上限值之间按指定步长递增的随机整数`{{ 15random(step=5) }}`15 (step=5)

Ansible中与加密有关的过滤器
过滤器名称功能描述示例代码
hash使用指定算法对字符串进行哈希计算`{{ ‘123456’
hash使用MD5算法对字符串进行哈希计算`{{ ‘123456’
checksum获取字符串的校验和(与MD5哈希值一致)`{{ ‘123456’
password_hash(algorithm)使用指定算法生成带随机盐的密码哈希`{{ ‘123456’
password_hash(algorithm, salt)使用指定算法和盐值生成密码哈希`{{ ‘123456’
password_hash(algorithm)使用SHA512算法生成带随机盐的密码哈希`{{ ‘123123’
password_hash(algorithm, salt)使用SHA512算法和指定盐值生成密码哈希`{{ ‘123123’
  1. hash 过滤器支持多种算法,如 ‘md5’, ‘sha1’, ‘sha256’, ‘sha512’ 等
  2. checksum 过滤器实际上是使用MD5算法的简便方法
  3. password_hash 过滤器专为密码哈希设计,会自动添加盐值增强安全性
  4. 使用随机盐时,每次执行结果都会不同
  5. 指定盐值时,结果将保持一致,适用于需要可重复哈希的场景
http://www.dtcms.com/a/363945.html

相关文章:

  • docker-compose的使用
  • 让AI成为您的眼睛:星眸(StarGaze),为盲人朋友点亮前行之路
  • MySQL8.0 新特性随笔
  • 基于B_S结构的校园报修管理系统设计与实现(代码+数据库+LW)
  • 设置STS(Spring Tool Suite),在格式化代码时for循环中的冒号左右都加上一个空格
  • 移动端网页调试实战,Safari Web Inspector 深度使用与对比分析
  • 关于?问号占位符的分析(主要以PHP为例)
  • C# 中这几个主流的 ORM(对象关系映射器):Dapper、Entity Framework (EF) Core 和 EF 6
  • C#基础(⑥动态链接库DLL)
  • Python 中将 JSON 字符串转为对象的几种方法对比
  • (五)Python控制结构(循环结构)
  • 最快的 C 语言 JSON 库 - yyjson
  • 爬虫-----最全的爬虫库介绍(一篇文章让你成为爬虫大佬,爬你想爬)
  • 【鸿蒙心迹】从疑惑到热爱:我的鸿蒙开发启蒙
  • Java消息中间件(RocketMQ)
  • Linux 文本处理实战手册
  • 【专栏升级】大模型应用实战并收录RAG专题,Agent专题,LLM重构数据科学流程专题,端侧AI专题,累计63篇文章
  • Redis 哨兵 (基于 Docker)
  • YOLO 目标检测:YOLOv5网络结构、Focus、CSP、自适应Anchor、激活函数SiLU、SPPF、C3
  • 3.2-C++基础组件
  • Kafka面试精讲 Day 5:Broker集群管理与协调机制
  • 深度学习-----通过本地数据实现图片识别的训练
  • PS痕迹检测器:基于深度学习的图像篡改检测
  • 撤销修改 情况⼀:对于⼯作区的代码,还没有 add
  • 浏览器内存 (JavaScript运行时内存)存储的优劣分析
  • linux(cut,sort,uniq ,tr,sed,awk)命令介绍
  • 贝叶斯定理:理解概率更新与实际场景应用
  • 在VS Code中直接操控浏览器
  • 预算紧张?这5款低代码平台免费还好用!
  • 光储充一体化智慧能源平台助力某能投公司绿色能源转型