当前位置: 首页 > news >正文

【星海出品】ansible入门(二) playbook

核心是管理配置进行批量节点部署。

执行其中的一些列tasks。
playbook由YAML语言编写。

YAML的格式如下:
文件名应该以 .yml 结尾

1.文件的第一行应该以“—”(三个连字符)开始,表明YAML文件的开始。
2.在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
3.YAML中的列表元素以“-”开头并且跟着一个空格。后面为元素内容。
4.同一个列表之中的元素应该保持相同的缩进,否则会被当做错误处理。
5.play中hosts、variables、roles、tasks等对象的表示方法都是以键值中间以“:”分隔表示,并且“:”之后要加一个空格。

---
- hosts: node1 #hosts指示使用哪个主机或者主机组来运行下面的tasks,host也可以使用通配符格式.remote_user: root #remote_user:指定远端主机的哪个用户来登录远端系统,在远端系统执行task的用户,可以任意指定,也可以使用sudo,但是用户必须要有执行相应的task权限。tasks: #执行的核心- name: install mysql-server packageyum: name=mysql-server state=present- name: starting mysqld serviceservice: name=msyql state=started

一。主机或者主机组在inventorry清单中指定,可以使用系统默认的/etc/ansible/hosts
也可以自己编辑,在运行的时候加上-i 选项指定清单的位置。
在运行清单文件的时候, --list-hosts选项会显示哪些主机将会参与执行task的过程中。
二。使用ansible-playbook运行playbook文件,得到的输出信息中,信息内容为JSON格式,并且由不同的颜色组成,便于识别。

[root@ansible ansible]# ansible-playbook roles.yml 

如何定义一个role

[root@ansible ansible]# pwd
/etc/ansible
[root@ansible ansible]# ls
ansible.cfg  hosts  nginx.yml  roles

Mkdir:创建文件夹
Mkdir -p :创建嵌套式文件夹
Mkdir -v :显示过程
Mkdir -pv:同时创建多个文件夹

roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制

[root@ansible roles]# ls
[root@ansible roles]# mkdir -pv ./{nginx,mysql,httpd}/{files,templates,vars,tasks,handlers,meta,default}
[root@ansible roles]# tree 
.
├── httpd
│   ├── default
│   ├── files
│   ├── handlers
│   ├── meta
│   ├── tasks
│   ├── templates
│   └── vars
├── mysql
│   ├── default
│   ├── files
│   ├── handlers
│   ├── meta
│   ├── tasks
│   ├── templates
│   └── vars
└── nginx├── default├── files├── handlers├── meta├── tasks├── templates└── vars[root@ansible nginx]# pwd
/etc/ansible/roles/nginx

用于定义此角色用到的各handler:在handler中使用include包含的其他的handler文件也应该位于此目录中;
files目录:存放由copy或script等模块调用的文件;
templates目录:templates模块会自动在此目录中寻找Jinja2模板文件;
tasks目录:至少应该包含一个名为main.yml的文件,其定义了此角色的任务列表;此文件可以使用include包含其他的位于此目录中的task文件;
handlers目录:此目录中应当包含一个main;
vars目录:应当包含一个main.yml文件,用于定义此角色用到的变量;
meta目录:应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系;ansible 1.3及其以后的版本才支持
default目录:为当前角色设定默认变量时使用此目录;应当包含一个main.yml文件;

.
├── default
├── files
│   └── nginx-1.18.0-1.el7.ngx.x86_64.rpm
├── handlers
│   └── main.yml
├── meta
├── tasks
│   └── main.yml
├── templates
│   └── nginx.conf.j2
└── vars└── main.yml
[root@ansible ]# cp /var/cache/yum/x86_64/7/nginx/packages/nginx.rpm /etc/ansible/roles/nginx/files/
[root@ansible ]# cp /tmp/nginx.conf.j2 /etc/ansible/roles/nginx/templates/
[root@ansible nginx]# ls tasks/
main.yml
[root@ansible nginx]# cat tasks/main.yml 
- name: cpcopy: src=nginx.rpm dest=/tmp/nginx.rpm
- name: installyum: name=/tmp/nginx.rpm state=latest
- name: conftemplate: src=nginx.conf.j2 dest=/etc/nginx/nginx.conftags: nginxconfnotify: new conf to reload
- name: start serviceservice: name=nginx state=started enabled=true

