ansible安装、点对点Ad-Hoc、模块、剧本Playbook
DevOps:
官网:https://docs.ansible.com
自动化运维工具对比
C/S 架构:客户端/服务端
Puppet:基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱
SaltStack:基于 Python 开发,采用 C/S 架构,YAML使得配置脚本更简单.需要配置客户端及服务器端;每台被控制节点需要安装agent
Ansible:基于 Python开发,分布式,无需客户端,轻量级,配置语法使用YAML语言,更强的远程命令执行操作 (优点)
Ansible简介(是什么、做什么、特点)
ansible是新出现的自动化运维工具,基于Python开发,分布式,无需客户端,轻量级,实现了批量系统配置、批量程序部署、批量运行命令等功能,ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架
一、安装
245(ansible)
vim /etc/hosts (做解析)
IP+名字
配置ssh公钥认证:控制节点需要发送ssh公钥给所有非被控制节点(做免密)
ssh-keygen

yum list | grep ansible //有ansible 仓库
yum install -y ansible //下载ansible
ansible --version //查看版本、配置文件、python版本

ansible --help //帮助手册
二、主机清单inventory
vim /etc/ansible/hosts (要管理谁就写入谁)
web-1 //为主机
[db] 为主机组

查看组内主机列表
语法:ansible 组名 --list-hosts
ansible web --list-hosts //查看组里的主机

[root@ansible-server ~]# ansible -i /opt/hostlist all -m ping -o
-i:指定清单文件
-m:调用模块
all:所有组
-o:改变输出格式
三:点对点Ad-Hoc
ansible-doc -l //列出所有模块
ansible-doc -s yum //yum的使用方法
用户管理模块:user
添加用户并设置密码:
[root@ansible-server ~]# ansible webservers1 -m user -a "name=liudehua password=`echo 1234 | openssl passwd -1 -stdin`" -o
"name= " #如:指定的用户名,要安装的软件
-1 MD5加密算法
删除用户:
[root@ansible-server ~]# ansible webservers1 -m user -a "name=liudehua state=absent" -o
adsent #删除用户,但是不会删除家目录
组管理模块:group
gid:为组设置的可选GID
name:要管理的组的名称
state:该组是否应该存在于远程主机上;absent不在/默认是present在
system:如果是,表示创建的组是系统组;默认时no
[root@ansible-server ~]# ansible all -m group -a 'name=somegroup state=present'
[root@ansible-server ~]# ansible all -m group -a 'name=somegroup state=absent' //删除组
软件包管理模块:yum
config_file:yum的配置文件
disable_gpg_check:关闭gpg_check
disablerepo:不启用某个源
enablerepo:启用某个源
name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径
state:状态(present,absent,latest)
[root@ansible-server ~]# ansible webservers1 -m yum -a "name=httpd state=latest" -o
state= #状态是什么,干什么
state=absent 用于remove安装包
state=latest 表示最新的
state=removed 表示卸载
卸载软件:
[root@ansible-server ~]# ansible webservers1 -m yum -a "name=httpd state=removed" -o
服务管理模块:service
[root@ansible-server ~]# ansible webservers1 -m service -a "name=httpd state=started" #启动
[root@ansible-server ~]# ansible webservers1 -m service -a "name=httpd state=stopped" #停止
[root@ansible-server ~]# ansible webservers1 -m service -a "name=httpd state=restarted" #重启
[root@ansible-server ~]# ansible webservers1 -m service -a "name=httpd state=started enabled=yes" #开机启动
[root@ansible-server ~]# ansible webservers1 -m service -a "name=httpd state=started enabled=no" #开机关闭
文件模块:file
[root@ansible-server ~]# ansible webservers1 -m file -a 'path=/tmp/88.txt mode=777 state=touch' #创建一个文件
[root@ansible-server ~]# ansible webservers1 -m file -a 'path=/tmp/99 mode=777 state=directory' #创建一个目录
收集信息模块:setup
[root@ansible-server ~]# ansible web1 -m setup -a 'filter=ansible_all_ipv4_addresses'
#只查询ipv4的地址
filter:过滤
[root@ansible-server ~]# ansible web1 -m setup -a 'filter=ansible_*_mb' #内存的信息
[root@ansible-server ~]# ansible -i /home/ansible/hostlist web -m setup -a 'filter=ansible_processor_cores' #磁盘的信息
[root@ansible-server ~]# ansible all -m setup --tree /tmp/facts
文件复制模块:copy
[root@ansible-server ~]# ansible test -m copy -a "src=/srv/myfiles/foo.conf dest=/etc/foo.conf owner=foo group=foo mode=0644"
[root@ansible-server ~]# ansible test -m copy -a "src=/mine/ntp.conf dest=/etc/ntp.conf owner=root group=root mode=644 backup=yes"
计划任务模块:cron
获取每台主机的IP地址
[root@xingdian ~]# ansible -i /home/ansible/hostlist web -m shell -a "ip a | grep eth0| awk 'NR==2{print $2}'" -o > a.txt && cat a.txt |awk '{print $9,$NF}'
shell、command后跟在终端敲的命令
一个典型的例子就是 shell 和 command 模块. 这两个模块在很多情况下都能完成同样的工作, 以下是两个模块之前的区别:
command 模块命令将不会使用 shell 执行. 因此, 像 $HOME 这样的变量是不可用的。还有像 |,& 都将不可用
shell 模块通过shell程序执行, 默认是/bin/sh, <, >, |, ;, & 可用
获取每台主机的内存
[root@xingdian ~]# ansible -i /home/ansible/hostlist web -m shell -a "free -m | awk 'NR==2'" > b.txt -o && cat b.txt | awk '{print $10}'
四:剧本Playbook
案列一:
touch file.yaml
vim file.yaml

