Ansible3

Templates 模块

Jinja模版架构,通过这个模版可以实现,往配置文件(模版文件)传参(python转义)把占位符参数传到配置文件中去

Jinja就是生产一个目标文本文件,然后传递变量需要配置文件(web开发)

创建文件 123 345 678 将其复制到12主机上创建的test1 test2 test3
- hosts: 192.168.233.12remote_user: roottasks:- name: create dirfile:path: "/opt/{{item}}"state: directorywith_items:- test1- test2- test3when: inventory_hostname == '192.168.233.12'- name: copycopy:src: "/opt/{{item.src}}"dest: "/opt/{{item.dest}}"with_items:- {src: "123", dest: "test1" }- {src: "456", dest: "test2" }- {src: "789", dest: "test3" }when是一个比较常见的应用场景,实现满足条件即执行,不满足条件即跳过的任务
when是满足条件即执行,不满足不执行

templates模块 

templates模块
jinja模版架构,通过模版可以实现模版文件传参(python转义)把占位符参数传到配置文件中区
生成一个目标文本文件,传递变量到需要配置文件当中(web开发)[root@docker1 opt]# cd /etc/httpd/conf
[root@docker1 conf]# cp httpd.conf httpd.conf.j2
[root@docker1 opt]# vim jinia.httpd.yaml
[root@docker1 opt]# ansible-playbook jinia.httpd.yaml- hosts: allremote_user: rootvars:- package: httpd- service: httpdtasks:- name: install httpdyum: name={{package}}- name: install configure filetemplate: src=/opt/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
#使用template的模版notify:- restart httpd- name: create root_dirfile:path: /etc/httpd/htdocsstate: directory- name: start httpdservice: name={{service}} enabled=true state=startedhandlers:- name: restart httpdservice: name={{service}} state=restartednginx
[root@docker1 opt]# cd /etc/nginx/
[root@docker1 nginx]# vim nginx.conf.j2server {listen       "{{port}}";server_name  "{{server_name}}";root         "{{root_dir}}";
[root@docker1 nginx]# vim /etc/ansible/hosts
[webservers]
192.168.233.12 port=8080 server_name=www.guoqi.com:80 root_dir=/opt/nginx/html
[root@docker1 opt]# cp /etc/nginx/nginx.conf.j2 /opt/- hosts: allremote_user: rootvars:- package: nginx- service: nginxtasks:- name: install nginxyum: name={{package}}- name: install configure filetemplate: src=/opt/nginx.conf.j2 dest=/etc/nginx/nginx.confnotify:- restart nginx- name: create root_dirfile:path: /etc/nginx/htmlstate: directory- name: start nginxservice: name={{service}} enabled=true state=startedhandlers:- name: restart nginxservice: name={{service}} state=restarted
[root@docker1 opt]# ansible-playbook jinia.nginx.yaml
[root@docker2 opt]# vim /etc/nginx/nginx.conf
[root@docker2 opt]# netstat -antp | grep 8080

 tags标签模块

tags模块
标签模块,可以在playbook当中为任务设定标签(tags),在运行playbook时可以通过指定任务标签,来实现只允许设定的标签任务
格式:
- name:tags:debug:
--tags debug
--start-at-task='wdf'
#表示只运行debug其他都不运行任务标签的种类:
always:不管你是否指定了运行标签,任务都会执行
never:即使你运行了指定标签,该任务也不会执行
debug:调试任务
setup:收集主机信息
自定义标签
per_tasks:指定标签之前的任务
post_tasks:运行指定标签之后的任务- hosts: allremote_user: roottasks:- name: tag debugdebug:msg: "this is test1"tags:- debug- name: tag setupsetup:tags:- setup- name: tag alwaysdebug:msg: "run"tags:- always- name: tag neverdebug:msg: "never run"tags:- never[root@docker1 opt]# ansible-playbook tags.yaml --tags="never"
[root@docker1 opt]# ansible-playbook tags.yaml --tags="setup"
#只运行了setup和always[root@docker1 opt]# ansible-playbook tags.yaml --tags="ll"
[root@docker1 opt]# ansible-playbook tags.yaml --tags="yy"
#自定义标签,可以对标签自定义,指定运行标签的内容,需要运行哪一个任务指定任务的标签就行练习
#在目标主机上touch guoqi.txt 标签为always,在目标主机复制文件/opt/wdf.txt,标签自定义,第一次运行playbook 不知道查看文件生成情况,指定标签为never,查看文件生成情况
- hosts: 192.168.233.12remote_user: roottasks:- name: touchfile:path: /opt/guoqi.txtstate: touchtags:- always- name: copy filecopy:src: /opt/wdf.txtdest: /opt/wdf.txttags:- never[root@docker1 opt]# ansible-playbook tags.l.yaml
#never是不运行的
[root@docker1 opt]# ansible-playbook tags.l.yaml --tags="never"
#指定运行never

