Ansible基础3——playbook

一、基本了解

为什么要写playbook?

  • 前面我们可以使用临时命令对受控机进行操作,但当有重复性的工作时就不能这么玩了,因为你要一遍遍的去执行命令,这时playbook就可以有效解决这个问题,它轻松重复的对一组目标主机执行多项复杂的任务。

playbook是是什么?

  • playbook是一个文本文件,包含由一个或多个按特定顺序运行的play组成的列表,所以我们在编写playbook时需要理清思路,先执行什么,再执行什么。

注意事项:

  1. Playbook使用空格字符缩进来表示其数据结构。
    • 同一级别的数据元素缩进量必须相同。
    • 若项目属于其他项目的子项,其缩进量(空格数)必须大于父项。
    • 使用空格键进行缩进,不支持tab键,一般2个空格表示一个级别。
  2. Playbook开头一行由三个破折号组成,代表开始。在文档结尾可能会使用三个圆点表示结束,实践中进场忽略结尾符号。
  3. 两个标记之间,会以一个play列表的形式来定义playbook。YAML列表中的项目以一个破折号加空格开头。
  4. 在执行playbook时,会有一个特殊的任务自动执行——Gathering Facts任务,它是通过setup模块启动的,通常在play启动时自动运行这项任务,用于获取受控机的信息。
    在这里插入图片描述

提高输出的详细程度:

  • ansible-playbook命令提供的默认输出不提供详细的任务执行信息。ansible-playbook -v命令提供了额外的信息,总共有四个级别。
    • -v :显示任务结果。
    • -vv :任务结果和任务配置都会显示。
    • -vvv :包含关于与受管主机连接的信息。
    • -vvvv :增加了连接插件相关的额外详细程序选项,包括受管主机上用于执行脚本的用户以及所执行的脚本。

二、编写playbook

编写思路:

  1. 确定目标。比如我想在受控机上安装一个服务,是需要先系统初始化配置yum源,再开始安装,然后修改一些配置参数,最后启动。
  2. 确定要使用什么模块。执行不通的动作需要用不同的模块来完成。
  3. 验证playbook语法。
  4. 空执行,用于测试playbook输出的结果是否是我们想要的,但实际不会在受控机上执行。

2.1 单剧本

  • 示例:在192.168.130.161受控机上启动防火墙。

1.确定清单文件。
在这里插入图片描述

2.确定能与受控机通信。
在这里插入图片描述
3.创建一个ploybook目录,用于专门存放ploybook文件,编写playbook,名为qingjun.yml。

[root@localhost ansible]# mkdir playbook
[root@localhost ansible]# cd playbook/
[root@localhost playbook]# vim qingjun.yml
[root@localhost playbook]# cat qingjun.yml 
---
- name: 系统初始化         ##任务名称,自定义。
  hosts: 192.168.130.161      ##对哪个受控机进行操作。
  tasks:                      ## 任务。
    - name: 关闭防火墙      ##任务里可以有很多个小任务,比如这里就只有一个任务,关闭防火墙,名称自定义。
      service:             ##关闭防火墙要用哪个模块。
        name: firewalld          ##service模块参数,作用对象。
        state: stopped            ##service模块参数,操作动作。

4.语法验证。验证没问题之后才能往后面操作。

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

在这里插入图片描述
5.执行空运行,测试结果是否是我们想要的,但不实际在受控机上执行。
在这里插入图片描述

6.执行ploybook,查看结果。
在这里插入图片描述

2.2 多剧本

  • 示例:关闭所有受控机的防火墙,在192.168.130.162上安装zsh服务。

1.配置清单文件。
在这里插入图片描述

2.编写剧本。

[root@localhost playbook]# cat baimu.yml 
---
- name: 系统初始化
  hosts: all
  tasks:
    - name: 关闭防火墙
      service:
        name: firewalld
        state: stopped
- name: 安装服务
  hosts: 192.168.130.162
  tasks:
    - name: 安装zsh服务
      yum:
        name: zsh
        state: present

3.检查语法。
在这里插入图片描述
4.空执行测试。
在这里插入图片描述
5.正式执行,查看结果。
在这里插入图片描述
在这里插入图片描述

2.3 特权升级

参数释义
remote_user使用受控机上的哪个用户执行任务,默认为root用户。
becometrue和false,是否开启特权升级。
become_method切换受控机用户的方式。
become_user切换到受控机上的哪个用户。
–ask-become-pass切换用户时,是否需要输入密码。

1.编写剧本。

[root@localhost playbook]# cat baimu.yml 
---
- name: 系统初始化
  hosts: all
  remote_user: qingjun     ##使用受控机上的qingjun用户执行任务。
  become: true             ##开启特权升级。
  become_user: root        ##升级成哪个用户。
  become_method: su        ##使用su方式切换成root用户。
  tasks:
    - name: 查看文件内容
      lineinfile:             ##查看文件里是否有某行内容。
        name: /etc/hosts
        line: 'qingjun hahahah'
        state: present

2.测试语法。
在这里插入图片描述
在这里插入图片描述
3.正式执行。
在这里插入图片描述

2.4 语法优化

1.若有字符串型内容,需要用单引号或双引号。
在这里插入图片描述
2.若有多行字符串时,可以使用管道符。
在这里插入图片描述
3.列表方式和内联方式表示。
在这里插入图片描述
在这里插入图片描述

三、模块查找

1.官网查找,模块连接
在这里插入图片描述
2.命令查找指定模块,可以查看到playbook编写格式及所有参数。
在这里插入图片描述
3.命令查找所有模块。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百慕卿君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值