检查语法错误
![]()
执行
ansible-playbook file.yaml
案列二:
handlers:由特定条件触发的Tasks
安装ftp
vim ftp.yaml

ansible-playbook --syntax-check ftp.yaml
ansible-playbook ftp.yaml
删除ftp


案列三
[root@ansible-server ansible]# vim /home/ansible/yum.yml
---
- hosts: web
user: root
tasks:
- name: install nginx
yum: name=nginx state=latest
notify: diandian
handlers:
- name: diandian
service: name=nginx state=started
ansible-playbook --syntax-check /home/ansible/yum.yml
ansible-playbook /home/ansible/yum.yml
案例四:
循环:迭代,需要重复执行的任务
对迭代项的引用,固定变量名为”item”,使用with_items属性给定要迭代的元素
元素:1.列表 2.字符串 3.字典
基于字符串列表元素实战
vim php.yaml
- hosts: db
user: root
tasks:
- name: install packages
yum: name={{ item }} state=latest #相当于for循环里面的i
with_items: #取值 。但是不支持通配符
- httpd
- php
- php-mysql
- php-mbstring
- php-gd
验证

vim user.yaml

案列四
vim tags.yaml


上传植物僵尸
解压 unzip
vim apache.yaml

ansible-playbook --syntax-check apache.yaml
ansible-playbook apache.yaml
apache 虚拟主机配置文件
vi jspvz.conf

