ansible的template、tags、roles模块及应用
template、tags、roles
- 一、Templates模块
- 二、tags模块
- 三、roles
- 实验:ansible安装搭建LAMP架构
- 创建基本文件
- 编写httpd模块
- 编写mysql模块
- 编写php模块
- 编写roles示例
一、Templates模块
在ansible上操作
1、安装httpd服务
yum -y install httpd
2、编辑template文件
cp /etc/httpd/conf/httpd.conf /opt
mv httpd.conf httpd.conf.j2vim /opt/httpd.conf.j2 #在文件中找到以下内容,并修改
...
Listen {{http_port}}
ServerName {{server_name}}
MaxClients {{access_num}}
3、编辑ansible配置文件
vim /etc/ansible/hosts #添加以下内容
...
[webserver]
192.168.28.20 httpd_port=192.168.28.20:80 access_num=200 server_name="www.mxx.com:80"
4、编辑yml文件
vim apache.yml- hosts: webserverremote_user: rootvars:- names: httpdtasks:- name: install httpdyum: name={{names}} state=latest- name: install configure filetemplate: src=/opt/http.conf.j2 dest=/etc/httpd/conf/httpd.confnotify:- restart httpd- name: start httpd serverservice: name={{names}} enabled=true state=startedhandlers:- name: restart httpdservice: name={{names}} state=restarted
5、检查并执行yml文件
ansible-playbook apache.yml --syntax-checkansible-playbook apache.yml
补充
可以去远程主机上查看
grep -i listen /etc/httpd/conf/httpd.conf
grep -i MaxClient /etc/httpd/conf/httpd.conf
grep -i servername /etc/httpd/conf/httpd.conf
二、tags模块
在一个playbook中,我们一般会定义很多个task,如果我们只想执行其中某一个task或者多个task时,就可以使用tags标签功能了
例一:
1、编辑yml文件
vim hosts.yml- hosts: webserverremote_user: roottasks:- name: copy hosts filescopy: src=/etc/hosts dest=/opt/hoststags:- only- name: touch filefile: path=/opt/host01 state=touch
2、执行yml文件
ansible-playbook hosts.yml --tags="only"在执行完命令后,可以去[webserver]主机上查看/opt目录下是否有hosts和hosts01文件,结果显示只有一个hosts文件,是因为tags: -only标签的执行,阻止了后边的内容的继续
在[webserver]主机的/opt中删除hosts01文件,再执行以下命令:ansible-playbook hosts.yml可以发现/opt目录下,有了hosts和hosts01文件
例二:
1、编辑yml文件
vim hosts.yml- hosts: webserverremote_user: roottasks:- name: copy hosts filescopy: src=/etc/hosts dest=/opt/hoststags:- only- name: touch filefile: path=/opt/host01 state=touchtags:- always
2、执行yml文件
ansible-playbook hosts.yml --tags="only"
三、roles
角色(roles)是ansible自1.2版本开始引入的新特性,用于层次性,结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单的说,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。角色一般用于基于主机构建服务的场景中、但也可以是用于构建守护进程等场景中。
roles常用的模块
roles/common/files/templates/tasks/handlers/vars/defaults/meta/web/files/templates/tasks/handlers/vars/defaults/meta/
roles内各目录含义解释
- files:用来存放由copy模块或script模块调用的文件。
- templates:用来存放jinjia2模板, template模块会自动在此目录中寻找jinjia2模板文件。
- tasks:此目录应当包含-个main.yml文件, 用于定义此角色的任务列表,此文件可以使用
- include包含其它的位于此目录的task文件。
- handlers:此目录应当包含-个main.ym|文件, 用于定义此角色中触发条件时执行的动作。
- vars: 此目录应当包含- 个main.yml文件, 用于定义此角色用到的变量。
- defaults:此目录应当包含一个main.ym|文件, 用于为当前角色设定默认变量。
- meta:此目录应当包含-个main.yml文件, 用于定义此角色的特殊设定及其依赖关系。
实验:ansible安装搭建LAMP架构
创建基本文件
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -ptouch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml
编写httpd模块
写一个简单的tasks/main.yml
vim /etc/ansible/roles/httpd/tasks/main.yml
- name: install apacheyum: pkg={{ servername }} state=latest
定义变量:可以定义在全局变量中,也可以定义在roles角色变量中.
vim /etc/ansible/roles/httpd/vars/main.yml
servername: httpd
编写mysql模块
vim /etc/ansible/roles/mysql/tasks/main.yml
- name: install mysqlyum: pkg={{ mysqlname }} state=latestvim /etc/ansible/roles/mysql/vars/main.yml
mysqlname: mariadb*
编写php模块
vim /etc/ansible/roles/php/tasks/main.yml
- name: install phpyum: pkg={{ phpname }} state=latestvim /etc/ansible/roles/php/vars/main.yml
phpname: php
编写roles示例
vim /etc/ansible/site.yml
- hosts: webserverremote_user: rootroles:- httpd- mysql- php
ansible的template、tags、roles模块及应用相关推荐
- ANSIBLE的安装和常用模块使用详细教程
ANSIBLE安装和各种模块应用功能 文章目录 ANSIBLE安装和各种模块应用功能 安装配置ANSIBLE ANSIBLE使用 ansible-galaxy工具 ansible-pull工具 ans ...
- Ansible基本使用及常用模块详解
一.ansible基本使用 定义主机组 定义被管理节点列表的文件/etc/ansible/hosts,在定义被管理节点的时候,可以单独基于主机做定义,也可以将多个主机定义成一个主机组. 在上篇博文安装 ...
- ansible的参数及常用模块
ansible的参数及常用模块 参数: 查看帮助手册:ansible-doc -a 查指定模块的帮助:ansible-doc -s 模块名 ansible-doc -s setup ...
- 自动化运维工具ansible的安装管理以及模块介绍
自动化运维工具ansible的安装管理以及模块介绍 目录 自动化运维工具ansible的安装管理以及模块介绍 一.ansible概述 1.几种常用运维工具比较 2.Ansible简介 3.Ansibl ...
- Ansible纸上谈兵02:常用模块
背景 这里以 ad-hoc 命令的方式介绍下 Ansible 经常用到的模块. Ansible 已经具备丰富的模块生态,我们可以借助 Ansible 的模块完成日常在 Linux 操作系统上的运维工作 ...
- Linux Ansible自动化运维 copy模块
1.实验环境 首先配置好ansibel清单: vim /etc/ansible/hosts [testA] server2 server3 [testB] server4 [test:children ...
- Linux九阴真经之九阴白骨爪残卷6(ansible用法三之template及roles 角色)
模板 templates 文本文件,嵌套有脚本(使用模板编程语言编写) Jinja2语言,使用字面量,有下面形式 字符串:使用单引号或双引号 数字:整数,浮点数 列表:[item1, item2, . ...
- CentOS 7.6安装使用Ansible(二):Ansible常用的27个模块
三.Ansible常用模块介绍: 1.ping:测试被管控主机连通性 # ansible all --list-hosts # ansible dbsrvs --list-hosts 查看参数:# a ...
- Ansible PLaybook template 模板详解
template 模板 模板是一个文本文件,可以做为生成文件的模版,并且模板文件中还可嵌套jinja语法 jinja2语言 网站:https://jinja.palletsprojects.com/e ...
最新文章
- 2021年web前端发展方向有哪些
- 数据库操作之增删改查CRUD
- 关闭Android/iPhone浏览器自动识别数字为电话号码
- SpringBoot2.1.9 多数据源Mybatis—JDBC配置
- 全局使用dva dispatch
- 实验7 寻址方式在结构化数据访问总的应用
- LeetCode 1887. 使数组元素相等的减少操作次数(map)
- 去哪儿网2017春招在线笔试
- 大牛出招|分分钟解决 MySQL 查询速度慢与性能差
- 【转载】谷歌是如何做代码审查的
- “华为搜索”正海外内测;苹果5亿美元和解“降速门”;Firefox隐藏HTTPS | 极客头条...
- python画三维图-Python+matplotlib绘制三维图形5个精选案例
- 什么是 Hash 冲突?如何解决 Hash 冲突?
- ie浏览器html状态栏隐藏,我的IE浏览器忽然上面的菜单栏及地址栏都不见了
- 进阶篇:3.4)机械加工件设计
- 三极管构成的电流负反馈放大器
- 如何开一场高效的迭代排期会 | 敏捷开发落地指南
- 宝塔搭建chevereto图床
- 考博英语-连接词What与although的用法
- html立体魔方图片制作,AI软件如何打造立体魔方 Ai如何使用3D效果快速生成三个面贴图立体魔方...