自动化运维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
相关推荐
万岳软件开发小城27 分钟前
AI数字人系统源码如何实现批量视频生成?任务队列与自动化生产流程解析
人工智能·自动化·语音识别·ai数字人小程序·ai数字人系统源码·ai数字人软件开发·ai数字人平台开发
福建佰胜张工1 小时前
深度解析 Allen-Bradley 150-B135NBDA 智能电机控制器:选型、参数与工业应用
运维·数据库·单片机·嵌入式硬件·安全·自动化
wefg11 小时前
【Docker】镜像相关指令
运维·docker·容器
feng_you_ying_li1 小时前
linux之网络层
linux·运维·网络
西瓜拿铁好喝1 小时前
AI 办公和 RPA 不是一回事:自动化与智能化的分工
人工智能·自动化·rpa
未来之窗软件服务1 小时前
Linux 运维日志删除的多种方式—东方仙盟
linux·运维·服务器·仙盟创梦ide·东方仙盟
卓豪终端管理2 小时前
IT 运维视角下的终端数据安全:能力框架与落地清单
运维
小雉系统2 小时前
BcoreOS实战:用一个升级包,让Rocky Linux跑进Debian服务器
linux·运维·服务器·debian
甜到心里的蛋糕2 小时前
从 QQ 机器人到 B 站 AI 运营:一套可复现的视频流水线踩坑实录
运维·人工智能·python·自动化·视频制作
QYR-分析2 小时前
26.2% 高增!场内及园区无人物流车,厂内短驳自动化的 L4 货运载体
运维·自动化