运维自动化-Ansible roles

一、简介

Ansible1.2版本后引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中

二、roles目录结构

官方推荐在/etc/ansible/roles目录下使用roles,但不是必须的,roles目录可以自行创建

???? tasks-包含角色要执行的任务的主要列表,至少应该有main.yml文件,有其他的yml文件通过include进行包含
???? handlers-包含处理程序(notify触发的任务),该角色甚至该角色之外的任何地方都可以使用这些处理程序。至少应该有main.yml文件
???? defaults-角色的默认变量,至少应该有main.yml文件
???? vars-角色的其他变量,至少应该有main.yml文件
???? files-包含可以通过此角色部署的文件。
???? templates-包含可以通过此角色部署的模板。
???? meta-为此角色定义一些元数据,至少应该有main.yml文件

以部署grafana+influxdb+telegraf为例
目录结构如下:

在项目目录中,剧本与roles目录平级,roles目录下包含各角色目录,各角色目录中包含使用到的files,handlers,tasks,templates,vars;对于不使用的meta和defaults目录,最好排除。

三、roles示例

以部署grafana+influxdb+telegraf为例

3.1、需求

在node2上部署三件套,在node3上部署influxdb,配置文件中的有些参数使用变量,配置文件使用模板,更改配置文件后重启服务

3.2、部署剧本 deploy.yml

---
 - hosts: node2
   remote_user: root
   roles:
   - grafana
   - influxdb
   - telegraf
- hosts: node3
   remote_user: root
   roles:
   - influxdb

3.3、角色以grafana为例

roles/grafana/tasks/main.yml文件

---
- name: "copy grafana to destination server"
  copy:
    src: grafana-6.3.0-1.x86_64.rpm
    dest: /tmp/
- name: "Install the grafana rpm package locally"
  yum:
    name: /tmp/grafana-6.3.0-1.x86_64.rpm
    state: present
- name: "template the grafana.ini"
  template:
    src: grafana.ini.j2
    dest: /etc/grafana/grafana.ini
  notify: restart grafana

- name: "enable grafana"
  systemd:
    name: grafana-server
    state: restarted
    daemon_reload: yes
    enabled: yes

roles/grafana/templates/grafana.ini.j2模板配置文件

# The http port  to use
http_port = {{ http_port }}

roles/grafana/vars/main.yml 文件

http_port: 8000

roles/grafana/handlers/main.yml文件

- name: restart grafana
  systemd:
    name: grafana-server
    state: restarted
    daemon_reload: yes

3.4、hosts文件

/etc/ansible/hosts
[node2]
192.168.143.131
[node3]
192.168.143.132 

3.5、执行deploy.yml

ansible-playbook deploy.yml

参考:马哥ansible视频

原文地址:https://blog.51cto.com/jiayimeng/2472068

时间: 2024-10-10 21:47:09

运维自动化-Ansible roles的相关文章

运维自动化-Ansible ( 一 )

前言 天天说运维,究竟是干什么的?先看看工作流程呗.一般来说,运维工程师在一家企业里属于个位数的岗位,甚至只有一个.面对生产中NNN台服务器,NN个人员,工作量也是非常大的.所以嘛,图中的我好歹也会配置盔甲的. 这就是我主要干的事情(呵呵) 就算你会很厉害的脚本,面对成百上千,甚至上万的主机,效率问题将会困扰你的.因此,有没有解放的工具呢? Ansible 是什么 Ansible 简单的说是一个配置管理系统(configuration management system).你只需要可以使用 ss

运维自动化-Ansible ( 四 )

模板templates 功能:根据模块文件动态生成对应的配置文件 ? Jinja2语言,使用字面量,有下面形式 字符串:使用单引号或双引号 数字:整数,浮点数 列表:[item1, item2, ...] 元组:(item1, item2, ...) 字典:{key1:value1, key2:value2, ...} 布尔型:true/false ? 算术运算:+, -, *, /, //, %, ** ? 比较操作:==, !=, >, >=, <, <= ? 逻辑运算:and

运维自动化-Ansible ( 二 )

此章节的版本信息如下: ansible 2.4.2.0 python version = 2.7.5 (default, Aug 4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] ping 功能:尝试连接到主机,验证并返回pong成功. -对于Windows目标,请改用win_ping模块 -不使用icmp协议,使用ssh协议. 例子: #ansible db -m ping 7-db-3.hunk.tech | SUCCESS

运维自动化、虚拟化

一.运维自动化:ansible.saltstack  1.安装Ansible: rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install ansible 2. 安装saltstack: rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum inst

&lt;zz&gt;Ansible 运维自动化 ( 配置管理工具 )

from http://www.cnblogs.com/wangxiaoqiangs/p/5685239.html 简介: 当下有许多的运维自动化工具( 配置管理 ),例如:Ansible.SaltStack.Puppet.Fabric 等. Ansible 一种集成 IT 系统的配置管理.应用部署.执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立. Ansible 基于 Python 语言实现,由 Pa

运维自动化之ansible playbook安装mysql

上次介绍了如何使用ansible playbook安装zabbix客户端(http://dl528888.blog.51cto.com/2382721/1436745),这次介绍一下如何使用playbook安装mysql. 下面是安装mysql的信息: mysql_basedir: /data/mysql/basedir                    源码目录 mysql_datadir: /data/mysql/datadir                    数据目录 mysql

运维自动化之ansible playbook安装ruby环境

本来不想打算写安装ruby的,但看几个puppet的群里有人对安装ruby比较茫然,所以这里简单介绍一下如何安装ruby. ps:话说现在也就gitlab.capistrano.puppet等软件使用ruby,最新2010年的软件好的都是python了,比如ansible.salt等. 下面是安装ruby的信息: ruby_version: 1.9.3 ruby_dir: /usr/local gem_version: 1.8.23 bundle_version: 1.6.3 可以看到ruby的

运维自动化之ansible playbook安装node环境

现在介绍如何使用ansible安装node. 下面是安装node的信息: node_dir: /data node_version: 0.10.21 node_port: 3301 可以看到node的版本是0.10.21,测试的node应用服务监听3301端口 备注:此playbook仅能对centos或者redhat的6.x版本进行安装. 下面是安装node的playbook结构 09:33:16 # tree node_* node_delete ├── files ├── handlers

运维自动化之ansible playbook结合docker安装smokeping

本次介绍ansible的paly book结合docker进行虚拟机里安装2.6.8版本smokeping(apache版本是2.4.7). docker版本 09:26:53 # docker version Client version: 0.11.1 Client API version: 1.11 Go version (client): go1.2.1 Git commit (client): fb99f99/0.11.1 Server version: 0.11.1 Server A