栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

ansible基础(六)-roles的作用?

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ansible基础(六)-roles的作用?

概述

        当我们使用包管理工具安装完ansible时,/etc/ansible目录会自动创建。目录下会有inventory对应的hosts文件;ansible的配置文件ansible.cfg;和roles目录。那这个roles目录是干什么的?

roles的意思是角色。其实其作用是将为了完成一件事、一个功能的多个tasks固化成一个roles,以便以后在playbooks中复用。这样需要反复操作且可以固化的一组tasks,就不需要在多个playbook总反复写了,直接调用固化的roles。如中间件安装、服务器初始环境配置。

目录结构

目录结构参考:Ansible--Ansible之Roles - 别来无恙- - 博客园

各目录含义

roles:          <--所有的角色必须放在roles目录下,这个目录可以自定义位置,默认的位置在/etc/ansible/roles
  project:      <---具体的角色项目名称,比如nginx、tomcat、php
    files:     <--用来存放由copy模块或script模块调用的文件。
    templates: <--用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。
    tasks:     <--此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件。
      main.yml
    handlers:  <--此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作。
      main.yml
    vars:      <--此目录应当包含一个main.yml文件,用于定义此角色用到的变量。
      main.yml
    defaults:  <--此目录应当包含一个main.yml文件,用于为当前角色设定默认变量。
      main.yml
    meta:      <--此目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系。
      main.yml

示例

使用roles安装一台nginx服务器。将演示files、templates、tasks、vars。

最终实现:安装nginx --> 开启8888端口 --> 为8888端口编辑自定义页面

mkdir -p /etc/ansible/roles/nginx-install/{tasks,files,templates,vars}

cd /etc/ansible/roles/nginx-install

(1)编写任务文件

vim tasks/main.yml

安装nginx、添加配置文件、验证&重载nginx

---
- name: yum nginx
  yum:
    name: nginx
    state: latest

- name: enable nginx
  service:
    name: nginx
    enabled: yes

- name: start nginx
  service:
    name: nginx
    state: started

- name: copy web.html file
  copy:
    src: install-check.html
    dest: /etc/nginx/install-check.html
    owner: root
    group: root
    mode: u=rw,g=r,o=r

- name: mkdir config directory
  file:
    path: /etc/nginx/site-enabled
    state: directory

- name: copy config file
  template:
    src: install-check.conf.j2
    dest: /etc/nginx/site-enabled/install-check.conf

- name: nginx config file add "include"
  lineinfile:
    path: /etc/nginx/nginx.conf
    insertafter: 'include /etc/nginx/conf.d/'
    line: 'include /etc/nginx/site-enabled/*.conf;'

- name: nginx config test
  command: nginx -t

- name: nginx reload
  service:
    name: nginx
    state: reloaded

(2)编写配置文件模板 -- 这是个jinja2模板

vim templates/install-check.conf.j2

server {
  listen {{ nginx_port }};

  location / {
    root {{ nginx_root }};
  }
}

(3)编写变量文件

vim vars/main.yml

nginx_port: 8888
nginx_root: /etc/nginx/

(4)编写自定义站点配置文件

vim files/install-check.html

install successful !!!

(5)最终目录结构

[root@ansible-server roles]# tree nginx-install/
nginx-install/
├── files
│   └── install-check.html
├── tasks
│   └── main.yml
├── templates
│   └── install-check.conf.j2
└── vars
    └── main.yml

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836519.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号