修改变量文件

cat vars/main.yml
nginxport: 9999

定义handlers文件

[root@ansible nginx]# cat handlers/main.yml 
- name: new conf to reloadservice: name=nginx state=restarted
[root@ansible ansible]# pwd
/etc/ansible
[root@ansible ansible]# cat roles.yml 
- hosts: webremote_user: rootroles:- nginx
[root@ansible nginx]# cat handlers/main.yml 
- name: new conf to reloadservice: name=nginx state=restarted
[root@ansible nginx]# cat tasks/main.yml 
- name: cpcopy: src=nginx-1.18.0-1.el7.ngx.x86_64.rpm dest=/tmp/nginx-1.18.0-1.el7.ngx.x86_64.rpm
- name: installyum: name=/tmp/nginx-1.18.0-1.el7.ngx.x86_64.rpm state=latest
- name: conftemplate: src=nginx.conf.j2 dest=/etc/nginx/nginx.conftags: nginxconfnotify: new conf to reload
- name: start serviceservice: name=nginx state=started enabled=true
[root@ansible nginx]# cat templates/nginx.conf.j2 user  nginx;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;
server {listen  {{ nginxport }};
}include /etc/nginx/conf.d/*.conf;
}
[root@ansible nginx]# cat vars/main.yml 
nginxport: 9999

相关文章:

【星海出品】ansible入门(二) playbook

核心是管理配置进行批量节点部署。 执行其中的一些列tasks。 playbook由YAML语言编写。 YAML的格式如下: 文件名应该以 .yml 结尾 1.文件的第一行应该以“—”(三个连字符)开始,表明YAML文件的开始。 2.在同一行中,#之…...

Spring Boot对账号密码进行加密储存

未来避免明文硬编码,我们需要对密码进行加密保存,例如账号密码 方法 在Spring Boot中,可以使用Jasypt(Java Simplified Encryption)库来对敏感信息进行加密和解密。Jasypt提供了一种简单的方式来在应用程序中使用加密…...

总结js中常见的层次选择器

js中的层次选择器可以用于选择和操作DOM树中的元素,根据元素的层级关系进行选择。以下是js中常见的层次选择器: 1. getElementById:使用元素的ID属性进行选择。通过给元素设置唯一的ID属性,可以使用getElementById方法选择该元素…...

阿里云ECS服务器上启动的portainer无法访问的问题

如下图,在阿里云ECS服务器上安装并启动了portainer,但是在自己电脑上访问不了远程的portainer。 最后发现是要在网络安全组里开放9000端口号,具体操作如下: 在云服务器管理控制台点击左侧菜单中的网络与安全-安全组,然…...

JavaScript系列从入门到精通系列第十八篇:JavaScript中的函数作用域

文章目录 前言 一&#xff1a;函数作用域 前言 我们刚才提到了&#xff0c;在<Script>标签当中进行定义的变量、对象、函数对象都属于全局作用域&#xff0c;全局作用域在页面打开的时候生效在页面关闭的时候失效。 一&#xff1a;函数作用域 调用函数时创建函数作用域…...

开环模块化多电平换流器仿真(MMC)N=6(Simulink仿真)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

[C]嵌入式中变量存储方案

#include<stdio.h>#define uint8_t unsigned char #define uint16_t unsigned short #define uint24_t unsigned int #define uint32_t unsigned int #define uint64_t unsigned long long//用户自定义变量名字&#xff0c;用于存储 typedef enum {first_run 0,//…...

热迁移中VirtIO-PCI设备的配置空间处理

文章目录 问题现象定位过程日志分析源端目的端 原理分析基本原理上下文分析复现分析patch分析 总结解决方案 问题现象 集群升级虚拟化组件版本&#xff0c;升级前存量运行并挂载了virtio磁盘的虚拟机集群内热迁移到升级后的节点失败&#xff0c;QEMU报错如下&#xff1a; 202…...

模拟滤波器的基础知识和设计

信号处理工作中滤波器的应用是非常广泛的&#xff0c;可以分成模拟滤波器和数字滤波器两种&#xff0c;数字滤波器主要包括两种&#xff0c;IIR和FIR&#xff0c;这两种滤波器后面统一说&#xff0c;今天先来说一说模拟滤波器&#xff08;主要是我先用Python实现了Matlab书里面…...

机器学习基础-Pandas学习笔记

Pandas Python的数据分析库&#xff0c;与Numpy配合使用&#xff0c;可以从常见的格式如CSV、JSON等中读取数据。可以进行数据清洗、数据加工工作。数据结构Series&#xff0c;Pandas.Series(data,index,dtype,name,copy) data类型是Numpy的ndarray类型&#xff0c;index指定下…...

【GIT版本控制】--协作流程

一、Fork与Pull Request Git协作流程中的关键概念包括Fork和Pull Request&#xff0c;它们允许多人在项目中协作并贡献代码。以下是关于Fork和Pull Request的简要总结&#xff1a; 1. Fork&#xff1a; Fork是指复制一个Git仓库&#xff0c;通常是一个开源项目的仓库&#xf…...

简析Cookie、Session、Token

手打不易&#xff0c;如果转摘&#xff0c;请注明出处&#xff01; 注明原文&#xff1a;https://zhangxiaofan.blog.csdn.net/article/details/133498756 文章目录 简析Cookie、Session、Token什么是 Cookie &#xff1f;什么是 Session &#xff1f;Cookie 和 Session 到底是…...

加速attention计算的工业标准:flash attention 1和2算法的原理及实现

transformers目前大火&#xff0c;但是对于长序列来说&#xff0c;计算很慢&#xff0c;而且很耗费显存。对于transformer中的self attention计算来说&#xff0c;在时间复杂度上&#xff0c;对于每个位置&#xff0c;模型需要计算它与所有其他位置的相关性&#xff0c;这样的计…...

小程序获取用户手机号

在小程序中获取用户手机号需要以下步骤&#xff1a; 首先需要授权用户手机号&#xff0c;即在小程序中调用 wx.login() 方法获取用户的登录凭证&#xff0c;在回调函数中调用 wx.getUserInfo() 方法获取用户的个人信息&#xff0c;并且设置 withCredentials 参数为 true。 在获…...

Zama的fhEVM:基于全同态加密实现的隐私智能合约

1. 引言 Zama的fhEVM定位为&#xff1a; 基于全同态加密实现的隐私智能合约 解决方案 开源代码见&#xff1a; https://github.com/zama-ai/fhevm&#xff08;TypeScript Solidity&#xff09; Zama的fhEVM协议中主要包含&#xff1a; https://github.com/zama-ai/tfhe-…...

Mac M1安装ROS1或ROS2

1.首先进入Anaconda官网&#xff0c;安装Anaconda 2.创建、激活并配置环境 #创建环境 conda create -n ROS #激活环境 conda activate ROS #配置环境 conda config --add channels conda-forge conda config --add channels robostack conda config --set channel_priority st…...

[NISACTF 2022]popchains - 反序列化+伪协议

[NISACTF 2022]popchains 一、解题流程二、小小疑惑 一、解题流程 1、链条&#xff1a;Road_is_Long&#xff08;construct->wakeup【page$r】-> toString【string$m】&#xff09;-> Make_a_Change&#xff08;construct->get【effort$t】&#xff09;-> Try_W…...

分贝定义简介

一、什么是分贝 辅助单元Bel表示任何给定部件、电路或系统的输入和输出之间的对数比L,并且可以用电压、电流或功率来表示: 如果使用场量(电压或电流)代替功率量,则: 我们可以将增益或损耗因子相加为正或负dB值,而不是将其乘以比率。 分贝与功率转化的速读表如下所示:…...

socket简介

套接字&#xff08;Socket&#xff09;实质上就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端&#xff0c;为应用层进程利网络协议交换数据提供了相应机制。套接字出于承上启下的作用&#xff0c;向上连接应用进程&#xf…...

【AI视野·今日Robot 机器人论文速览 第四十九期】Fri, 6 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Fri, 6 Oct 2023 Totally 29 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;ContactGen, 基于生成模型的抓取手势生成&#xff0c;类人五指手。(from 伊利诺伊大学 香槟) 数据集&#xff1a;GRAB da…...

彻底解决机械键盘连击问题:免费开源工具KeyboardChatterBlocker完全指南

彻底解决机械键盘连击问题&#xff1a;免费开源工具KeyboardChatterBlocker完全指南 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 你是…...

questasim下载安装

questasim下载安装 https://zhuanlan.zhihu.com/p/682726018...

全球首款量产载人变形机甲,硬核科技颠覆出行想象

全球首款量产版载人变形机甲&#xff01;2026 年 5 月 12 日&#xff0c;中国宇树科技正式发布 GD01&#xff0c;既能载人操控、又能双足 / 四足快速变形&#xff0c;定位民用交通工具&#xff0c;载人后总重约 500kg&#xff0c;直接拉满硬核科技期待感&#xff01;一、GD01 核…...

基于MCP协议快速构建AI助手自定义工具:从入门到生产实践

1. 项目概述&#xff1a;一个为AI助手打造自定义工具的快速启动器如果你正在使用Claude Desktop或者Cursor这类AI编程助手&#xff0c;并且觉得它们内置的功能还不够用&#xff0c;比如你想让它直接查询你项目的数据库、调用某个内部API&#xff0c;或者执行一些特定的文件操作…...

浏览器光标锁定技术:Pointer Lock API与全屏API实战指南

1. 项目概述&#xff1a;一个解决浏览器光标“越狱”问题的实用工具如果你是一名前端开发者&#xff0c;或者经常需要制作在线演示、录屏教程&#xff0c;甚至是在开发一个网页端的游戏&#xff0c;那你一定遇到过这个让人头疼的问题&#xff1a;鼠标光标在网页里“不老实”。当…...

如何高效管理Zotero插件:一站式插件市场完整指南

如何高效管理Zotero插件&#xff1a;一站式插件市场完整指南 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing, installing, and reviewing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons 还在为…...

三步轻松上手:BilldDesk Pro开源远程桌面控制工具完整指南

三步轻松上手&#xff1a;BilldDesk Pro开源远程桌面控制工具完整指南 【免费下载链接】billd-desk 基于Vue3 WebRTC Nodejs Flutter搭建的远程桌面控制、游戏串流 项目地址: https://gitcode.com/gh_mirrors/bi/billd-desk 如果你正在寻找一款功能强大且完全免费的跨…...

MoneyPrinter监控面板搭建终极指南:实时追踪YouTube Shorts自动化生成状态

MoneyPrinter监控面板搭建终极指南&#xff1a;实时追踪YouTube Shorts自动化生成状态 【免费下载链接】MoneyPrinter Automate Creation of YouTube Shorts using MoviePy. 项目地址: https://gitcode.com/gh_mirrors/mo/MoneyPrinter 想要实时掌握YouTube Shorts自动化…...

音乐网站与分享平台 |基于Springboot+vue的音乐网站与分享平台(源码+数据库+文档)​

音乐网站与分享平台 目录 基于Springbootvue的音乐网站与分享平台 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xf…...

5D动感影院|打造沉浸式体验的新一代互动影院解决方案

随着数字技术与沉浸式体验的不断发展&#xff0c;传统影院已经无法完全满足现代观众对互动性与真实感的需求。在这一背景下&#xff0c;5D动感影院应运而生&#xff0c;凭借多维度感官融合技术&#xff0c;为观众带来前所未有的沉浸式观影体验。作为集视觉、听觉、触觉及环境特…...