从小白到大神之路之学习运维第61天--------Ansible自动化运维工具(playbook配置文件深入了解)

第三阶段基础

时  间:2023年7月14日

参加人:全班人员

内  容:

playbook配置文件

目录

playbook配置文件

一、playbook配置文件概念

修改hosts文件

建立playbook配置文件

yml脚本写法注释:

二、Playbook的核心元素

三、Playbook的用法

四、实验案例:

(一)工作流程

1、语法检查  

2.预测试   (最重要)

3.列出主机

4.列出任务

5.列出标签

6.进行测试   (预测试成功之后就可以进行测试了)

7.测试查看

(二)触发器

handlers触发器的实验实例如下:

脚本注释:

实  验:

1、预测试:

2、执行测试:

3、结果验证


playbook配置文件

一、playbook配置文件概念

 Playbook配置文件使用YAML语法,具有简洁明了,结构清晰等特点。

Playbook配置文件类似于shell脚本,是一个YAML格式的文件,用于保存针对特定需求的任务列表;

前面介绍的ansible命令虽然可以完成各种任务,但是当配置一系列任务时,逐条输入命令就显得效率非常低下,更有效的方式在playbook配置中配置所有的任务代码;

利用ansible-playbook命令执行该文件,可以实现自动化运维;

YAML文件的扩展名通常为.yaml或.yml。

YAML语法和其他高级语言类似,其结构通过缩进来展示,通过“-“来表达选项,通过冒号“:”来分隔键和值。整个文件以“---”开始并以“…”结束,如下所示:

例:

修改hosts文件

修改配置如下:

vim /etc/ansible/hosts

配置如下:

建立playbook配置文件

vim /etc/ansible/test1.yml

配置如下:

yml脚本写法注释:

vim /etc/ansible/test1.yml #创建test,yml文件

--- #开头格式(可忽略)

- hosts: hu1 #表示对test01(192.168.59.138)的操作

  remote_user: root #远端执行用户身份root

  tasks: #任务列表

    - name: adduser #任务名称

      user: name=user2 state=present #执行user模块创建用户

      tags: #创建tag标签

      - testa #tag标签为testa

    - name: addgroup #任务名称

      group: name=tests system=yes #执行group模块创建一个组账号

      tags: #创建tag标签

      - testb #tag标签为testb

- hosts: hu2 #表示对test02(192.168.59.140)的操作

  remote_user: root #远端执行用户身份root

  tasks: #任务列表

    - name: copy file #任务名称

      copy: src=/etc/passwd dest=/home #执行copy模块复制文件

      tags: #创建tag标签

      - testc #tag标签为testsc

... #结尾格式(可忽略)

所有的“-”和“:”后面均有空格,而且要注意缩进和对齐

二、Playbook的核心元素

包含:

hosts:任务的目标主机,多个主机用冒号分隔,一般调用/etc/ansible/hosts中的分组信息;

remote_user:远程主机上,运行此任务的默认为root运行;

tasks:任务,即定义的具体任务,由模块定义的操作列表;

handlers:触发器,类似tasks,只是在特定的条件下才会触发任务。某任务的状态在运行后changed时,可通过“notify”通知给相应的handlers进行触发执行;

roles:角色,将hosts剥离出去,由tasks,handlers等所组成的一种特定的结构集合。

三、Playbook的用法

Playbook 文件定义的任务需要通过ansible-playbook命令进行调用并执行,ansible-playbook命令用法如下:

用法:ansible-playbook [option] /PATH/PLAYBOOK.yml

其中[option]部分的功能包括:

1.--syntax-check:检测yaml文件的语法;

2.-C(--check):测试,不会改变主机的任何配置;

3.--list-hosts:列出yaml文件影响的主机列表;

4.--list-tasks:列出yaml文件的任务列表;

5.--list-tags:列出yaml文件中的标签;

6.-t TAGS(--tags=TAGS):表示只执行指定标签的任务;

7.--skip-tags=SKIP_TAGSS:表示除了指定标签任务,执行其他任务;

8.--start-at-task=START_AT:从指定任务开始往下运行。

四、实验案例:

(一)工作流程

1、语法检查  

ansible-playbook --syntax-check

/etc/ansible/test1.yml

2.预测试   (最重要)

ansible-playbook -C /etc/ansible/test1.yml

错误情况:

正确情况:

3.列出主机

ansible-playbook --list-hosts /etc/ansible/test1.yml

4.列出任务

ansible-playbook --list-tasks /etc/ansible/test1.yml

5.列出标签

ansible-playbook --list-tags /etc/ansible/test1.yml

6.进行测试   (预测试成功之后就可以进行测试了)

ansible-playbook  /etc/ansible/test1.yml

7.测试查看

【huyang2】tail -5 /etc/passwd  tail -5 /etc/group

【huyang3】ls /home/

  通常情况下会先执行ansible-playbook -C/PATH/PLAYBOOK.yml命令进行测试,测试没问题后再执行ansible-playbook /PATH/TO/PLAYBOOK.yml命令。