roles模块

Roles模块
角色
Ansible层次化,结构化的组织playbook使用了rolse(角色)
可以根据层次的结构,自动装载变量文件,tasks以及handlers等等
Rolse:分别把变量,文件,任务,模块,以及处理器,放在单独的目录当中,使用rolse模块来一件调用这些文件
Roles:的结构图
----web----总目录,里面有角色
子目录
Files用来存放copy和script模块调用文件
Templates 存放j2的模版文件
Tasks包含任务的目录
----main.yml  角色运行的任务
Handlers:包含处理器的目录
------main.yml
Vars 存放变量的目录
----- main.yml  只能叫main.yaml/yml
Defaults 包含默认变量的目录
-----main.ymlMeta 包含元信息的目录
----main.yml
Site.yml用来调用所有的配置文件需要三个服务
httpd mysql php
[root@docker1 opt]# cd /etc/ansible/roles/
[root@docker1 roles]# mkdir httpd mysql php
[root@docker1 httpd]# mkdir files templates tasks handlers vars defaults meta
[root@docker1 httpd]# touch {defaults,vars,tasks,meta,handlers}/main.yml
[root@docker1 mysql]# mkdir files templates tasks handlers vars defaults meta
[root@docker1 mysql]# touch {defaults,vars,tasks,meta,handlers}/main.yml
[root@docker1 php]# mkdir files templates tasks handlers vars defaults meta
[root@docker1 php]# touch {defaults,vars,tasks,meta,handlers}/main.yml
[root@docker1 roles]# vim /etc/ansible/roles/httpd/tasks/main.yml- name: install httpdyum: name={{pkg}}
- name: start httpdservice: enabled=true name={{svc}} state=started[root@docker1 roles]# vim /etc/ansible/roles/httpd/vars/main.ymlpkg: httpd
svc: httpd[root@docker1 roles]# vim /etc/ansible/roles/mysql/tasks/main.yml- name: install mysqlyum: name={{pkg}}
- name: start mysqlservice: enabled=true name={{svc}} state=started[root@docker1 roles]# vim /etc/ansible/roles/mysql/vars/main.ymlpkg:- mariadb- mariadb-server
svc: mariadb[root@docker1 roles]# vim /etc/ansible/roles/php/tasks/main.yml- name: install phpyum: name={{pkg}}
- name: start php-fpmservice: enabled=true name={{svc}} state=started[root@docker1 roles]# vim /etc/ansible/roles/php/vars/main.yml
pkg:- php- php-fpm
svc: php-fpm[root@docker1 roles]# cd /etc/ansible/roles/
[root@docker1 roles]# vim site.yml- hosts: 192.168.233.12remote_user: rootroles:- httpd- mysql- php[root@docker1 roles]# ansible-playbook site.yml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/295786.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构一】初始Java集合框架(前置知识)

Java中的数据结构 Java语言在设计之初有一个非常重要的理念便是:write once,run anywhere!所以Java中的数据结构是已经被设计者封装好的了,我们只需要实例化出想使用的对象,便可以操作相应的数据结构了,本篇…

最小二乘法简介

