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

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

原创
作者头像
用户1880875
修改2021-07-06 11:01:10
1.7K0
修改2021-07-06 11:01:10
举报
文章被收录于专栏:用户1880875的专栏

1.1 roles与角色扮演

1.1.1 角色简介

角色(roles)是Ansible自1.2版本开始引入的新特性,用于层次性,结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令引入即可。

角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。主要使用场景是代码复用度较高的情况下。

1.1.2 目录结构

一个项目的目录结构一般如图1.7所示。

图1.1 目录结构

其中各目录的功能说明如下。

l files目录

存放由copy或script等模块调用的文件。

l templates目录

templates模块会自动在此目录中寻找Jinja2模板文件。

l tasks目录

任务列表目录,这里应该至少包含一个名为main.yml的文件定义此角色的任务列表。

l handlers目录

定义剧本的处理程序。

l vars目录

变量目录,此处应当包含一个main.yml文件,用于定义此角色用到的变量。

l meta目录

该目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系,注意1.3版本及其以后的版本才支持该项目录。

l default目录

默认变量目录。

下面以远程部署Nginx为例演示其用法。

1.1.1 通过roles远程部署Nginx

1.准备目录结构

首先在Ansible服务器中创建roles目录结构,并创建基础的.yaml文件,便于后续配置使用。具体操作如下所示。

#搭建roles的基础目录结构

[root@ansible ~]# mkdir roles/nginx/{files,handlers,tasks,templates,vars} -p

#创建所需的基本.yaml文件

[root@ansible ~]# touch roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml

创建完成后,将Ngnx配置文件的主页信息修改为“1234”,便于后续观察实验效果。

#[root@ansible ~]# echo 1234 > roles/nginx/files/index.html

修改完成后,安装Nginx,并将其配置文件移至可套用的/templates文件夹下,代码如下所示。

[root@ansible ~]# yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2

全部设置完成后,查看当前准备完成的目录结构,代码及结果如下所示。

#此处通过tree查看目录结构,没有该软件的可以先安装。

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

#查看目录结构

[root@ansible ~]# tree roles/

roles/

├── nginx

│ ├── files

│ │ └── index.html

│ ├── handlers

│ │ └── main.yaml

│ ├── tasks

│ │ └── main.yaml

│ ├── templates

│ │ └── nginx.conf.j2

│ └── vars

│ └── main.yaml

└── site.yaml

6 directories, 6 files

2.编写任务

准备工作完成之后,即可开始编写任务,任务内容及含义如下所示。

[root@ansible ~]# vim roles/nginx/tasks/main.yaml

[root@ansible ~]# cat roles/nginx/tasks/main.yaml

---

- name: install epel-release packge #安装epel源,因为nginx的安装需要该源。

yum: name=epel-release state=latest

- name: install nginx packge #安装Nginx

yum: name=nginx state=latest

- name: copy index.html #将更改后的Nginx主页拷贝至客户机

copy: src=index.html dest=/usr/share/nginx/html/index.html

- name: copy nginx.conf template #拷贝配置文件,并引用处理程序

template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf

notify: restart nginx

- name: make sure nginx service running #保持Nginx服务开启

service: name=nginx state=started enabled=yes

该.yaml文件中许多内容都是以文件路径代替的。执行时,Ansible将会安装任务中的顺序,从各个文件中读取并拷贝内容。这样做的好处是,当一部分内容需要修改时,只需要修改Ansible服务器中的文件母版,再次执行剧本即可完成所有客户机中的修改任务。注意这里调用的处理程序需要在handlers文件目录下进行定义。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 roles与角色扮演
    • 1.1.1 角色简介
      • 1.1.2 目录结构
        • 1.1.1 通过roles远程部署Nginx
        相关产品与服务
        云服务器
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档