通过两个简单的案例,让你明白ansible playbook的编写核心

通过几个简单的案例,让你明白ansible playbook是如何编写的

1.ansible 安装

ansible是新出现的自动化运维工具,基于Python开发,需要python version 2.6以上 。
没有需安装。

	yum install python

Ansible仓库默认不在yum仓库中,因此我们需要使用下面的命令启用epel仓库。

	yum install epel-release -y
	yum install ansible -y

2.ansible hosts

配置公钥,与目标主机配对那些,就百度一下,添加相对简单,不清楚可以私信。
因为举例需要:
在 /etc/ansible/hosts文件中:
[webservers]
192.168.74.129
在这里插入图片描述

3.ansible 模块

列举几个通用模块和与这几个模块的属性和参数。

3.1 Ping模块

测试目标主机连通性

[root@shell ansible]# ansible all -m ping

如图所示为ansible服务端与目标主机互通。
在这里插入图片描述

3.2 yum模块

该模块主要用于软件的安装。
此模块的属性:
name=  #所安装的包的名称
state=  #present—>安装, latest—>安装最新的, absent—> 卸载软件。

案例:安装nginx
[root@shell ansible]# ansible all -m yum -a ‘name=nginx state=latest’

3.3 service模块

该模块用于服务程序的管理。
此模块的属性:
enabled #设置开机启动。
name= #服务名称
state #有四种状态,分别为:started—>启动服务, stopped—>停止服务, restarted—>重启服务, reloaded—>重载配置
案例1:远程启动nginx
[root@shell ansible]# ansible all -m service -a ‘name=nginx state=started enabled=true’
验证端口是否打开
[root@shell ansible]# ansible all -m shell -a ‘ss -ntl’

案例2:远程关闭nginx
[root@shell ansible]# ansible all -m service -a ‘name=nginx state=stopped’

4.ansible playbook

playbooks是以YAML标记语言来定义的。
每个playbook由一个或多个play组成。play的目标是将一组主机映射到任务中去。
每个play包含一个或多个任务,这些任务每次执行一次。

4.1 YMAL格式要求

playbook常用到的YMAL格式:
1、文件的第一行应该以 “—” (三个连字符)开始,表明YMAL文件的开始。
2、在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
3、YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。
4、同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。
5、play中hosts,variables,roles,tasks等对象的表示方法都是键值中间以":“分隔表示,”:"后面还要增加一个空格。

4.2 playbook文件举例

要理解ymal格式和如何编写文件,还需要了解play的构成:
-name:自定义playbook的任务名称
-hosts:定义将要执行playbook的远程主机组
-remote_user:定义使用什么用户执行命令(一般是root)
-vars:定义playbook运行时需要使用的变量
-tasks:定义将要在远程主机上执行的任务列表
-handlers:定义task执行完成后需要调用的任务
本次以两个案例来向大家展示如何写ymal文件。

案例1:远程安装nginx

远程安装nginx,需要先写出如果通过ansible模块是如何安装nginx的,上文中提到需要yum模块安装nginx:
[root@shell ansible]# ansible all -m yum -a 'name=nginx state=latest’

那通过playbook安装:
vim install_nginx.yml

---
- name:install nginx
  hosts: webservers
  remote_user: root
  tasks:
  - name: install nginx
    yum:
      name:nginx
      state: latest

分析:
网上各个描述相关的play任务都比较复杂,如何精简理解。从yum以上的命令都是常规书写,难度不大,play任务执行中,yum以下是需要yum去安装nginx,从此处可看出,实际是与ansible的yum模块安装nginx一致,调用yum模块的属性和相关参数。

案例2:远程安装nginx,并启动nginx

案例1是单任务,还没有理解的话,那就看看案例2,多任务。
本例分析执行过程:
(1)先执行安装nginx;
(2)再启动nginx服务。
通过模块直接执行命令是
[root@shell ansible]# ansible all -m yum -a 'name=nginx state=latest’
[root@shell ansible]# ansible all -m service -a 'name=nginx state=started enabled=true’

那通过playbook安装:
vim nginx_server.yml

---
- name:install nginx
  hosts: webservers
  remote_user: root
  tasks:
  - name: install nginx
    yum:
      name:nginx
      state: latest
  - name: start nginx
    service :
      name:nginx
      state:started 
      enabled=true

分析,根据ymal格式要求,编写多个play任务的.yml文件,
对比通过模块直接执行命令,.yml文件中,是在案例1 的基础上增加了一个启动nginx运行任务,启动nginx任务,是调用的server模块和它的属性与参数。

4.3 .yml文件执行

1)编写 nginx_server.yml文件
vim nginx_server.yml
2)运行 nginx_server.yml文件
ansible-playbook nginx_server.yml

5.总结

通过以上案例,对此进行总结,个人的理解:
Playbook的文件编制的实质是在符合YMAL格式的要求下,调用ansible各个模块中的属性,来执行想要的需求。

PS:希望个人的分享,能让大家学到更多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值