Ansible playbook介绍及应用

ansible 任务执行模式

Ansible 系统由控制主机对被管节点的操作方式可分为两类,即adhoc和playbook:

ad-hoc模式(点对点模式)

使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话shell。

playbook模式(剧本模式)

Ansible主要管理方式,也是Ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。
playbook 是 ansible 用于配置,部署,和管理被控节点的剧本。
  通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机达到预期的状态。playbook 就像 Ansible 控制器给被控节点列出的的一系列 to-do-list ,而被控节点必须要完成。
  也可以这么理解,playbook 字面意思,即剧本,现实中由演员按照剧本表演,在Ansible中,这次由计算机进行表演,由计算机安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情。

playbook中的核心元素:

hosts: #执行任务的主机组
tasks: #任务列表
vars: #变量
remote_user: #连接远程主机的用户
name: #单个任务的说明,一个name一个任务,单个name下只能使用一个模块
ignore_errors: # 忽略任务的报错,继续往下执行

Ansible playbook格式

格式简介

playbook由YMAL语言编写。YAML( /ˈjæməl/ )参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822,Clark Evans在20015月在首次发表了这种语言,另外Ingy döt Net与OrenBen-Kiki也是这语言的共同设计者。
  YMAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写。首先学习了解一下YMAL的格式,对我们后面书写playbook很有帮助。以下为playbook常用到的YMAL格式:
  1、文件的第一行应该以 "---" (三个连字符)开始,表明YMAL文件的开始。
  2、在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
  3、YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。
  4、同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。
  5、play中hosts,variables,roles,tasks等对象的表示方法都是键值中间以":"分隔表示,":"后面还要增加一个空格。

例:安装并启动httpd

编写以下playbook文件

[root@localhost ~]# vim httpd.yml 
[root@localhost ~]# cat httpd.yml 
---
- hosts: webservers
  tasks:
    - name: "安装httpd"
      yum: name=httpd state=latest
    - name: "启动httpd"
      service: name=httpd state=started
[root@localhost ~]# 

使用ansible-playbook运行playbook文件

[root@localhost ~]# ansible-playbook httpd.yml 

在这里插入图片描述
绿色代表执行成功,系统保持原样
黄色代表系统代表系统状态发生改变
红色代表执行失败,显示错误输出
执行有三个步骤:1、收集facts 2、执行tasks 3、报告结果
语法检测

[root@localhost ~]# ansible-playbook --syntax-check httpd.yml 

playbook: httpd.yml
[root@localhost ~]# 

例:源码安装nginx并启动

编写playbook如下:

---
- hosts: webservers
  tasks:
    - name: "分发nginx源码包"
      copy: src=/root/nginx-1.18.0.tar.gz dest=/root/
    - name: "解压nginx源码包"
      shell: cd /root/ && tar xzf nginx-1.18.0.tar.gz
    - name: "安装依赖环境"
      yum: name=gcc,pcre-devel,openssl-devel state=latest
    - name: "编译并安装nginx"
      shell: cd /root/nginx-1.18.0 && ./configure && make && make install
    - name: "启动nginx"
      shell: /usr/local/nginx/sbin/nginx

使用ansible-playbook运行playbook文件

[root@localhost ~]# ansible-playbook nginx.yml 

例:启动nginx,关闭防火墙,创建测试页面

编写playbook如下:

---
- hosts: webservers
  tasks:
    - name: "开启nginx"
      shell: /usr/local/nginx/sbin/nginx
      ignore_errors: True  #可忽略任务的报错依次往下执行
    - name: "关闭防火墙"
      service: name=firewalld state=stopped
    - name: "创建测试页面"
      shell: echo $(date "+%F")  > /usr/local/nginx/html/index.html

使用ansible-playbook运行playbook文件

[root@localhost ~]# ansible-playbook start_nginx.yml 

浏览器测试结果
在这里插入图片描述

例:定义变量创建测试页面

编写以下playbook文件

[root@localhost ~]# vim test_page.yml
[root@localhost ~]# cat test_page.yml 
---
- hosts: webservers
  vars: 
    page: hello world
  tasks: 
    - name: "创建测试页面"
      shell: echo "{{ page }}" > /usr/local/nginx/html/index.html
[root@localhost ~]# 

使用ansible-playbook运行playbook文件

[root@localhost ~]# ansible-playbook test_page.yml 

浏览器测试结果
在这里插入图片描述

例:模板文件创建测试页面

编写模板文件如下:

[root@localhost ~]# vim index.html.j2 
[root@localhost ~]# cat index.html.j2 
{{ page }}
[root@localhost ~]# 

编写playbook文件如下

[root@localhost ~]# vim test_page.yml 
[root@localhost ~]# cat test_page.yml 
---
- hosts: webservers
  vars: 
    page: hello my friend
  tasks: 
    - name: "创建测试页面"
      template: src=/root/index.html.j2   dest=/usr/local/nginx/html/index.html
[root@localhost ~]# 

使用ansible-playbook运行playbook文件

[root@localhost ~]# ansible-playbook test_page.yml 

浏览器测试结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值