有时候我们写 playbook 的时候发现写了很多的 task 都重复引用某个模块,比如一次想同步10个文件,如果按照以前写 playbook 的思路需要写10个 task,这样写的话发现 playbook 会显得很臃肿。可以用 loops 方式去编写 playbook 减少重复使用某个模块。Ansible playbook 循环有以下几种:1、标准 Loops 2、嵌套 Loops 3、散列
转载 2024-07-27 09:47:41
83阅读
前文中我们已经了解了一些用于循环的关键字,比如 with_list、with_items、with_flattened、with_together,这篇文章我们继续。假设,现在我有一个需求,我需要在目标主机的测试目录中创建a、b、c三个目录,这三个目录都有相同的子目录,它们都有test1和test2两个子目录,使用最原始的办法,我们可以在目标主机上执行如下一堆命令# pwd /testdir/te
背景:关于ansible的常规使用,我上一篇关于ansible中文手册中已经提到过了。ansible中文手册也已经覆盖了基本的使用需求。我这边就补充一些,可能中文手册中没有细讲的东西和一些使用实例。++++注册变量、when使用++++---- hosts: 172.17.92.167  tasks:  - name: shell return result &nbs
原创 2015-12-25 10:51:07
2155阅读
Ansible是一个系列文章,我会尽量以通俗易懂、诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些。 前言Ansible一直都在进化的路上,他一直都在让自己变的更强大,所以,没有逻辑控制的绝对是Low的。对于Ansible来说,如果没有逻辑控制的功能,是不完美的。逻辑控制功能对于我们日常使用Ansible来说,也是一个很大的功能,在Ansible的Playbook中主要是以下三种逻
ansible中,只有when可以实现条件判断tasks:  - name: config the yum repo for centos 7    yum_repository:       name: epel       description: epel       baseurl: http://mirrors.aliyun.com/epel/7/$basearch/       gp
原创 2021-03-12 22:06:45
806阅读
过滤器其实是ansible中的一种插件,除了过滤器,ansible中还有tests、Inventory、Connection、循环插件,循环插件也叫做"lookup插件"--- - hosts: test70 remote_user: root gather_facts: no tasks: - debug: msg: "index is {{item.0}} , va
前言现在不管干什么,都会先想着有没有现成的直接拿来用的,我想着也是一种程序员思维,这不是“拿来主义”,而是站在巨人的肩膀上思考问题的办法。就像Python,Node,Java这些一样,也都有很多现成的功能封装成的现成模块,供我们直接使用,不仅提升了我们的开发效率,也提升了我们的程序质量。同样的,在Ansible中也支持这种“拿来主义”,我们可以已经复用写好的脚本,在Ansible中,Playboo
转载 2024-04-17 17:05:51
30阅读
配置好清单vim /etc/ansible/hosts172.25.254.2 aplox.bbcc.com ansible_host=172.25.254.3 server6 [testA] test2 ansible_host=172.25.254.5 [testB] 172.25.254.4 [test:children] testA testB问题是不确定返回信息时如何处理with_
转载 2024-04-09 17:56:34
145阅读
一、简单介绍在ansible2.5之前,大多数人使”with_XXX”类型的关键字来操作循环,但是从2.6版本开始,官方推荐是”loop”关键字代替” with_XXX”。1.我们先看下一个小例子,使用loop关键字进行最简单的循环:[root@localhost cycle]# cat cycle.1.yml---  - name: cycletest  &nbsp
原创 2018-12-27 10:34:58
752阅读
种类一、标准循环添加多个用户- name: add several users user: name={{ item }} state=present groups=wheel with_items: - testuser1 - testuser2添加多个用户,并将用户加入不同的组内。- name: add several users user: name={{ i
转载 2024-02-18 12:26:18
57阅读
ansibleansible 是生产环境中使用非常频繁的命令之一,主要在以下场景使用:非固化需求;临时一次性操作;二次开发接口调用;非固化需求是指临时性的维护,如查看web服务器组磁盘使用情况、复制一个文件到其他机器等。类似这些没有规律的、临时需要做的任务,我们成为非固化需求,临时一次性操作,语法如下:Ansible <host-pattern> [options]-v(—verbo
转载 2024-02-19 23:58:44
141阅读
一、jinja2 for循环 在jinja2中的for循环,跟python中的for循环基本上是一模一样的。也是for…in…的形式。并且也可以遍历所有的序列以及迭代器。但是唯一不同的是,jinja2中的for循环没有break和continue语句。 但是在Jinja2模板中,没有continue和break语句,所以我们不能使用他们来控制我们的循环。但是Jinja2模板给我们提供了for循环
一、with_file假设你的ansible主机中有几个文件(注意:是ansible主机中的文件,不是远程目标主机中的文件),你想要获取到这些文件的内容,那么可以借助"with_file"关键字,循环的获取到这些文件的内容,示例如下:[root@server4 ~]# vim xh19.yml [root@server4 ~]# cat xh19.yml --- - hosts: testB
ansible循环
原创 2021-05-11 20:07:03
643阅读
Ansible是一种非常流行的自动化工具,它可以让用户轻松地管理多台服务器和网络设备。而在Ansible中,循环是一个非常重要的概念,可以帮助用户简化任务,提高工作效率。 循环允许用户在执行任务时多次重复相同的操作。在Ansible中,循环通常使用`with_items`指令来实现。通过循环,用户可以避免重复繁琐的操作,提高工作效率。下面我们来看一些循环Ansible中的应用场景和示例。 *
原创 2024-03-04 12:33:47
47阅读
blockinfile 模块在指定的文件中插入”一段文本”,这段文本是被标记过的,也就是,在这段文本上做了记号,以便在以后的操作中可以通过”标记”找到这段文本,然后修改或者删除它。1. 参数path:required,指定要操作的文件。block:指定要操作的”一段文本”,此参数有一个别名叫”content”,使用content或block的作用是相同的。marker:在指定文件中插入一段文本,a
转载 2024-03-01 09:17:07
58阅读
一、简单循环使用 loop 赋值列表的格式:loop: ##赋值列表 - value1 - value2 - ... {{item}} ##迭代变量名称在 playbook 中使用vim user.yml --- - name: create user hosts: server2 tasks: - name: create user user:
Ansible 循环一、简单介绍在ansible2.5之前,大多数人使”with_XXX”类型的关键字来操作循环,但是从2.6版本开始,官方推荐是”loop”关键字代替” with_XXX”。1.我们先看下一个小例子,使用loop关键字进行最简单的循环:[root@localhost cycle]# cat cycle.1.yml--- - name: cycletest host
说明 在使用ansible时,我们经常需要查看或者处理一些返回信息,这些返回信息多是呈现为列表的形式,当信息很多时不便于我们查看,这时候就需要用循环将列表的有序呈现出来,根据官网说明,ansible循环到目前为止分为仨版本,这里直接介绍第一种迁移到第三种的改变: ansible 2.5版本之前,循环 ...
转载 2021-11-04 16:03:00
431阅读
2评论
ansible roles   在实际的工作当中,一个完整的项目实际上是很多功能体的组合,如果将所有的功能写在一个playbook中会存在如代码耦合程度高、playbook长而维护成本大、灵活性低等一系列的问题。使用roles能巧妙的解决这一系列的问题。roles是ansible1.2版本后加入的新功能,适合于大项目playbook的编排架构。1、ansible playboo
转载 2024-03-26 12:15:54
48阅读
  • 1
  • 2
  • 3
  • 4
  • 5