Ansible playbook
ansible命令每次只能执行一个任务,这种运行方式称为Ad-hoc(点对点模式),不考虑Ansible特性的话,这功能比ssh远程执行命令还要弱。
所以,Ansible靠ansible命令是撑不起自动化管理这把大伞的,Ansible真正强大的是playbook,它才是Ansible撬动自动化管理的结实杠杆。
playbook、play和task的关系
在前面介绍inventory的时候,将它类比为演员表,在这...
/
595 次浏览/
系统运维
playbook的语法∶YAML
ansible的playbook采用yaml语法,它以非常简洁的方式实现了json格式的事件插述。y aml之于json就像markdown之于html一样,极度简化了json的书写。
YAML文件后缀通常为.yaml或.yml。
YAML在不少工具里都使用,学习它是"一次学习、终生受益"的,所以很有必要把yaml 的语法格式做个梳理,系统性地去学—学。
YAML的基本语法规则如下∶
(1)使用缩进表示层级关系
(2)缩进时不...
/
674 次浏览/
系统运维
notify和handlers
此前曾提到过,Ansible绝大多数的模块都具备幂等性,它能保证多次执行不会改变结果,这使得Ansible执行任务时更为安全。
Ansible的模块如何去保证幂等性呢?以shell模块为例∶
shell:
cmd: echo haha >/tmp/only_once.txt
creates: /tmp/only_once.txt
这里使用了shel模块中的creates参数,它表示如果其指定的文件/tmp/only_once...
/
605 次浏览/
系统运维
除条件判断外, 另一种分支控制结构是循环结构。Ansible提供了很多种循环结构,一般都命名为with_Xxx,例如with_items、with_list、with_file等,使用最多的是with_items。
循环:迭代,需要重复执行的任务
对迭代项的引用,固定变量名为"item”,使用with_item属性给定要迭代的元素; 这个是以任务为中心,围绕每个任务来跑主机,如果中间某个任务中断,那么所有主机以后的任务就无法安装。
元素:...
/
488 次浏览/
系统运维
Ansible template模块
当安装完redis以后,redis默认配置的监听地址为"127.0.0.1",这样是安全的,但是,如果我需要让redis监听在非"127.0.0.1"的IP地址上,以便让其他主机也能够使用本机上的redis服务,那么我就需要修改默认的配置,没错,修改redis配置文件中的bind设置,即可将redis绑定在指定的IP上,假设,现在需要一次性在10台主机上安装redis,并且让安装后的redis都监听在redis所在主机的非"127....
/
589 次浏览/
系统运维
在本博客中,ansible是一个系列文章,我们会尽量以通俗易懂的方式总结ansible的相关知识点。
Ansible常用模块-ping模块
Ansible最基础的模块为ping模块,这个是测试远程的SSH连接是否就绪的常用模块。它并不像Linux命令一样简单的ping一下远程节点,而是先检查能否提供SSH登入远程节点,再检查Python版本是否满足要求,如果都满足返回pong,表示成功。
ping无需任何的参数,因为ping是测试节点的可用性,所以在...
/
475 次浏览/
系统运维
如果你的playbook包含了许多许多的功能,即包含了多个play,那么你需要整合所有任务到单个playbook中
这里将前面所有playbook集合到单个playbook文件中去,这样就可以一次性执行所有任务。比如下面所示,这里只是举个例子,没有将全部展示出来。
内容很长,可能你也感受到了,可读性很差,维护也很不方便。
更友好的一种组织方式是将各个任务分类,各自存放在不同的playbook文件中(就像未整合那样),然后使用一个入口playbook文件引...
/
573 次浏览/
系统运维
前文中,我们已经介绍了怎样使用模块,而且我们知道,ansible有很多模块,每个模块都有自己的功能,"模块"涉及到的方向比较多,所以对于个人来说,并没有必要了解所有的模块,我们只需要根据实际的业务场景了解相应的模块即可,而且ansible比较贴心,ansible根据模块的功能对这些模块进行了大致的分类,比如,如果某些模块都是操作文件的,就把它们分类到文件类模块中,如果某些模块都是操作数据库的,就把他们分类到数据库类模块中,那么,ansible把模块分为了哪些类呢?你可以参...
/
538 次浏览/
系统运维
前文中,我们已经介绍了怎样使用模块,而且我们知道,ansible有很多模块,每个模块都有自己的功能,"模块"涉及到的方向比较多,所以对于个人来说,并没有必要了解所有的模块,我们只需要根据实际的业务场景了解相应的模块即可,而且ansible比较贴心,ansible根据模块的功能对这些模块进行了大致的分类,比如,如果某些模块都是操作文件的,就把它们分类到文件类模块中,如果某些模块都是操作数据库的,就把他们分类到数据库类模块中,那么,ansible把模块分为了哪些类呢?你可以参...
/
505 次浏览/
系统运维
前文中已经总结了一些文件操作类的模块,如果你需要了解它们,可以查看我之前博客。
这篇文章我们继续来了解一些文件操作类模块。
find模块
find模块可以帮助我们在远程主机中查找符合条件的文件,就像find命令一样。
此处我们介绍一些find模块的常用参数,你可以先对这些参数有一个大概了解,然后再看小示例。
paths参数 :必须参数,指定在哪个目录中查找文件,可以指定多个路径,路径间用逗号隔开,此参数有别名,使用别名path或...
/
586 次浏览/
系统运维