ansible自动化运维脚本工具
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