ansibl——template、tags、roles模板

一、template模块

#temple主要是进行文本替换的

案例:安装Apache并修改里面的配置文件

1、控制端安装httpd服务

#第一步现在控制端安装一个httpd服务

[root@localhost ~]# yum install -y httpd

2、复制并修改配置文件

#将http.conf这个文件复制到/opt下进行修改

[root@localhost opt]# cp /etc/httpd/conf/httpd.conf /opt/httpd.conf.j2 #temple文本替换的文件一定是以.j2结尾

[root@localhost opt]# vim httpd.conf.j2

Listen {{http_port}} #修改端口号,设定为一个变量

ServerName {{server_name}} #修改域名,设定一个变量

MaxClients {{access_num}} #也可以添加一个连接数,设定为变量

3、主机清单变量

[root@localhost opt]# vim /etc/ansible/hosts

[webservers]
192.168.200.12 http_port=192.168.200.12:80 server_name=www.aaa.com:80 access_num=30

#在要创建httpd服务的被控制端添加想要修改的变量

4、创建playbook

[root@localhost opt]# vim 1.yaml

- hosts: 192.168.200.12 #指定被控制端
remote_user: root #使用的用户
vars: #设定变量为names代表httpd
- names: httpd
tasks:
- name: install httpd #想要安装httpd
yum: name={{names}} state=latest #name={{names}}调用变量,状态为最新的
- name: config file #想要修改文件
template: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf #将本机的文件替换到被控制端的文件
notify: #用来调用下面的handlers的
- restart httpd #重启服务
- name: enable httpd #开机自启动
service: name={{names}} enabled=true state=started
handlers: #被notify来调用的,如果没有notify,handlers将无用
- name: restart httpd
service: name={{names}} state=restarted

在这里插入图片描述

5、查看结果

[root@localhost opt]# ansible 192.168.200.12 -a ‘grep -i listen /etc/httpd/conf/httpd.conf’

[root@localhost opt]# ansible 192.168.200.12 -a ‘grep -i ServerName /etc/httpd/conf/httpd.conf’

[root@localhost opt]# ansible 192.168.200.12 -a ‘grep -i MaxClient /etc/httpd/conf/httpd.conf’

#运用ansible查看被控端是否修改成功

在这里插入图片描述

二、tags模块

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

案例:复制本地文件到被控制端

[root@localhost opt]# vim 2.yaml

- hosts: 192.168.200.12
remote_user: root
tasks:
- name: copy
copy: src=/etc/hosts dest=/opt/hosts #复制本地/etc下的hosts文件到被控制端/opt目录下
tags: #打上一个标签
- only
- name: touch file
file: path=/opt/hosts01 state=touch

[root@localhost opt]# ansible-playbook 2.yaml --tags=“only”

在这里插入图片描述

#当在task下指定一个tags定位always,always是一个特殊的存在,当标签定为always则不管标签定成什么都会执行

[root@localhost opt]# vim 2.yaml

- hosts: 192.168.200.12
remote_user: root
tasks:
- name: copy
copy: src=/etc/hosts dest=/opt/hosts
tags:
- only
- name: touch file
file: path=/opt/hosts01 state=touch
tags:
- always

[root@localhost opt]# ansible-playbook 2.yaml --tags=“only”

在这里插入图片描述

三、roles

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

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

案例:单间LAMP架构

1、创建目录

#在/etc/ansible/roles创建httpd、mysql、php三个目录,并在其下面创建 files,templates,tasks,handlers.vars.defaults,meta等目录

[root@localhost ~]# mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
[root@localhost ~]# mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
[root@localhost ~]# mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p

在这里插入图片描述

2、创建文件

#在各个目录下面创建main.yml文件

[root@localhost ~]# touch /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta}/main.yml
[root@localhost ~]# touch /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta}/main.yml
[root@localhost ~]# touch /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta}/main.yml

3、编写httpd

[root@localhost ansible]# vim /etc/ansible/roles/httpd/tasks/main.yml

- name: install httpd
yum: name={{pkg}} state=latest #此处的别名在vars目录下的main.yml文件进行设置

[root@localhost ansible]# vim /etc/ansible/roles/httpd/vars/main.yml

pkg: httpd

4、编写mysql

[root@localhost ansible]# vim /etc/ansible/roles/mysql/tasks/main.yml

- name: yum install mysql
yum: name={{pkg}} state=latest

[root@localhost ansible]# vim /etc/ansible/roles/mysql/vars/main.yml

pkg: mariadb*

5、编写php

[root@localhost ansible]# vim /etc/ansible/roles/php/tasks/main.yml

- name: yum install php
yum: name={{pkg}} state=latest

[root@localhost ansible]# vim /etc/ansible/roles/php/vars/main.yml

pkg: php

6、创建剧本

[root@localhost ansible]# cd /etc/ansible/ #需要切换到ansible下面创建剧本

[root@localhost ansible]# vim lamp.yaml

- hosts: 192.168.200.12
remote_user: root
roles: #调用下面的,来创建Lamp
- httpd
- mysql
- php

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值