最小二乘法简介 1、背景描述2、最小二乘法2.1、最小二乘准则2.2、最小二乘法 3、最小二乘法与线性回归3.1、最小二乘法与线性回归3.2、最小二乘法与最大似然估计 4、正态分布(高斯分布) 1、背景描述 在工程应用中,我们通常会用一组观测数据去…

Linux多线程:POSIX信号量,基于信号量的环形队列实现生产者消费者模型

目录 一、POSIX信号量1.1 初始化信号量1.2 销毁信号量1.3 等待信号量1.4 发布信号量1.5 基于环形队列的生产消费模型(用信号量控制生产者和消费者之间的同步互斥关系)1.5.1 makefile1.5.2 RingQueue.hpp1.5.3 Sem.hpp1.5.4 Task.hpp1.5.5 main.cc 二、信号量控制的环形队列原理…

Angular 11到升级到 Angular 16

日新月异,与时俱进… 随着Angular版本不断更新,再看所开发的项目版本仍然是Angular 11,于是准备升级 截止发博日最版本是 v17.1.0,考虑到稳定性因素决定升级到v16版本 一:查看 升级指南 二:按照指南&…

【Element】el-table 使用 el-table-infinite-scroll 插件实现滚动加载

虽然 el 官方提供了 Infinite Scroll 无限滚动 组件 但是却不支持 el-table 组件,这就很难受了,还好已经有大佬写好了插件,并且支持 element-plus/infinite-scroll 组件的所有选项。 el-table-infinite-scroll el-table-infinite-scroll 看…

「微服务模式」七种微服务反模式

什么是微服务 流行语经常为进化的概念提供背景,并且需要一个良好的“标签”来促进对话。微服务是一个新的“标签”,它定义了我个人一直在发现和使用的领域。文章和会议描述了一些事情,我慢慢意识到,过去几年我一直在发展自己的个人…

HarmonyOS的装饰器之BuilderParam 理解

BuilderParam 装饰器 使用时间:当定义了一个子组件,并且子组件的build()中有一个布局在不同的父组件,实现效果不一样的时候,可以在子组件中用这个BuilderParam装饰器, 在父组件用Builder 装饰器进行实现,然…

Netty-2-数据编解码

解析编解码支持的原理 以编码为例,要将对象序列化成字节流,你可以使用MessageToByteEncoder或MessageToMessageEncoder类。 这两个类都继承自ChannelOutboundHandlerAdapter适配器类,用于进行数据的转换。 其中,对于MessageToMe…

【MybatisPlus快速入门】(3)SpringBoot整合MybatisPlus 之 Lombok插件安装及MybatisPlus分页代码示例

目录 1.Lombok1.1 步骤1:添加lombok依赖 2.2 步骤2:安装Lombok的插件1.3 步骤3:模型类上添加注解2 分页功能2.1 步骤1:调用方法传入参数获取返回值2.2步骤2:设置分页拦截器2.3 步骤3:运行测试程序 之前我们已学习MyBatisPlus在代码示例与MyBatisPlus的简介,在这一节…

frp配置多端口内网穿透?frp多端口怎么配置?

使用frp作为内网穿透的时候,有时候,我们需要多个端口穿透,怎么配置呢? 更有frp相关👉:凯哥个人博客,搜索frp 思考: 我们知道frp要想内网穿透,需要配置服务端和客户端。…

【智慧办公】如何让智能会议室的电子标签实现远程、批量更新信息?东胜物联网硬件网关让解决方案更具竞争力

近年来,为了减少办公耗能、节能环保、降本增效,越来越多的企业开始从传统的办公模式转向智慧办公。 以智能会议室为例,会议是企业业务中不可或缺的一部分,但在传统办公模式下,一来会议前行政人员需要提前准备会议材料…

房顶漏水啦【算法赛】

问题描述 小蓝家的房顶是一个边长为 n 的正方形,可以看成是由 nn 个边长为 1 的小正方形格子组成。 从上到下第 i 行、从左到右第 j 列的格子用 (i,j) 表示。 小蓝的家由于年久失修,导致房顶有一些地方漏水。总共有 m 处漏水的地方,我们用…