ansible 的template模板 tags标签 roles

ansible 的template模板 tags标签 roles

一、template模板

说明:主要是给配置文件设置模板,应用场景:ansible管理主机配置文件时,每个主机的相关配置有时是不同的包括一些基本的ip 端口 访问量 域名等等
我们需要在hosts设置专用的变量 引用template模块 来针对每个被管理主机配置专用的配置文件
template的格式是.j2 例如apache的配置文件: httpd.conf.j2

	案例: 配置主机的配置文件
	1)配置文件
	[root@ansible opt]# vim httpd.conf 
	'//修改配置文件,添加模板(变量)'
	Listen {{http_port}}			'//监听'
	ServerName {{server_name}}	'//域名'
	MaxClients {{access_num}}	'//访问量'
	2)hosts配置文件设置模板参数变量 针对某一个ip
	[webserver]
	192.168.126.12 http_port=192.168.126.12:80 server_name="www.cjd.com" access_num=300 
	3)yaml文件
	- hosts: webserver
	  remote_user: root 
	  vars: 
	    - package: httpd 
		- server: httpd 
	  tasks: 
	    - name: check lastest 
		  yum: name={{package}} state=lastest 
		- name: configure apache 
		  template: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf 
		  notify: 
		    - restart httpd 
		- name: start httpd 
		  service: name={{server}} state=restarted 
	handerles: 
	  - name restart httpd 
	    service: name={{server}} state=restart 

二、tags标签

说明:在一个playbook中 我们会定义多个tasks 我们只想执行一个或者多个task就可以使用tags功能了

1.单标签任务 	
	案例: 
	- hosts: wenserver 
	  remote_user: root 
	  tasks: 
	    - name: copy hosts 
		  copy: src=/etc/hosts dest=/opt/hosts 
		  tags: 
		    - aaa  				//以上tasks作为一个整体 
		- name: touch hosts01 
		  file: path=/opt/host01 state=touch 
		- name: mkdir directory 
		  file: path=/opt/hosts02 state=touch 
		
	#ansible-playbook yaml文件 --syntax-check 
	#ansible-playbook yaml文件 --tags="aaa"				//指定标签 aaa 


2.多标签任务 
	一个playbook中同时出现了两个同名的tags playbook会执行相同的标签任务 

3.特殊标签 
	1) always标签 
	说明: 
	tags: 
	  - always 
	always 标签指的是不论执行哪一个tags标签 都会强制执行always的任务 
	2) nerver标签 
	和always标签作用相反 
	
	3)其他三个特殊标签并不以标签的形式出现
	tagged untagged all 
	ansible-playbook --tags tagged test.yaml     	//只执行有标签的任务 没标签的任务不执行 
	ansible-playbook --skip-tags tagged test.yaml   //跳过包含标签的任务 即使有always标签的任务也不会执行 
	anisble-playbook --tags untagged test.yaml      //只执行没有标签的任务 但是拥有always标签的task也会执行 
	anisble-playbook --skip-tags untagged test.yaml //表示跳过没有标签的内容 

三、 roles角色

概念:roles 能够根据层次型结构自动装载变量文件 task 以及handles
简单来说就是将一个playbook按照变量 文件 任务 模块 处理器 等分别存储在相应的目录下 可以方便的include
files: 用来存放由copy模块或script模块调用的文件
templates: 用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件
tasks: 此目录应当包含一个main.yml文件, 用于定义此角色的任务列表,此文件可以使用
include包含其它的位于此目录的task文件
handlers: 此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作
vars 此目录应当包含一个main.yml文件,用于定义此角色用到的变量
defaults: 此目录应当包含一个main.yml文件,用于为当前角色设定默认变量
meta:此目录应当包含一个main.yml文件, 用于定义此角色的特殊设定及其依赖关系

学习飞哥博客关于ansible剧本:https://blog.csdn.net/weixin_51486343/category_10942510.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值