相关文章:
ansible安装、点对点Ad-Hoc、模块、剧本Playbook
DevOps: 官网:https://docs.ansible.com 自动化运维工具对比 C/S 架构:客户端/服务端 Puppet:基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱 SaltStack:基于 Python 开发,采用 C/S 架构,YAML使得配置脚本更简单.需要配置客户端及服务器…...
Ceph入门到精通-ceph pool 删除导致 misplaced 的原因
misplaced 的原因 Ceph中的misplaced对象是指将对象(或对象的副本)存储在错误的位置上,这可能会导致性能下降或数据不一致的问题。在删除Ceph池时,可能会导致misplaced的原因有以下几个: 删除过程中的操作失误&#x…...
计算机组成原理课程设计
操作控制和顺序控制 操作控制就是由各种微命令来构成的顺序控制就是由P测试和后续微地址构成的 这就构成了整个微指令的三个部分 访存指令就是实现对主存中的数据进行访问或存储 一、 操作控制字段是由各种微命令来构成的,这些微命令怎么来设计? 一个萝卜…...
《从菜鸟到大师之路 MySQL 篇》
《从菜鸟到大师之路 MySQL 篇》 数据库是什么 数据库管理系统,简称为DBMS(Database Management System),是用来存储数据的管理系统。 DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 实现读取自动化需要编程…...
使用qt完善对话框功能
1、 完善登录框 点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两…...
Day 03 python学习笔记
位运算 基于二进制的运算(计算机的底层基于位运算) 计算机最小单位:bit (比特/位/二进制) 1byte(字节) 8bit ( 0000 0000) &:与 (全真为真,一假则…...
优化类问题概述
数学建模系列文章: 以下是个人在准备数模国赛时候的一些模型算法和代码整理,有空会不断更新内容: 评价模型(一)层次分析法(AHP),熵权法,TOPSIS分析 及其对应 PYTHON 实现代码和例题…...
第一个 Go 程序“hello,world“ 与 main 函数
第一个 Go 程序"hello,world" 与 main 函数 文章目录 第一个 Go 程序"hello,world" 与 main 函数一.创建“hello,world”示例程序二. “hello,world” 程序结构拆解三、main 函数四、Go 语言中程序是怎么编译…...
MySQL缓冲池Buffer Pool
前言 在应用系统中,为加速数据访问,会把高频的数据放在「缓存」(Redis、MongoDB)里,减轻数据库的压力。在操作系统中,为了减少磁盘IO,同时为了快速响应,引入了「缓冲池」(buffer pool)机制。 MySQL…...
springboot实现发送邮箱验证码
准备工作 在邮箱官网开放SMTP授权,获取相应密钥,才可以进行发送邮件 这里以网易163邮箱为例,登录邮箱后,依次点击“设置-POP3/SMTP/IMAP” ,然后开启SMTP服务。这时候会提示一个授权码,例如:H…...
ESP8266使用记录(三)
通过udp把mpu6050数据发送到PC端 /********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : ESP8266WiFiUdp_12 团队/Team : 太极创客团队 / Taichi-Maker (w…...
基于微信小程序的在线视频课程学习平台设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言用户微信端的主要功能有:管理员的主要功能有:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉…...
CloudCompare 二次开发(15)——点云添加高斯噪声
目录 一、概述二、代码集成三、结果展示一、概述 不依赖任何第三方点云相关库,使用CloudCompare编程实现点云添加高斯噪声。添加高斯噪声的算法原理见:PCL 点云添加高斯噪声并保存。 二、代码集成 1、mainwindow.h文件public中添加: void doActionAddGassNoise(); //…...
一波免费、好用的API接口分享
全国快递物流地图轨迹查询:【H5物流轨迹、单号识别】通过物流单号和收寄件地址,自动评估物流时效,并在地图中展示包裹运输轨迹。包括顺丰、圆通、申通等主流快递公司。自动识别快递公司及单号,实时查询,稳定高效&#…...
Android App ~ LiveData
LiveData 两种更新数据方式 setValue(T value)postValue(T value) setValue()只能在主线程中调用,postValue()可以在任何线程中调用。 MutableLiveData 1.首先LiveData其实与数据实体类(POJO类)是一样的东西,它负责暂存数据. 2.其次LiveData其实也是一个观察者…...
全球第4大操作系统(鸿蒙)的软件后缀.hap
system exe 2022-12-01 04:38:38 首页 > 操作系统 145|0条评论 鸿蒙OS兼容已有安卓程序:这事不稀奇。 其实一个系统兼容另外系统的可执行程序并非新鲜事,比如linux下的wine和crossover可以兼容许多win系统的.exe程序。 作为回应,Wind…...
算法练习第六十四天
LCR 184. 设计自助结算系统 - 力扣(LeetCode) 总结:利用一个双端维护队列一个往后递减的队列,对头是最大值,每次进入一个新值时就一直和队尾元素比较将比新的值小的数排出,这样能保证留在队列中的数都是会…...
安卓系列机型 框架LSP 安装步骤 支持多机型 LSP框架通用安装步骤【二】
安卓玩机教程---全机型安卓4----安卓12 框架xp edx lsp安装方法【一】 低版本可以参考上个博文了解相关安装方法。 LSP框架优点 简单来说装lsp框架的优点在于可以安装各种模块。包括 但不限于系统优化 加速 游戏开挂等等的模块。大致相当于电脑的扩展油猴 Lspos…...
实现一个宽高自适应的正方形
.square {width: 10%;height: 10vw;background: tomato; }.square {width: 20%;height: 0;padding-top: 20%;background: orange; }.square {width: 30%;overflow: hidden;background: yellow; } .square::after {content: ;display: block;margin-top: 100%; }...
shell脚本命令
Shell命令是在类Unix操作系统中使用的命令行解释器(shell)中执行的命令。Shell命令可以用于执行系统命令、操作文件、进行文本处理、管理进程等。以下是一些常见的Shell命令: 1. ls:列出当前目录下的文件和文件夹。 2. cd&#x…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
