首页
学习
活动
专区
圈层
工具
发布

playbook中when的使用

背景 在使用ansible编写playbook的过程中,我们发现在安装某服务时,例如部署fastdfs分布式存储时,有的机器需要启动tracker和storage两个服务,有的机器只需要启动一个服务即可...,它们需要的配置不同,我们要根据不同的机器来做不同的判断,来分发不同的配置文件,这时就会用到when来做判断了,并且我们还要使用jinja2的循环条件控制语句,还要在ansible的清单文件中设置好变量...,这种使用方法能帮我们大大的提高playbook的执行效率 针对不同的主机来做判断,如果满足条件,则执行任务,不满足直接略过 - name: Copy tracker init file template...etc/init.d/fdfs_systemd when: fdfs_role == 'tracker' become: true 这里我们自定义了一个变量fdfs_role,该变量是定义在清单文件中的...group_id=1 10.0.3.150 group_id=2 [tracker:vars] fdfs_role=tracker [storage:vars] fdfs_role=storage 我们这里对不同的主机进行分组

71530

Ansible进阶学习之Playbooks(剧本)的理解使用

前言 上一篇文章为大家对“Ansible”简单入了个门,介绍了自动化运维发展,Ansible的基本原理以及基本模块的使用。...它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。...基本语法 大小写敏感 使用缩进表示层级关系 缩进时不允许使用 Tab 键,只允许使用空格 缩进的数目不重要,只要相同层级的元素左侧对齐即可 支持的数据结构 对象:键值对的集合,又称为映射(mapping...)/哈希(hashes)/字典(dictionary) 对象: 一组键值对,使用冒号结构表示: task::install 字典: 每一个成员由键值对组成,注意冒号后面要有空格 martin...playbook中使用变量 ? 【注意】:playbook中能使用的变量不仅仅是这里定义的变量,而且可以使用ansible中定义的所有变量。

