ITPub博客

首页 > 数据库 > 数据库开发技术 > Ansible自动化运维工具6.0:YAML实战案例

Ansible自动化运维工具6.0:YAML实战案例

原创 数据库开发技术 作者:运维book思议 时间:2023-10-04 18:00:00 0 删除 编辑

先放个链接,万一有人关注呢

优质文章推荐

↓ ↓ ↓ ↓ ↓

Ansible自动化运维工具1.0:核心组件

Linux系统服务巡检脚本

Python脚本实现Zabbix自动微信告警

计算机网络:OSI七层网络模型

Linux系统不优化的后果有多严重?



书接上回:Ansible自动化运维工具5.0:YAML实战详解

playbook是一个不同于使用Ansible命令行执行方式的模式,其功能更加强大、灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,可作为部署复杂应用程序的基础。playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。playbook主要通过YAML语言来配置,从而实现多种功能。

主机与用户

playbook需要指定执行任务的主机与用户,这是一个完整的playbook必需的因素
---- hosts: webserver  users: root

首行的“---”是YAML语言的固定格式。其中,hosts的值可以是任意与管理节点建立连接的被管理节点,也可以用“all”表示所有被管理节点。


任务列表

任务列表用于指定被管理节点需要执行的任务

tasks:- name: running apache  service: name=httpd state=running- name: disable selinux  command: /sbin/setenforce 0

tasks是指定任务列表的关键字,name表示任务名称,完全允许用户自定义,service与command表示调用的模块。此处需要注意的是,任务列表必须按照任务的执行顺序编辑。


handlers

handlers也可以叫作“触发器”,当前属性满足一定条件之后,就会执行handlers中的命令,也就是说只有被“触发”时才会执行。

handlers:- name: restart apache  service: name=httpd statr=restarted
变量

用于定义变量的关键字是vars

- hosts: all    vars:         http_port: 80

上述内容表示,将http服务的端口号定义为了80。

条件判断

when在playbook中是表示条件判断的关键字

tasks:    - name: reboot Red Hat host      command: /usr/sbin/reboot      when: ansible_os_family=='Red Hat'

上述内容表示,当系统为Red Hat时,执行重启系统命令。首先Ansible会读取判断条件,当判断条件成立时,将执行command中的命令,当判断条件不成立时,则不执行任何命令。

循环语句

循环语句在playbook中是一种简化代码的方式,通常关键字为with_items

tasks:    - name: install LAMP      yum: name={{item}} state=present      with_items:         - nginx        - mysql-server        - php

上述内容表示,首先将需要安装的应用通过“item”代替,然后在下方解释出了“item”所包含的应用。当“item”中的应用都安装完成之后,即循环语句执行完成。

循环语句中还支持使用列表,关键字为with_flattened

---packages_LNMP:   - ['nginx','mysql-server','php']tasks:   - name: install LNMP    yum: name={{item}} state=present    with_flattened:      - packages_LNMP

上述内容,定义了一个packages_LNMP列表,其中包含了需要安装的应用,然后在yum模块中用“item”表示了需要安装的应用名称,最后表示“item”中包含了packages_LNMP列表中的内容。

include

当一段内容被重复使用时,可以将该内容单独写入到一个文件中,并使用include关键字进行引用。

编辑一个用于引用的文件

vim nginx.yml
内容如下
---- name: install nginx  yum: name=nginx state=present- name: running nginx  service: name=nginx state=running

这是一个安装并启动Nginx服务的YAML文件

在playbook中可以通过include进行引用

tasks:    - include: tasks/nginx.yml

上述内容表示,此处包含了nginx.yml文件中的内容,当Ansible读取时将会到nginx.yml文件中读取内容。

未完待续。。。。。。

来不及解释了,快上车!(进群看公告)

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。

              ↓↓↓ 点个在看,无需赞赏!

原文作者:运维book思议;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-09-24

  • 博文量
    333
  • 访问量
    215273