博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ansible templates+roles
阅读量:4195 次
发布时间:2019-05-26

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

ansible templates+roles

一、Templates模块

(这里我们以apache为示例,这里192.168.177.33安装了ansible、epel源、以及apache,然后配置主机清单,并推送密钥给另一台(192.168.177.8))

yum install httpd -yrpm -qc httpd

在这里插入图片描述

cp /etc/httpd/conf/httpd.conf /opt/httpd.conf.j2cd /opt

在这里插入图片描述

vim httpd.conf.j2Listen {
{http_port}} #监听端口ServerName {
{server_name}} #注释去掉 域名MaxClients {
{access_num}} #最大连接数

在这里插入图片描述

在这里插入图片描述

vim /etc/ansible/hosts[webserver]192.168.177.8 http_port=192.168.177.8:80 access_num=30 server_name=www.tefuir.com:80

在这里插入图片描述

编辑yaml文件

vim b.yaml- hosts: webserver  remote_user: root  vars:   - names: httpd  tasks:   - name: install httpd     yum: name={
{names}} state=latest - name: config file template: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf notify: - restart httpd - name: enable httpd service: name={
{names}} enabled=true state=started handlers: - name: restart httpd service: name={
{names}} state=restartedansible-playbook b.yaml --syntax-checkansible-playbook b.yaml

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
进入172.168.177.8进行查看

vim /etc/httpd/conf/httpd.conf

在这里插入图片描述

在这里插入图片描述
去远程主机查看

grep -i listen /etc/httpd/conf/httpd.confgrep -i maxclient /etc/httpd/conf/httpd.confgrep -i servername /etc/httpd/conf/httpd.conf

在这里插入图片描述

二、tags模块

在一个playbook中,我们一般会定义很多个task,如果我们只想执行其中的某一个task或多个task时就可以使用tags标签功能了。
vim c.yaml- hosts: webserver  remote_user: root  tasks:   - name: copy hosts file     copy: src=/etc/hosts dest=/opt/hosts     tags:     - yoyo   - name: touch file     file: path=/opt/hosts01 state=touch执行命令:ansible-playbook c.yaml --tags="yoyo"

在这里插入图片描述

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

这里我们发现后面touch的命令没有执行,所以就需要以下的操作

vim c.yaml- hosts: webserver  remote_user: root  tasks:   - name: copy hosts file     copy: src=/etc/hosts dest=/opt/hosts     tags:     - yoyo   - name: touch file     file: path=/opt/hosts01 state=touch     tags:     - always

在这里插入图片描述

在这里插入图片描述

三、roles

roles能够根据层次型结构自动装载变量文件、task以及handlers等。

roles内各目录含义解释

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

在一个playbook中使用roles的步骤

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

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

(2)创建全局变量目录

mkdir /etc/ansible/group_vars/ -ptouch /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} -pmkdir /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.ymltouch /etc/ansible/roles/mysql/{defaults,vars,tasjs,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} -pmkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -pmkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p

准备main.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: ensure apache is at the latest version  yum: pkg= {
{servername}} state=latestvim /etc/ansible/roles/httpd/vars/main.ymlservername: httpd

编写mysql模块

vim /etc/ansible/roles/mysql/tasks/main.yml- name: ensure mysql is at the latest version  yum: pkg= {
{servername}} state=latestvim /etc/ansible/roles/mysql/vars/main.ymlservername: mariadb*

编写PHP模块

vim /etc/ansible/roles/php/tasks/main.yml- name: ensure php is at the latest version  yum: pkg= {
{servername}} state=latestvim /etc/ansible/roles/php/vars/main.ymlservername: php

创建剧本

vim /etc/ansible/lamp.yml- hosts: test01  remote_user: root  roles:    - httpd	- mysql	- phpansible-playbook lamp.yml

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

你可能感兴趣的文章
andorid里关于wifi的分析
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
在C++中如何实现模板函数的外部调用
查看>>
HTML5学习之——HTML 5 应用程序缓存
查看>>
HTML5学习之——HTML 5 服务器发送事件
查看>>
hbase shell出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException
查看>>
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
kermit的安装和配置
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
商务智能-基本方法-数据钻取
查看>>
openstack-instance-high-availability-Evacuate
查看>>
evacuate-instance-automatically
查看>>
pycharm常用设置(keymap设置及eclipse常用快捷键总结)
查看>>
关于在openstack的环境变量.bashrc自定自己简化命令
查看>>
Openstack Heat Project介绍(转)
查看>>
How to Perform an Upgrade from Icehouse to Juno(ice升级到juno)
查看>>
高扩展性网站的50条原则(转)-思维导图
查看>>