自动化运维ansible(role)

一、role的介绍

1、Roles称为角色,本质上是为简化playbook配置文件而产生的一种特殊的方法。

2、简单来说,roles就是将原本在一个yaml中的文件进行规则化分散,封装到不同的目录下,从而简化playbook的yaml配置文件大小。从其实现方法上来看,类似于软件开发上的代码封装。

3、其格式下的目录结构是特定的,必须包含tasks、variables、handlers、templates、files目录;使用时只需要遵循其文件结构配置自己的定制化操作。

二、目录说明

bash 复制代码
defaults/main.yml:设置默认变量的地方;默认变量的优先级在所有的变量中是最低的,用于定义一些需要被覆盖的变量;
files:Ansible中unarchive、copy等模块会自动来这里找文件,从而我们不必写绝对路径,只需写文件名
handlers/main.yml:存放tasks中的notify指定的内容
meta/main.yml:定义role依赖关系的文件
tasks/main.yml:存放playbook的目录,其中main.yml是主入口文件,在main.yml中导入其他yml文件,要采用import_tasks关键字,include将要弃用了
templates:存放模板文件;template模块会将模板文件中的变量替换为实际值,然后覆盖到客户机指定路径上
vars/main.yml:定义role中需要使用到的变量

三、nginx安装示例

bash 复制代码
[root@192 role]# tree nginx/
nginx/
├── files
│   └── inex.html
├── handles
│   └── main.yml
├── install-nginx.yml
├── tasks
│   ├── conf.yml
│   ├── data.yml
│   ├── install.yml
│   ├── main.yml
│   ├── service.yml
│   └── user.yml
├── templates
│   └── nginx.conf.j2
└── vars
    └── main.yml
bash 复制代码
[root@192 role]# cat nginx/files/inex.html
<h1>welcome to beijing!</h1>
bash 复制代码
[root@192 role]# cat nginx/tasks/conf.yml
- name: config file
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
  notify: restart #触发notify和handlers两个角色
bash 复制代码
[root@192 role]# cat nginx/tasks/data.yml
- name: install package
  yum: name=nginx
bash 复制代码
[root@192 role]# cat nginx/tasks/install.yml
- name: yum 安装nginx
  yum: name=nginx
bash 复制代码
[root@192 role]# cat nginx/tasks/main.yml
- include: install.yml
- include: conf.yml
- include: service.yml
- include: data.yml
bash 复制代码
[root@192 role]# cat nginx/tasks/service.yml
- name: service
  service: name=nginx state=started
bash 复制代码
[root@192 role]# cat nginx/tasks/user.yml
- name: 创建用户
  vars_file:
    - /home/admin/ansible/roles/nginx/vars/main.yml
  user: name={{ username }} system=yes group={{ groupname }}
bash 复制代码
[root@192 role]# cat nginx/templates/nginx.conf.j2
user {{username}};
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}

http {
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfile            on;
tcp_nopush          on;
tcp_nodelay         on;
keepalive_timeout   65;
types_hash_max_size 4096;

include             /etc/nginx/mime.types;
default_type        application/octet-stream;

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

server {
listen       8080;
listen       [::]:80;
server_name  _;
root         /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

error_page 404 /404.html;
location = /404.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

}
bash 复制代码
[root@192 role]# cat nginx/vars/main.yml
username: daemon
bash 复制代码
[root@192 role]# cat nginx/install-nginx.yml
- hosts: harbor
  remote_user: root

  roles:
    - role: nginx

当nginx启动成功后增加handles中文件

bash 复制代码
[root@192 role]# cat nginx/handles/main.yml
- name: restart
  service: name=nginx state=restarted
相关推荐
峰顶听歌的鲸鱼30 分钟前
38.Shell脚本编程2
linux·运维·服务器·笔记·学习方法
dessler38 分钟前
Elasticsearch(ES)简介与入门
linux·运维·hdfs
晴天¥1 小时前
Linux操作系统如何使用ISO镜像文件来搭建本地镜像源?
linux·运维·centos
Black蜡笔小新1 小时前
破解工地防盗难题:如何利用EasyCVR实现视频监控统一管理?
运维·音视频
Cx330❀1 小时前
《Linux基础入门指令》:从零开始理解Linux系统
linux·运维·服务器·经验分享
error:(2 小时前
【Linux命令从入门到精通系列指南】export 命令详解:环境变量管理的核心利器
linux·运维·服务器
Yeats_Liao2 小时前
遗留系统微服务改造(四):从单体到微服务的演进之路
运维·微服务·架构
2301_793167993 小时前
网络管理部分
linux·运维·服务器·网络·php
序属秋秋秋3 小时前
《Linux系统编程之入门基础》【Linux的前世今生】
linux·运维·服务器·开源·unix·gnu
搬砖的小码农_Sky3 小时前
Windows操作系统上`ping`命令的用法详解
运维·网络·windows