playbook的template、tags、roles三模块

目录

一、template模块介绍

二、tags模块

三、playbook使用roles


一、template模块介绍

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

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

例:

yum -y install httpd
rpm -qc httpd

cp /etc/httpd/conf/httpd.conf /opt/httpd.conf.j2

vim /opt/httpd.conf.j2

---------42行----------
Listen {{port}}

----------95行---------
ServerName {{domain}}

vim /etc/ansible/hosts

[mysql]
192.168.222.10 port=80 domain=www.mhh.com
cd /opt
vim 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.yaml
ansible 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"

三、playbook使用roles

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

roles内各自目录含义

(1)templates

用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件

(2)tasks

此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件

(3)handlers

此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作

(4)vars

此目录应当包含一个main.yml文件,用于定义此角色用到的变量

(5)defailts

此目录应当包含一个main.yml文件,用于为当前角色设定默认变量

(6)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.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模块

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=latest

vim /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=latest

vim /etc/ansible/roles/php/vars/main.yml 

pkg: php

编写roles示例

vim /etc/ansible/site.yml
remote_user: root
roles:
 - 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'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值