博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ansible—playbook的template、tags、roles三模块
阅读量:3809 次
发布时间:2019-05-22

本文共 3475 字,大约阅读时间需要 11 分钟。

playbook的template、tags、roles三模块

文章目录

一、template模块介绍

ansible的template模块,可以将带有参数的配置文件传递到目标地址,可以对文件进行属组属主的修改以及备份。

templates功能:根据模板文件动态生成对应的配置文件,命名必须以.j2结尾

例:

yum -y install httpdrpm -qc httpdcp /etc/httpd/conf/httpd.conf /opt/httpd.conf.j2vim /opt/httpd.conf.j2---------42行----------Listen {
{
port}}----------95行---------ServerName {
{
domain}}vim /etc/ansible/hosts[mysql]192.168.2.5 port=80 domain=www.mhh.com
cd /optvim a.yaml- hosts: mysql  remote_user: root  vars:  - package: httpd  - service: httpd  tasks:  - name: install service    yum: name={
{
package}} state=latest - name: httpd.conf template: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf notify: restart service - name: start service service: name={
{
service}} state=started enabled=true handlers: - name: restart service service: name={
{
service}} state=restarted
ansible-playbook a.yamlansible mysql -a 'rpm -q httpd'ansible mysql -a 'systemctl status httpd'ansible mysql -a 'systemctl is-enabled httpd'

二、tags模块

当你写了一个很长的playbook,其中有很多的任务,这并没有什么问题,不过在实际使用这个剧本时,你可能只是想要执行其中的一部分任务而已,或者,你只想要执行其中一类任务而已,而并非想要执行整个剧本中的全部任务,这时,我们可以借助tags模块为任务进行打标签操作,任务存在标签后,我们可以在执行playbook时利用标签,指定执行哪些任务,或者不执行哪些任务

例:

vim b.yaml- hosts: mysql  remote_user: root  tasks:  - name: touch file one    file: path=/opt/1.txt state=touch    tags:    - file one  - name: touch file two    file: path=/opt/2.txt state=touch    tags:    - file two  - name: touch file three    file: path=/opt/3.txt state=touch    tags:    - file three
ansible-playbook b.yaml --tags="file two"ansible-playbook b.yaml --skip-tags="file one"

还有一个特殊的tags为always,作用就是使用always的task会在不指定不执行的时候执行

三、playbook使用roles

简单的说,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。角色一般用于基于主机构建服务的场景中、但也可以是用于构建守护进程等场景中。

roles内各自目录含义

files 用来存放copy模块或script模块调用的文件
templates 用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件
tasks 此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件
handlers 此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作
vars 此目录应当包含一个main.yml文件,用于定义此角色用到的变量
defailts 此目录应当包含一个main.yml文件,用于为当前角色设定默认变量
meta 此目录应当包含一个main.yml文件,用于定义此角色的特殊设及其依赖关系

在playbook中使用roles的步骤

创建服务组件工作目录

mkdir -p /etc/ansible/roles/httpd/{
files,templates,tasks,handlers,vars,defaults,meta} mkdir -p /etc/ansible/roles/mysql/{
files,templates,tasks,handlers,vars,defaults,meta} mkdir -p /etc/ansible/roles/php/{
files,templates,tasks,handlers,vars,defaults,meta} #创建yml空文件touch /etc/ansible/roles/httpd/{
defaults,vars,tasks,meta,handlers}/main.ymltouch /etc/ansible/roles/mysql/{
defaults,vars,tasks,meta,handlers}/main.ymltouch /etc/ansible/roles/php/{
defaults,vars,tasks,meta,handlers}/main.yml

编写httpd模块

vim /etc/ansible/roles/httpd/tasks/main.yml - name: install httpd  yum: pkg={
{
pkg}} state=latest

定义变量pkg软件包

vim /etc/ansible/roles/httpd/vars/main.yml pkg: httpd

编写mysql模块

vim /etc/ansible/roles/mysql/tasks/main.yml - name: install mysql  yum: pkg={
{
pkg}} state=latestvim /etc/ansible/roles/mysql/vars/main.yml pkg: mariadb*

编写php模块

vim /etc/ansible/roles/php/tasks/main.yml - name: install php  yum: pkg={
{
pkg}} state=latestvim /etc/ansible/roles/php/vars/main.yml pkg: php

编写roles示例

vim /etc/ansible/site.ymlremote_user: rootroles: - httpd - mysql - php

执行剧本

ansible-playbook /etc/ansible/site.yml

验证

查看服务是否都已安装

ansible webserver -a 'rpm -q httpd'ansible webserver -a 'rpm -q mariadb'ansible webserver -a 'rpm -q mariadb-server'ansible webserver -a 'rpm -q php'

转载地址:http://prtxn.baihongyu.com/

你可能感兴趣的文章
Fragment下
查看>>
Android 用Animation-list实现逐帧动画
查看>>
VC++鼠标进入离开窗口
查看>>
ProgressDialog进度条对话框使用
查看>>
接口回调的实现
查看>>
Android中的Drawable资源
查看>>
PopupWindow使用
查看>>
android获取进程信息,运行内存信息
查看>>
修改注册表来修改IE的设置
查看>>
ACTIVEX控件加载上了但没作用
查看>>
ActiveX控件安全初始化之二:修改注册表
查看>>
自定义CheckBox背景
查看>>
Android:res之selector背景选择器
查看>>
获取文件的md5
查看>>
Android屏幕适配
查看>>
Android SlidingMenu 开源项目实现侧拉菜单(一)
查看>>
Android SlidingMenu 开源项目实现侧拉菜单(二)
查看>>
Android SlidingMenu 开源项目 侧拉菜单的使用(详细配置)
查看>>
MicroSIP编译完全手册
查看>>
Android ViewPager使用
查看>>