ansible自动化部署笔记(2)-Playbooks

一、Playbook 简介

Playbooks与Ad-Hoc相比,是一种完全不同的运用Ansible的方式,而且是非常之强大的;也是系统ansible命令的集合,其利用yaml语言编写,运行过程,ansbile-playbook命令根据自上而下的顺序依次执行。
简单来说,Playbooks 是一种简单的配置管理系统与多机器部署系统的基础。与现有的其他系统有不同之处,且非常适合于复杂应用的部署。

同时,Playbooks开创了很多特性,它可以允许你传输某个命令的状态到后面的指令,如你可以从一台机器的文件中抓取内容并附为变量,然后在另一台机器中使用,这使得你可以实现一些复杂的部署机制,这是ansible命令无法实现的。

Playbooks可用于声明配置,更强大的地方在于,在Playbooks中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤。并且可以同步或异步的发起任务。

我们使用Ad-Hoc时,主要是使用 /usr/bin/ansible 程序执行任务.而使用Playbooks时,更多是将之放入源码控制之中,用之推送你的配置或是用于确认你的远程系统的配置是否符合配置规范。

二、Playbook 语言

playbooks 的格式是yaml,语法做到最小化,意在避免 playbooks 成为一种编程语言或是脚本,但它也并不是一个配置模型或过程的模型。

playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过Ansible中的 tasks定义好的角色(play的内容被称为tasks,即任务)。从根本上来讲所谓tasks无非是调用Ansible的一个module。将多个 “play”组织在一个playbook中即可以让它们联同起来按事先编排的机制一同工作。

“plays”算是一个类比,可以通过多个plays告诉系统做不同的事情,不仅是定义一种特定的状态或模型。也可以在不同时间运行不同的plays。

三、从一个简单的playbooks开始

1.创建playbooks目录、服务的目录以及yml文件

ansible自动化部署笔记(2)-Playbooks_第1张图片

yml文件内容如下:

ansible自动化部署笔记(2)-Playbooks_第2张图片

此yml语句中使用了copy模块来复制文件,因此,还需要一个源文件放在当前目录下。我们将httpd.conf文件从远端拷贝到当前目录,并更改监听端口为8080

2.检查yml语法

3.使用ansible推送

ansible自动化部署笔记(2)-Playbooks_第3张图片

4.查看远端httpd

ansible自动化部署笔记(2)-Playbooks_第4张图片

使用md5sum可以查看httpd.conf文件是否发生变化,一般用于httpd.conf发生变化时用ansible推送

例如:

由以上两张图可以看到,httpd.conf文件相同,没有改变,然后我改变server1的httpd.conf文件,再次查看

四、jinja2

Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能,这对大多应用的安全性来说是非常重要的。

jinja中可以使用set定义临时变量也可以直接使用ansible其他地方定乂变量,关于jinja变量的引用都是采用{{变量名}}的方式,当然里面你可以根据变量名数据类型选择你想要的信息,比如dict={'key':'value'},直接{{dict}}会返回一个python dict数据,如果只需要key对应的值则需要{{dict['key']}}或者{{dict.get('key')}}其实这些都是python的标准用法,在jinja里面也可以直接使用, python的标准判断用法,在jinja里面也可以直接使用,python逻辑判断and or not在jinja的判断中也可以直接使用

环境:rhel7.3

server1:172.25.254.101

server2:172.25.254.102

1.编辑jinja2文件

修改内容如下:

2.定义http_port变量,定义变量有多种方式,可以在.yml文件下

也可以在host文件下定义

ansible自动化部署笔记(2)-Playbooks_第5张图片

这里我在host文件下定义了http_port变量

3.修改httpd.yml文件

将copy模块改为template,源文件改为httpd.conf.j2

ansible自动化部署笔记(2)-Playbooks_第6张图片

4.ansible推送

ansible自动化部署笔记(2)-Playbooks_第7张图片

5.查看server2的配置文件的值是否为hosts文件定义变量的值

五、ansible批量管理不同版本的主机

再开启一个6.5虚拟机   server3 : 172.25.254.103  做免密登陆

ansible自动化部署笔记(2)-Playbooks_第8张图片

如何通过ansible判断系统版本?

ansible自动化部署笔记(2)-Playbooks_第9张图片

ansible自动化部署笔记(2)-Playbooks_第10张图片

ansible自动化部署笔记(2)-Playbooks_第11张图片

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(ansible)