(二)触发器

 需要触发才能执行的任务,当之前定义在tasks中的任务执行完成后,若希望在基础上触发其他的任务,这时就需要定义handlers。

例如,当通过ansible的模块对目标主机的配置文件进行修改之后,如果任务执行成功,可以触发一个触发器,在触发器中定义目标主机的服务重启操作,以便配置文件生效,handlers触发器具有以下优点:

handlers是Ansible提供的条件机制之一,handlers和task很类似,但是他在被task通知的时候才会触发执行;

handlers只会在所有任务执行完成后执行,而且即使被通知了很多次,它也只会执行一次,handlers按照定义的顺序依次执行。

handlers触发器的实验实例如下:

vim /etc/ansible/httpd.yml

配置如下:

脚本注释:

--- #固定开头格式

- hosts: hu1 #指定运行主机为Rich组

  remote_user: root #指定对端运行用户的身份

  tasks: #任务列表

    - name: reset httpd #定义任务名称

      command: sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf #模块为command:使用sed命令替换监听端口为8080

      notify: #完成任务后调用restart httpd server触发器

        - reset httpd

  handlers: #配置触发器

    - name: reset httpd #指定触发器名字

      service: name=httpd state=restarted #指定触发条件为重启httpd服务

... #结尾句

实  验:

1、预测试:

ansible-playbook -C /etc/ansible/httpd.yml

2、执行测试:

ansible-playbook  /etc/ansible/httpd.yml

3、结果验证

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27041.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker基本概念

1、容器化 如何确保应用能够在开发环境和生产环境中运行和通过质量检测?并在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复? 答案:使用容器,Docker之所以发展如此,是因为它…

论文笔记--PTR: Prompt Tuning with Rules for Text Classification

论文笔记--PTR: Prompt Tuning with Rules for Text Classification 1. 文章简介2. 文章概括3 文章重点技术3.1 Pre-training & Fine-tuning & Prompt-based Fine Tuning3.2 PTR(Prompt Tuning with Rules)3.3 task decomposition3.4 Sub-prompts composition3.5 多个l…

深度学习——自编码器AutoEncoder

基本概念 概述 自编码器(Autoencoder)是一种无监督学习的神经网络模型,用于学习数据的低维表示。它由编码器(Encoder)和解码器(Decoder)两部分组成,通过将输入数据压缩到低维编码空…

使用shell监控应用运行状态通过企业微信接收监控通知

目的:编写shell脚本来监控应用服务运行状态,若是应用异常则自动重启应用通过企业微信接收监控告警通知 知识要点: 使用shell脚本监控应用服务使用shell脚本自动恢复异常服务通过企业微信通知接收监控结果shell脚本使用数组知识,…

Word 常用操作总结

文章目录 【公式篇】编号右对齐自动编号多行公式对齐编号右靠下编号右居中 公式引用更新编号 【公式篇】 简述:通过“#换行”的方式使编号右对齐,通过插入题注的方式使其自动编号,通过交叉引用的方式引用公式编号。 编号右对齐自动编号 在公…

盛元广通科研院所实验室安全管理系统LIMS

实验室的管理与安全直接影响着教学与科研质量,从科研角度出发,实验室安全风险特点与生产现场安全风险特点存在较大差异,危险源种类复杂实验内容变更频繁,缺乏有效监管,实验室安全运行及管理长期游离于重点监管领域外&a…

Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】

上一章: Django实现接口自动化平台(十一)项目模块Projects序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解,查看本章内容时,要结合整体项目代码来看: python django vue…

【Java面试丨并发编程】线程中并发安全

一、Synchronized关键字的底层原理 1. Synchronized的作用 Synchronized【对象锁】采用互斥的方式让同一时刻至多只有一个线程能持有【对象锁】,其他线程再想获取这个【对象锁】时就会阻塞住 2. Monitor Synchronized【对象锁】底层是由Monitor实现,…

计算机网络——VLan介绍

学习视频: 网工必会,十分钟搞明白,最常用的VLAN技术_哔哩哔哩_bilibili 技术总结:VLAN,网络中最常用的技术,没有之一_哔哩哔哩_bilibili 全国也没几个比我讲得好的:VLAN虚拟局域网 本来补充了…

巧妙使用 CSS 渐变来实现波浪动画

目录 一、波浪的原理 二、曲面的绘制 三、波浪动画 四、文字波浪动画 五、总结一下 参考资料 之前看到coco[1]的这样一篇文章:纯 CSS 实现波浪效果![2],非常巧妙,通过改变border-radius和不断旋转实现的波浪效果&#xff0c…

【unity细节】分不清楚__世界坐标,自身坐标,Vector3,transform和translate?

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏:unity细节和bug ⭐世界坐标系transform和自身坐标Trasform.local和Vector3⭐ 文章目录 ⭐世界坐标…

excel常用操作备忘

excel操作: 1、快速填充多列公式:选中多列后,按ctrlD填 充。 2、快速删除空行:全选行,按ctrlG,空值项前边打上钩,点确定,针对选中的空行,鼠标右击,点删除&…