ansible:roles学习笔记

简介: ansible:roles学习笔记

roles:

用于层次性、结构化的组织playbook。roles能根据层次结构自动装载变量文件、task以及handlers等。

要使用roles只需要在playbook中使用include指令即可。

简单来说就是把一个playbook拆分成一个个不同的模块,使用时直接调用即可。

roles使用:

  • 首先你要有一个roles目录,在哪无要求,官方有个推荐的可用可不用,不如我在/下创建
mkdir -p /ansible/roles
  • 还可以按功能创建项目文件夹
[root@localhost ~]# tree /ansible/
/ansible/
└── roles
    ├── httpd
    └── mysql
3 directories, 0 files
  • 一个项目下可以有以下子目录

files:存放copy或script模块等调用文件

templates:模板文件存放目录

tasks:定义task,roles 的基本元素,至少包含一个main.yml文件;其他文件需在此文件通过include进行包含

vars:定义变量,至少包含一个main.yml文件;其他文件需在此文件通过include进行包含

meta:定义当前角色的特殊设定及依赖关系,至少包含一个main.yml文件;其他文件需在此文件通过include进行包含

default:设定默认变量时使用此目录中的main.yml

以nginx服务为例做roles

  • 基本功能实现:用户、组、安装服务、模板文件、启动服务
  • 根据需求,我们需要用到task目录和templates目录
[root@localhost ~]# tree /ansible/
/ansible/
└── roles
    ├── httpd
    ├── mysql
    └── nginx
        ├── tasks
        └── templates
6 directories, 0 files
  • 进入到tasks目录中创建任务

任务一:创建组

[root@localhost tasks]# cat group.yml 
---
- name: create group
  group: name=nginx

任务二:创建用户

[root@localhost tasks]# cat user.yml 
---
- name: create user
  user: name=nginx group=nginx system=yes shell=/sbin/nologin

任务三:安装服务

[root@localhost tasks]# cat yum.yml 
---
- name: install nginx
  yum: name=nginx

任务四:服务启动

[root@localhost tasks]# cat start.yml 
---
- name: start service
  service: name=nginx state=started enabled=yes

任务五:重启服务(可以放在handlers里)

[root@localhost tasks]# cat restart.yml 
---
- name: restart service
  service: name=nginx state=restarted

任务六:调用模板

[root@localhost tasks]# cat temp.yml 
---
- name: copy conf
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
  • 进入模板文件夹目录中创建模板文件

模板一:创建nginx配置文件模板(以下只说明改动部分)

# 启动的进程数,其他配置不变
worker_processes {{ ansible_processor_vcpus+2 }};
  • tasks目录创建总的调用文件main.yml
[root@localhost tasks]# cat main.yml 
---
- include: group.yml
- include: user.yml
- include: yum.yml
- include: temp.yml
- include: start.yml
  • 回到ansible目录下创建剧本(与roles平级)

创建nginx_roles.yml剧本

[root@localhost ansible]# cat nginx_roles.yml 
---
- hosts: web
  remote_user: root
  roles:
    - role: nginx
  • 测试执行剧本,测试成功后就可以实际执行了(我的是测试成功的)
[root@localhost ansible]# ansible-playbook -C nginx_roles.yml
# 测试成功后执行
[root@localhost ansible]# ansible-playbook nginx_roles.yml
  • 此roles的所有文件结构
[root@localhost ~]# tree /ansible/
/ansible/
├── nginx_roles.yml
└── roles
    ├── httpd
    ├── mysql
    └── nginx
        ├── tasks
        │   ├── group.yml
        │   ├── main.yml
        │   ├── restart.yml
        │   ├── start.yml
        │   ├── temp.yml
        │   ├── user.yml
        │   └── yum.yml
        └── templates
            └── nginx.conf.j2
6 directories, 9 files
  • 其他的项目服务做法类似就不写了

同时运行多个角色

  • 比如我要在远程主机上同时安装nginx和PHP两个服务
---
- hosts: web
  remote_user: root
  roles:
    - role: nginx
    - role: php
  • 不如我想在本项目中调用其他项目中的文件,可以这样写:
include: roles/httpd/tasks/file.yml
  • 标签:tags,可以给项目定义标签,调用时使用标签,运行时加-t 标签就会只执行带有标签的项目,而且还可以加条件判断等
roles:
  - { role: nginx, tags: ['web','nginx'] }

变量

  • 可以在vars目录里创建vars.yml存放变量,方便直接调用

触发器:

  • 触发器的handlers单独存放在handlers文件夹里
# 例如:
- name: restart service
  service: name=nginx state=restarted

。。。emm,后面也没什么了,可以尝试写一些简单的项目了。拜拜

目录
相关文章
|
3月前
|
运维 应用服务中间件 Apache
震撼登场!Ansible roles 化身自动化运维神器,打破传统束缚,开启运维新时代!
【8月更文挑战第9天】Ansible是一款强大的自动化运维工具,其Roles功能将复杂任务分解为可复用模块,提升代码的可读性、可维护性和可扩展性。通过创建结构化的目录,如tasks、handlers和vars等,可以清晰地组织配置与任务。例如,为Web服务器创建一个Role,包含安装Apache、启动服务等任务,并可在不同的Playbook中重复使用此Role,简化大型集群的配置管理工作,提高效率和质量。
44 6
|
运维 负载均衡 关系型数据库
【运维知识进阶篇】用Ansible Roles重构LNMP架构(Linux+Nginx+Mariadb+PHP),实现4个项目一键部署
【运维知识进阶篇】用Ansible Roles重构LNMP架构(Linux+Nginx+Mariadb+PHP),实现4个项目一键部署
176 0
|
存储 运维 应用服务中间件
【运维知识进阶篇】Ansible Roles详解
【运维知识进阶篇】Ansible Roles详解
140 0
|
持续交付
ansible roles 自动化部署http服务
ansible roles 自动化部署http服务
110 0
|
运维 关系型数据库 MySQL
自动化运维工具-Ansible的Roles的使用
自动化运维工具-Ansible的Roles的使用
142 0
自动化运维工具-Ansible的Roles的使用
|
应用服务中间件 Linux 数据安全/隐私保护
ansible:playbook学习笔记
ansible:playbook学习笔记
137 0
|
应用服务中间件 PHP nginx
Ansible之Roles
Ansible之Roles
87 0
Ansible之Roles
|
运维 安全 测试技术
运维工程师日常工作解析及 Ansible 全面介绍| 学习笔记
快速学习运维工程师日常工作解析及 Ansible 全面介绍
运维工程师日常工作解析及 Ansible 全面介绍| 学习笔记
|
XML NoSQL 关系型数据库
实现 Ansible 企业级用法 playbook| 学习笔记
快速学习实现 Ansible 企业级用法 playbook
实现 Ansible 企业级用法 playbook| 学习笔记
|
缓存 运维 关系型数据库
Ansible 实现 role 运维自动化高级用法| 学习笔记
快速学习 Ansible 实现 role 运维自动化高级用法
Ansible 实现 role 运维自动化高级用法| 学习笔记