Ansible之playbook详解和应用实例

Ansible Playbook是自动化任务的蓝图,用于执行复杂的IT操作。本文详细介绍了playbook的组成,包括tasks、variables、templates和handlers,以及应用实例如安装启用httpd和nginx服务。此外,还讲解了playbook的其他用法,如语法检查、条件判断、sudo切换用户、tags模块和模板使用。最后,阐述了Roles模块的作用和结构,以及如何创建和组织Roles。
摘要由CSDN通过智能技术生成

目录

一、playbook简介

1.什么是playbook

2.playbook组成

二、应用实例

1.使用playbook安装启用httpd服务

2.使用playbook安装启用nginx服务

三、ansible-playbook其他用法

1.检查yaml文件的语法是否正确

2.检查tasks任务

3.检查指定的主机

4.指定从某个task开始运行

四、playbook进阶语法

1.引用变量

(1)自定义变量

(2)引用setup模块信息中的变量

2.遍历值

(1)遍历变量中的值

(2)遍历指定的多个值

(3)遍历参数列表

3.条件判断

4.指定远程主机sudo切换用户

5.tags 模块        

五、Template模板

六、Roles 模块


一、playbook简介

1.什么是playbook

        Ansible Playbook 是设定自动化任务的一种蓝图,可在无需人工干预或有限干预的前提下执行复杂的 IT 操作。Ansible Playbook 对一组或一类共同构成 Ansible 清单的主机执行。

        Ansible Playbook 本质上是一些框架,是一些预先编写的代码,开发人员可以用作临时模板或起始模板。Ansible Playbook 常被用于自动化 IT 基础架构(例如,操作系统和 Kubernetes 平台)、网络、安全系统,以及开发人员角色(例如 Git)。

        Ansible Playbook 可以帮助 IT 人员进行应用、服务、服务器节点或其他设备的编程,无需花费人力去从头创建所有事物。Ansible Playbook 及其中的条件、变量和任务,都可以无限期保存、分享或重复使用。

2.playbook组成

(1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行
(2)Variables:变量
(3)Templates:模板
(4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作
(5)Roles:角色

二、应用实例

1.使用playbook安装启用httpd服务

首先编写xxx.yaml文件

---    #多个yaml文件以---开头,以表明这是一个yaml文件,可省略
- name: apache play    #定义一个play的名称,可省略
  gather_facts: false    #设置不进行facts信息收集(即setup模块收集信息),这可以加快执行速度,如果不使用其中的信息可省略
  hosts: webservers    #指定要执行任务的被管理主机组,如多个主机组用冒号:分隔
  remote_user: root    #指定被管理主机上执行任务的用户
  tasks:    #定义任务列表,任务列表中的各任务按次序逐个在hosts中指定的主机上执行
  - name: disable selinux    #自定义任务名称
    command: '/usr/sbin/setenforce 0'    键值对,键是ansible模块,值是 -a 中的内容
    ignore_errors: true    #如执行命令的返回值不为0,就会报错,tasks停止,可使用ignore_errors忽略失败的任务

  - name: disable firewalld
    service: name=firewalld state=stopped enabled=no

  - name: prepare local repo
    copy: src=/etc/yum.repos.d/local.repo dest=/etc/yum.repos.d/local.repo

  - name: mount cdrom
    mount: src=/dev/sr0 path=/mnt fstype=iso9660 state=mounted

  - name: install apache
    yum: name=httpd state=latest

  - name: prepare httpd configuration file
    copy: src=/opt/httpd.conf dest=/etc/httpd/conf/httpd.conf mode=644 owner=apache group=apache
    notify: "restart httpd"    #如以上操作后为changed的状态时,会通过notify指定的名称触发对应名称的handlers操作

  - name: start httpd
    service: name=httpd state=started enabled=yes

  handlers:    #handlers中定义的就是任务,此处handlers中的任务使用的是service模块
  - name: restart httpd    #notify和handlers中任务的名称必须一致
    service: name=httpd state=restarted

运行playbook

ansible-playbook xxx.yaml

补充参数:
        -k(–ask-pass):用来交互输入ssh密码
        -K(-ask-become-pass):用来交互输入sudo密码
        -u:指定用户

Ansible在执行完某个任务之后并不会立即去执行对应的handler,而是在当前play中所有普通任务都执行完后再去执行handler,这样的好处是可以多次触发notify,但最后只执行一次对应的handler,从而避免多次重启。 

2.使用playbook安装启用nginx服务

首先编写xxx.yaml文件

---
- name: nginx play
  gather_facts: false
  hosts: webservers
  remote_user: root
  tasks:
  - name: test connection
    pin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值