Ansible playbook编写之坑-----with_items

2024-05-04 08:48

本文主要是介绍Ansible playbook编写之坑-----with_items,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注:本文基于CentOS 7.2系统编写,Ansible版本为ansible-2.4.2.0-2.el7.noarch

这篇文章应该是一篇格式纠正的文章,因为今天因为playbook的格式搞了大半天。

今天在使用copy模块时,需要拷贝多个文件,于是就理所当然的用with_items了。不用不知道,用了之后差点被搞崩,playbook采用的是YAML语法格式,缩进在层次控制上非常重要,一不小心就是各种报错。

偏偏我就是这么时运不齐,参看了两本书都是错误的,不得不吐槽现在的书的质量怎么这么差。

第一本是《Ansible权威指南》,截取片段代码如下(取自4.2章节):
这里写图片描述

第二本是看《Ansible自动化运维技术与最佳实践》,截取代码片段如下(取自4.3章节):
这里写图片描述

无一例外,按照这上面的两种方式编写结果都是错误的,不只是书的排版问题还是软件版本问题,反正我是被坑得略惨。

最终还是得求救官方文档,终得解脱。

2.4版本的官方文档为:https://docs.ansible.com/ansible/2.4/playbooks_loops.html
with_items正确的缩进格式如下:
这里写图片描述

根据官方文档给的格式,在将使用模块换为copy,就是下面的样子,


---
  - hosts: CentOS-7-4
    gather_facts: falsetasks:- name: copy files
        copy:src: "{{ item.src }}"dest: "{{ item.dest }}"with_items:- { src: "/home/ansible/copy.yml", dest: "/home/copy.yml" }

也就是with_items要和模块名左对齐,在同一个层级。

如果单个文件的拷贝,copy也可以用下面的方式,

---- hosts: CentOS-7-4gather_facts: falsetasks:- name: copy filescopy: src=/home/ansible/copy.yml dest=/home/copy.yml 

此外,如果with_items使用的数据不是k/v型,只是多个变量,则可以使用下面的方式,


---
  - hosts: CentOS-7-4
    gather_facts: falsetasks:- name: install or uninstall rpms
        yum: name="{{ item }}" state=absentwith_items:- dos2unix
          - squid

在编辑完playbook后,可以先检查一下格式是否正确,再进行真正的执行。ansible提供了一下命令用于检测playbook语法,

ansible-playbook test.yml --syntax-check

参考资料:
1、https://docs.ansible.com/ansible/2.4/playbooks_loops.html

这篇关于Ansible playbook编写之坑-----with_items的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958802

相关文章

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16

使用Java编写一个文件批量重命名工具

《使用Java编写一个文件批量重命名工具》这篇文章主要为大家详细介绍了如何使用Java编写一个文件批量重命名工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景处理1. 文件夹检查与遍历2. 批量重命名3. 输出配置代码片段完整代码背景在开发移动应用时,UI设计通常会提供不

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo