前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux云计算运维架构师(连载)-自动化运维ansible-12

Linux云计算运维架构师(连载)-自动化运维ansible-12

原创
作者头像
用户1880875
修改2021-07-05 14:30:51
1.1K0
修改2021-07-05 14:30:51
举报

1.1 YAML语言

1.1.1 YAML概述

YAML是“YAML Ain't a Markup Language”(YAML不是一种标记语言)的递归缩写,通常在Ansible配置中都需要使用YAML语言,其文件后缀为.yml或.yaml。

YAML的语法和其他高级语言类似,有自己的逻辑及语法要求,具体如下所示。

l 基本语法

? 大小写敏感。

? 使用缩进表示层级关系。

? 缩进不允许使用tab,只允许空格。

? 缩进的空格数不重要,只要相同层级的元素左对齐即可。

? “#”表示注释。

l 数据类型(YAML支持的数据类型)

? 对象:键值对的集合,又称为映射(mapping)、哈希(hashes)、字典(dictionary)。

? 数组:一组按次序排列的值,又称为序列(sequence)、列表(list)。

? 纯量(scalars):单个的、不可再分的值。

1.1.2 YAML对象

在YAML中,对象键值对使用冒号结构表示,并且在冒号的后方需要加一个空格,其语法如下所示。

key: value

除了一对一的定义之外,YAML也支持通过一个对象名称表示多个键值对,语法结构如下所示。

key: {key1: value1,key2: value2,...}

若想要表示对象间的层级关系,可以使用缩进来完成,语法如下。

key:

child-key1: value1

child-key2: value2

1.1.3 YAML数组

在YAML的配置文件中,以“-”开头的行表示构成一个数组,如下所示。

- A

- B

- C

YAML支持多维数组,可以在行内表示,结构如下所示。

key: [value1, value2, ...]

此处通过一个例子来进行说明,示例如下所示。

Classroom:

-

id: 2021001

name: xiaoming

-

id: 2021002

name: xiaohua

该段代码定义的classroom是一个数组,该数组由id及name两个属性构成。

1.1.4 playbook

使用Ansible完成一个任务时,往往需要多条命令来进行组合。例如部署httpd服务,需要多个模块(一个模块也可以称之为task)提供功能来完成,而playbook就是组织多个task的容器。简单来说,playbook就算一个采用YAML实现的,有着特定的组织格式的文件。playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。

playbook的基础组件如下所示。

l Hosts:运行执行任务(task)的目标主机。

l remote_user:在远程主机上执行任务的用户。

l tasks:任务列表。

l handlers:任务,与tasks不同的是只有在接受到通知时才会被触发。

l templates:使用模板语言的文本文件,使用jinja2语法。

l variables:变量,变量替换{{ variable_name }}。

1.2 playbook实例

下面将通过YAML语言编写一个简单的playbook。

1.2.1 准备工作

(1)清理环境

清理环境,将客户机中原有的Apache进行删除,代码及结果如下所示。

[root@ansible ~]# ansible all -m yum -a 'name=httpd state=removed' -o

host1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "msg": "", "rc": 0, "results": ["httpd is not installed"]}

host2 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "changes": {"removed": ["httpd"]}, "msg": "", "rc": 0, "results": ["已加载插件:fastestmirror\n正在解决依赖关系\n--> 正在检查事务\n---> 软件包 httpd.x86_64.0.2.4.6-97.el7.centos 将被 删除\n--> 解决依赖关系完成\n\n依赖关系解决\n\n================================================================================\n Package 架构 版本 源 大小\n================================================================================\n正在删除:\n httpd x86_64 2.4.6-97.el7.centos @updates 9.4 M\n\n事务概要\n================================================================================\n移除 1 软件包\n\n安装大小:9.4 M\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n 正在删除 : httpd-2.4.6-97.el7.centos.x86_64 1/1 \n 验证中 : httpd-2.4.6-97.el7.centos.x86_64 1/1 \n\n删除:\n httpd.x86_64 0:2.4.6-97.el7.centos \n\n完毕!\n"]}

host3······此处省略部分代码······

(2)准备Apache的配置文件

清理完成后,在Ansible服务器中安装Apache,以便获取Apache服务的配置文件,代码如下所示。

[root@ansible ~]# yum install -y httpd

······此处省略部分代码······

已安装:

httpd.x86_64 0:2.4.6-97.el7.centos

作为依赖被安装:

httpd-tools.x86_64 0:2.4.6-97.el7.centos

完毕!

安装完成后,创建一个名为apache的文件夹,并将apache的配置文件拷贝到该目录作为备用,具体代码如下所示。

#创建目录

[root@ansible ~]# mkdir apache

#进入目录

[root@ansible ~]# cd apache

#复制配置文件到当前路径

[root@ansible apache]# cp -rf /etc/httpd/conf/httpd.conf .

Apache默认工作在80端口,此处将其修改为8080,便于后续观察实验效果。修改完成后可以通过grep命令进行查看,具体如下。

[root@ansible apache]# grep '^Listen' httpd.conf

Listen 80

#修改端口为8080,大概在第42行左右

[root@ansible apache]# vim httpd.conf

[root@ansible apache]# grep '^Listen' httpd.conf

Listen 8080

[root@ansible apache]#

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 YAML语言
    • 1.1.1 YAML概述
      • 1.1.2 YAML对象
        • 1.1.3 YAML数组
          • 1.1.4 playbook
          • 1.2 playbook实例
            • 1.2.1 准备工作
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
            http://www.vxiaotou.com