自动化运维ansible(role)

编程入门 行业动态 更新时间:2024-10-24 03:21:29

自动化运维<a href=https://www.elefans.com/category/jswz/34/1743138.html style=ansible(role)"/>

自动化运维ansible(role)

一、role的介绍
1、Roles称为角色,本质上是为简化playbook配置文件而产生的一种特殊的方法。
2、简单来说,roles就是将原本在一个yaml中的文件进行规则化分散,封装到不同的目录下,从而简化playbook的yaml配置文件大小。从其实现方法上来看,类似于软件开发上的代码封装。
3、其格式下的目录结构是特定的,必须包含tasks、variables、handlers、templates、files目录;使用时只需要遵循其文件结构配置自己的定制化操作。
二、目录说明

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安装示例

[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
[root@192 role]# cat nginx/files/inex.html
<h1>welcome to beijing!</h1>
[root@192 role]# cat nginx/tasks/conf.yml
- name: config filetemplate: src=nginx.conf.j2 dest=/etc/nginx/nginx.confnotify: restart #触发notify和handlers两个角色
[root@192 role]# cat nginx/tasks/data.yml
- name: install packageyum: name=nginx
[root@192 role]# cat nginx/tasks/install.yml
- name: yum 安装nginxyum: name=nginx
[root@192 role]# cat nginx/tasks/main.yml
- include: install.yml
- include: conf.yml
- include: service.yml
- include: data.yml
[root@192 role]# cat nginx/tasks/service.yml
- name: serviceservice: name=nginx state=started
[root@192 role]# cat nginx/tasks/user.yml
- name: 创建用户vars_file:- /home/admin/ansible/roles/nginx/vars/main.ymluser: name={{ username }} system=yes group={{ groupname }}
[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 .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 {
}
}}
[root@192 role]# cat nginx/vars/main.yml
username: daemon
[root@192 role]# cat nginx/install-nginx.yml
- hosts: harborremote_user: rootroles:- role: nginx

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

[root@192 role]# cat nginx/handles/main.yml
- name: restartservice: name=nginx state=restarted

更多推荐

自动化运维ansible(role)

本文发布于:2023-12-05 02:46:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1662818.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:ansible   role

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!