1.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    multiset中再底层中存储的是的键值对

    tltiset的插入接口中只需要插入即可与set的区别是,multiset中的元素可以重复,set是中value是唯一的使用迭代器对multiset中的元素进行遍历,可以得到有序的序列multiset中的元素不能修改在...2, 1, 3, 9, 6, 0, 5, 8, 4, 7 }; // 注意:multiset在底层实际存储的是的键值对 multiset s(array...,存储由key和value映射成的键值对,其中多个键值对之间的key是可以重复的。...key和value的类型可能不同,通过multimap内部的成员类型value_type组合在一起,value_type是组合key和value的键值对:typedef pair中的元素默认将key按照小于来比较multimap中没有重载operator[]操作,(因为key-value不再是唯一)使用时与map包含的头文件相同

    27610

    如何Ansible编写一个Playbook

    当需要多个操作时,必须使用多个临时命令来执行。 3.playbook是描述要在受管理主机上实施的必要配置或程序性步骤的文件。playbook为配置管理和部署提供了强大而灵活的解决方案。...playbook使用带空格字符的缩进来表示数据结构。YAML对缩进使用了多少空格没有严格的要求,但是有两个基本规则: 1、层次机构中相同级别的数据元素(例如相同列表中的项)必须具有相同的缩进。...5、Tab键的使用 yml文件只能使用空格缩进,不能使用Tab,如果vim编辑器,可以通过编辑$HOME/.vimrc将Tab转化为2个空格。文件如果不存在,则自己创建。...,列表中的每个任务本身都是键值对的集合。...ansible-playbook命令提供--syntax-check选项,可用于验证playbook文件的语法。下例演示了一个playbook成功通过语法验证。

    3.2K20

    Ansible PlayBook的中变量优先级分析及清单变量解耦总结

    ansilbe可以在许多不同的位置设置变量: 在角色的defaults和vars目录中 在主机清单文件中,作为主机变量或组变量 在Playbook或清单的 group_vars 或host_vars子目录下的变量文件中...在可读的小文件中组织变量:如果有一个包含许多主机组和变量的大型项目,请将变量拆分成多个文件。 变量优先级 当使用多种方式定义相同变量时,Ansible 将使用优先级规则为变量选取值。...: 配置文件 配置文件的变量拥有最低的优先级,通过在ansible.cfg 中提供到的一个KV的键值对,我们看一个Demo ┌──[root@vms81.liruilongs.github.io]-[~...通过将变量分隔到按功能分组的文件中,可以使整个 playbook 项目更易于理解和维护。 在这里插入图片描述 特殊清单变量 可以使用多个变量来更改Ansible连接到清单中列出的主机的方式。...编辑 inventory.yml 静态清单⽂件,以便 playbook 中引⽤ load_balancer 主机时使Ansible 连接到 servera.lab.example.com。

    5.8K10

    Linux云计算运维架构师(连载)-自动化运维ansible-12

    l 数据类型(YAML支持的数据类型) ² 对象:键值对的集合,又称为映射(mapping)、哈希(hashes)、字典(dictionary)。...1.1.2 YAML对象 在YAML中,对象键值对使用冒号结构表示,并且在冒号的后方需要加一个空格,其语法如下所示。...key: value 除了一对一的定义之外,YAML也支持通过一个对象名称表示多个键值对,语法结构如下所示。 key: {key1: value1,key2: value2,...}...1.1.4 playbook 使用Ansible完成一个任务时,往往需要多条命令来进行组合。...\n"]} host3······此处省略部分代码······ (2)准备Apache的配置文件 清理完成后,在Ansible服务器中安装Apache,以便获取Apache服务的配置文件,代码如下所示。

    1.4K20

    使用nano在Linux中编辑文件

    与基本的文本编辑相比,nano提供许多额外的特性,例如:交互式的查找和替换,定位到指定的行列,自动缩进,特性切换,国际化支持,以及文件名标记完成。本教程中,我们将介绍一些帮助您入门的基本知识。...使用nano打开系统文件 从终端输入nano和文件名。如果该文件不存在,nano将在您指定的位置创建一个新的临时版本。...在此示例中,我们将使用sudo权限打开系统的hosts文件: sudo nano /etc/hosts 使用上面的示例打开系统主机文件,结果类似于以下内容: 在默认视图中,nano将在顶部标题栏的中心显示正在编辑的文件...nano快捷方式 ^ W:在打开的文件中搜索 ALT + W:找到下一个搜索实例 ^ O:保存文件 ^ K:删除整行 ^ U:粘贴整行 ^ T:查看文件浏览器 ^ X:退出 更多信息 有关此主题的其他信息...使用nano nano帮助 Emacs,nano或Vim:正确选择基于终端的测试编辑器 更多Linux教程请前往腾讯云+社区学习更多知识。

    8.5K40

    『Ansible 上手指南』

    但在使用的过程中存在下面几个问题: 测试发现,结果不对时需要及时修改代码,再次拷贝二进制文件到主机上 主机环境需要多次推倒,重新部署,验证版本更新问题 需要手动一个一个命令的执行 测试有几套主机 看上去手动的方法...原理 管理主机从 hosts 里读取主机清单,通过 playbook 按顺序同时对管理的主机进行相应的操作。 如图: ? 示意图.png ?...示意图.png 管理主机主要是对主机的定义和配置、编写 playbook(即节点主机的执行动作)。 运行: 1....命令行 ansible all -m ping 2. playbook ansible-playbook example.yml 主机清单 编辑文件:/etc/ansible/hosts 即:定义主机名称...即配置好192.168.100.100 的主机别名为example, 主机的用户名和密码为:username/root Yaml 包含三种类型: 键值对:key: value 数组 纯量:整型、字符串

    90430

    Ansible高级用法(运维开发篇)

    在Ansible1.2及之前的版本,默认将会使用paramiko,本地OpenSSH必须通过-c ssh或者配置文件中设定.....在使用Ansible时,你可能不想遇到这样的情况:如果有个主机没有在“known_hosts”中被初始化将会导致在交互使用Ansible或定时执行Ansible时对key信息的确认提示....格式是类似于JSON的文件格式,以便于人理解和阅读,同时便于书写,首先学习了解一下YAML的格式,对我们后面书写playbook很有帮助....以下为playbook常用到的YAML格式 # 大小写敏感 # 使用缩紧表示层级关系(只能空格不能使用tab) # yaml文件以"---"作为文档的开始 # 在同一行中,#之后的内容表示注释,类似于..., "orange" ] # 同一个列表中的元素应该保持相同的缩进,否则会被当做错误处理. # play中hosts,variables,roles,tasks等对象的表示方法都是键值中间以":"分割表示

    4K52

    使用Playbook管理复杂任务

    1.Ansible-PlayBook Playbook是通过yaml文件来配置实现 YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。...其结构(Structure)通过空格来展示,序列(Sequence)里的项用"-"来代表,Map里的键值对用":"分隔。YAML文件扩展名通常为.yaml,如example.yaml。...Playbook可以用来管理复杂任务 对于需反复执行的、较为复杂的任务,我们可以通过定义 Playbook 来搞定。...Playbook 是 Ansible 真正强大的地方,它允许使用变量、条件、循环、以及模板,也能通过角色 及包含指令来重用既有内容。下面我们来看看一些具体的实例。...实践2:使用playbook创建计划任务 编写yaml - hosts: webserver remote_user: root tasks: - name: crontab

    74130

    Ansible

    ,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错 force:此参数当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖...,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机 owner:此参数指定文件拷贝到远程主机后的属主,但是远程主机上必须有对应的用户...’ tasks:任务集 variables:内置变量或自定义变量在playbook中调用 tempaltes 模板,可替换文件中的变量并实现一些简单逻辑的文件 handles 和notify结合使用,由特定条件触发的操作...,在YAML语法中,键值对需要使用冒号作为分隔,而且冒号后边必须还要有一个空格作为分隔 #第三行:remote_user关键字可以指定在进行远程操作时使用哪个用户进行操作 #第四行:tasks关键字是用来指定要执行哪些操作任务...,之后的行都属于tasks任务列表中的任务,每个任务都以”- “开头,每个任务都有自己的名字,任务名使用name关键字进行指定 #运行剧本需要使用’ansible-playbook’命令 [root@

    3K30

    实战RHCA-DO407(1)

    的配置文件,如下所示: 3.1主机库存文件/home/student/ansible/inventory 3.2剧本中角色的位置被定义为/home/student/ansible/roles 练习环境在...创建并使用一个角色 根据以下要求在/home/student/ansible/role中创建一个名为apache的角色 复制默认模板目录到/tmp/custom/,并添加templates目录,创建角色时指定模板目录为...中,创建一个主分区,编号是1,大小1500MiB 格式化成ext4文件系统,挂在到/newpart 如果无法创建请求的分区大小,则应使用错误消息“无法创建该大小的分区”, 应该显示,而应该使用大小为800Mib...vda size device vdb size 输出文件的每一行都包含一个键值对你的剧本应该: 1)....的值是 Imamgr 加密和解密的密码是:whenyouwishuponastar 密码存储在/home/student/ansible/secret.txt文件中 解答 1.创建密码文件 [student

    7.8K72

    Ansible 简介

    模块 Ansible 把类似的操作封装到模块中,这样就可以通过插件的方式对 Ansible 进行扩展了。...每个模块都能接收参数,几乎所有的模块都接受键值对(key=value)参数,这些参数通过空格进行分隔。也有一些模块不接收参数,只需在命令行输入相关的命令就能调用。...Ansible 的 laybook 功能支持把命令以 yaml 的格式写在配置文件中,然后一次性执行配置文件中的所有命令(这一点类似于 chef 中的 cookbook)。...  tasks: - name: check disk       command:df -h 把上面的代码保存在文件 playbook.yml 中,当然你可以根据自己的喜好命名这个文件。...然后执行下面的命令,注意这次执行的是 ansible-playbook 命令,并且需要指定编辑好的 playbook 的文件名称作为参数: $ ansible-playbook -u nick playbook.yml

    1.9K20

    Ansible Playbook 详解

    一、playbook 的简单使用 1、创建文件实例 (1)编辑配置文件 [root@tiejiangSRC1 ~]# cd /etc/ansible/ [root@tiejiangSRC1 ansible...shell: touch /tmp/playbook.txt 注意: hosts参数指定了对哪些主机进行参作; user参数指定了使用什么用户登录远程主机操作; tasks指定了一个任务...,其下面的name参数同样是对任务的描述,在执行过程中会打印出来。...(2)执行创建playbook文件文件 [root@tiejiangSRC1 ansible]# ansible-playbook test.yml PLAY [testhost] *****...playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值 ,可以省略; gather_facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的

    3.8K00

    Zabbix批量部署Windows和Linux下的agent

    对Linux进行批量部署Zabbix-agent 我们这里使用的是ansible来对zabbix-agent进行批量部署,当然在Linux上也可以使用脚本来完成部署 环境 ansible:10.127.0.133.../hosts中添加主机信息 [Linux-agent] 172.168.0.4 172.168.0.5 编辑Linux-agent的playbook文件进行批量部署 实现步骤: 安装zabbix-agent4.2...可以看到,agent配置文件中的变量也修改完成 创建自动发现规则对部署的主机进行自动发现并添加监控项 创建自动发现规则 ? 添加自动发现动作 ? 配置发现后的操作 ?...对Windows进行批量部署Zabbix-agent Windows下的批量部署可以通过配置管理工具或者域控制器进行,这里我使用的ansible来对Windows主机进行批量部署 环境 ansible:..."winrm" ansible_winrm_transport=ntlm ansible_winrm_server_cert_validation=ignore 编辑Windows-agent的playbook

    2.6K40

    Ansible-playbook

    内置变量或自定义变量在playbook中调用 Templates 模板,即使用模板语法的文件,比如配置文件等 Handlers 和notity结合使用,由特定条件触发的操作,满足条件方才执行,否则不执行...1.3 Playbook语法 playbook使用yaml语法格式,后缀可以是yaml,也可以是yml。 在单一一个playbook文件中,可以连续三个连子号(---)区分多个play。...在/etc/ansible/hosts文件中定义变量,可以针对每个主机定义不同的变量,也可以定义一个组的变量,然后直接在playbook中直接调用。...常用的参数[参考](https://buji595.github.io/2019/05/27/Ansible Ad-hoc常用Module/#setup) # 编辑playbook文件 [student...[student@ansible ~/ansible]$ ansible-playbook variables.yml 1.7 Playbook中标签的使用 一个playbook文件中,执行时如果想执行某一个任务

    1.9K40

    深入理解HashMap:Java中的键值对存储利器

    HashMap的概念 HashMap是Java中的一种数据结构,用于存储键值对。它实现了Map接口,并通过哈希表的方式实现了快速的查找、插入和删除操作。...HashMap允许null键和null值,并且是非同步的,不保证元素的顺序。 关键特点: 键值对存储: HashMap存储数据的基本单位是键值对,其中每个键都唯一,每个键关联一个值。...HashMap使用链表或红黑树等方式解决冲突,将具有相同哈希码的键值对存储在同一个桶内。...HashMap使用链表或红黑树来解决冲突,将具有相同哈希码的键值对存储在同一个桶内。链表用于短小的链,而红黑树用于长链,以提高检索性能。...总结 HashMap是Java中广泛使用的键值对存储结构,了解其内部结构和工作原理对于编写高效的Java程序至关重要。在多线程环境中,使用ConcurrentHashMap能够更好地保证线程安全性。

    53710

    DevOps工具介绍连载(41)——Vault

    Ansible 1.5的新版本中, “Vault” 作为 ansible 的一项新功能可将例如passwords,keys等敏感数据文件进行加密,而非存放在明文的 playbooks 或 roles 中...这里,你可以在 ansible.cfg 中定义密码文件所在位置,这个选项就不需要在命令行中指定标志了. Vault可以加密些什么 vault 可以加密任何 Ansible 使用的结构化数据文件....该命令会先加密文件为临时文件并允许你编辑这个文件,当完成编辑后会保存回你所命名的文件并删除临时文件: ansible-vault edit foo.yml 密钥更新加密文件 如果你希望变更密码,使用如下...交互式的指定 vault 的密码文件: ansible-playbook site.yml --ask-vault-pass 该提示被用来解密(仅在内存中)任何 vault 加密访问过的文件....目前这些文件中所有的指令请求将被使用相同的密码加密. 另外,密码也可以定义在一个文件或者一个脚本中,但是需要 Ansible 1.7 以上的版本才能支持.

    71120
    领券