Templates模块、tags模块、roles模块

Templates模块

准备三台机器
192.168.162.20
192.168.162.30
192.168.162.5

[root@localhost ~/demo] # ansible all -a 'date'	
[root@localhost ~/demo] # ssh-agent bash
[root@localhost demo]# ssh-add 

[root@localhost demo]# rpm -qc httpd
[root@localhost demo]# cp /etc/httpd/conf/httpd.conf /opt/httpd.conf.j2

[root@localhost demo]# cd /opt/
[root@localhost opt]# vim httpd.conf.j2 
[root@localhost opt]# ls
containerd  httpd.conf.j2  rh
[root@localhost opt]# vim /etc/ansible/hosts

[root@localhost ~]# cd demo/
[root@localhost demo]# ls
a.yml  b.yml  c.yml  d.yml
[root@localhost demo]# ansible-playbook d.yml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

tags

在一个playbook中,我们一般会定义很多个task,如果我们只想执行其中的某一个task或多个task时就可以使用tags标签功能了

vi hosts.yml
- hosts: webserver
  remote_user: root
  tasks:
- name: Copy hosts file
  copy: src=/etc/hosts dest=/opt/hosts
  tags:
  - only
- name: touch file
  file: path=/opt/hosts01 state=touch

执行命令: ansible-playbook hosts.yml --tags= "only"
ansible- playbook hosts.yml

在这里插入图片描述

事实上,不光可以为单个或多个task指定同-个tags. playbook还提供了一个特殊的tags为always. 作用就是使用always就是在一直执行
vi hosts.yml
- hosts: webserver
  remote_user: root
  tasks:
- name: Copy hosts file
  copy: src=/etc/hosts dest=/opt/hosts
  tags:
  - only
- name: touch file
  file: path=/opt/hosts01 state=touch
  tags:
- always
执行命令: ansible-playbook hosts.yml --tags= "only"

roles

roles能够根据层次型结构自动装载变量文件、task以及handlers等。 简单来讲,roles就是通过分别将变量、 文件、任务、模块及处理器
roles/
common/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
web/
files/
templates/
tasks/
handlers/
defaults/
meta/

roles:内各目录含义解释
files:用来存放由copy模块或script模块调用的文件
templates:用来存放jinjia2模板,template模块会自动在此目录中寻找injia2模板文件
tasks:此目录应当包含一个main.yml文件, 用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件
handlers:此目录应当包含一个main.ymI文件, 用于定义此角色中触发条件时执行的动作
vars:此目录应当包含-个main.ym
defaults:此目录应当包含一个main.ym
meta:此目录应当包含-个main.yml文件, 用于定义此角色的特殊设定及其依赖关系

在一个playbook中使用roles的步骤:

1)创建以roles命令的目录。

mkdir /etc/ansible/roles/ -p #yum装完默认就有

2)创建全局变量目录。

mkdir /etc/ansible/group vars/ -p
touch /etc/ansible/group vars/all #文件名自己定义,引用的时候注意

3)在roles目录中分别创建以各角色名称命令的目录,如httpd。

mkdir /etc/ansible/roles/common -p

4)在每个角色命令的目录中分别创建files. handlers. tasks. templates. meta. defaults和vars目录, 用不到的目录可以创建为空

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

5)在每个角色的handlers. tasks、 meta、 defaults. vars目录下创建main.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

6)在playbook文件中, 调用各角色。

vi /etc/ansible/site.yml
- hosts: webserver
  remote_ user: root
  roles:
   - httpd
   - mysql

实验:安装搭建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} -p

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模块

写一个简单的tasks/main.yml
vim /etc/ansible/roles/httpd/tasks/main.yml
- name: ensure apache is at the latest version
  yum: pkg={{ pkg }} state=latest

定义变量:可以定义在全局变量中,也可以定义在roles角色变量中,一般定义在角色变量中
vim /etc/ansible/roles/httpd/vars/main.yml
pkg: httpd

编写mysql模块

vim /etc/ansible/roles/mysql/tasks/main.yml
- name: ensure mysql is at the latest version
  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: ensure php is at the latest version
  yum: pkg={{ pkg }} state=latest
  
vim /etc/ansible/roles/php/vars/main.yml
pkg: php

编写roles示例

vim /etc/ansible/site.yml
- hosts: webserver
  remote_user: root
  roles:
  - httpd
  - mysql
  - php
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值