ansible roles 简介
Ansible Roles是一种组织和管理Ansible Playbooks的方法。它们允许将相关的配置和任务分组到一个可重用的单元中,使得代码更加模块化和可维护。
一个Ansible Role包含了一组预定义的变量、任务和文件结构。它可以被其他Playbooks调用和使用,从而实现代码的重用。Roles可以用于定义各种不同的配置,从简单的软件安装和配置到复杂的系统部署。
Roles通常包含以下几个重要的目录和文件:
- tasks:包含了要执行的任务列表,可以是Ansible模块的调用或者是其他角色的引用。
- handlers:包含了用于响应特定事件的任务,比如重新启动服务或者重新加载配置文件。
- vars:包含了角色的变量定义,这些变量可以在角色的其他部分中引用。
- defaults:包含了角色的默认变量值。
- templates:包含了配置文件的模板,可以使用Jinja2模板引擎来渲染这些文件。
- files:包含了需要复制到被管理节点的文件。
使用Roles可以极大地简化Ansible代码的编写和维护工作,提高代码的可读性和可重用性。同时,Roles还使得团队协作更加容易,可以方便地共享和复用角色。
ansible roles 语法
Ansible roles 是一种组织和结构化Ansible playbook的方法。它允许您将任务、变量和模板组织到可重复使用的模块中,以便在多个playbook中重复使用。
下面是一个典型的Ansible role的目录结构:
roles/
myrole/
tasks/
main.yml
vars/
main.yml
files/
myfile.txt
templates/
mytemplate.j2
handlers/
main.yml
meta/
main.yml
在此目录结构中,各个目录的作用如下:
tasks/
:包含执行任务的YAML文件。vars/
:包含变量定义的YAML文件。files/
:包含要传输到目标主机的文件。templates/
:包含要在目标主机上生成的模板。handlers/
:包含处理器定义的YAML文件。meta/
:包含角色元数据的YAML文件。
在main.yml
文件中,您可以定义要在角色中执行的任务、变量和文件。
通过使用role,您可以在playbooks中使用include_role
或roles
关键字来导入并使用role。
以下是一个使用role的示例:
- name: Example playbook
hosts: web
roles:
- myrole
上面的示例将导入名为myrole
的role,并在web
组的主机上运行。
1、使用ansible playbook部署httpd,要求httpd.conf由模板生成,对应的servername改为受控端IP
cd /etc/ansible/roles
ansible-galaxy init httpd
主yaml rolets.yml
---
- hosts: h1
remote_user: root
roles:
- httpd
---
# tasks file for httpd
- name: install httpd package
yum: name={
{
package}} state=latest
- name: install configure file
#使用template模板
template: src=/etc/ansible/h