ansible基础
ansible
1.概述
ansible是基于python语言开发,配置管理和部署应用的工具。批量的配置,部署,管理“上千台”主机 (实际一次100台左右),ansible只要在一台主机上就可以对其他主机进行操作。
(1)功能
- 实现远程连接主机
- 批量配置,批量操作,ansible可以对主机进行组划分,也可以把名下所有的主机进行划分,进行批量操作
- 远程自动化运维(脚本--->playbook)
(2)ansible的工作模式
没有固定的客户端,不是C/S
使用模块来进行工作,ansible有很多模块,copy shell... 真正在主机上执行任务的是模块。
(3)ansible的特性
幂等性,计算机中的概念,在幂等操作中,无论执行多少次,结果都是一样的,多次执行相同的操作,不会产生不同的结果。
在ansible中,如果操作符合幂等性,那么不会对目标主机产生额外的副作用。
(4)ansible的组件
-
lnventory 主机清单 主机组
-
modules 模块*
-
plugins 插件
-
playbook 剧本(脚本)*
(5)ansible的优缺点
优点:部署快,只要能上网,或者有源码包,安装部署很简单;基于yaml格式编写的脚本,同一台服务器上多次执行同一个任务没有任何副作用。
缺点:语法要专门学;主机和控制主机必须都是linux,至少有两台服务器,主机和server。
2.安装
#安装ansible (ubuntu系统)
apt -y install ansible #在主机192.168.206.30上安装
#免密登录
ssh-keygen -t rsa
apt -y install sshpass
sshpass -p '1' ssh-copy-id root@192.168.206.50 #-p 登录密码
sshpass -p '1' ssh-copy-id root@192.168.206.55
#配置文件
mkdir /etc/ansible
cd /etc/ansible
vim hosts
[web]
192.168.206.50
[web1]
192.168.206.55
#主机50在web组,主机55在web1组
#如果不想要设置免密登录,可以手动创建ansible.cfg
vim ansible.cfg
[defaults]
host_key_checking = False #禁止使用ssh的秘钥检查
inventory=/etc/ansible/hosts #指定主机清单的文件
forks = 20 #同时可以对多少主机进行配置,默认是5,可以提高执行速度
pipelining = True #减少对ssh会话中的操作,提高性能
strategy = free #任务会立即对下一个主机并行执行,不用等待其他主机完成
retry_files_enabled = False #如果任务失败,禁用自动重试的功能vim hosts
[web]
192.168.206.5[0:9] #表示50,51,52,53...59
[all:vars] #组内所有主机统一用root登录,登录密码为1,端口为22
ansible_user=root
ansible_password=1
ansible_port=22
#如果是centos系统,yum -y install ansible之后在/etc/ansible下有配置文件
直接修改即可
vim /etc/ansible/ansible.cfg
#71行取消注释
host_key_checking = False
vim hosts
[web]
192.168.206.5[0:9] #表示50,51,52,53...59
[all:vars] #组内所有主机统一用root登录,登录密码为1,端口为22
ansible_user=root
ansible_password=1
ansible_port=22
3.ansible模块
-
command模块
就是在目标主机执行命令,不支持管道符,也不能使用重定向。----默认模块
ansible all -m command -a 'chdir=/opt tar -xf nginx-1.22.tar.gz'
ansible 固定开头
all:<组名,ip,all,> 声明操作的对象
-m 指定模块
command 就是模块名
-a 指定参数(指定操作)
'chdir=/opt tar -xf nginx-1.22.tar.gz': 具体要执行的命令
chdir=/opt 声明目标主机的目录
creates 判断指定的文件是否存在,如果存在,不执行后续的操作
removes 判断指定的文件是否存在,如果存在,执行后续的操作
-
shell模块
是command模块的升级,但是可以使用管道符,可以重定向还可以使用连接符链接多个命令。
可以用 && 或者 ; 连接多条命令
-
cron模块
分、时、日、月、周
minute/hour/day/month/weekday
-m cron
name 计划任务的名称 不是必须的
job 计划执行的命令
state: present 表示添加,默认就是添加,可以不写
absent 表示移除
-
user和group
-m user
-m group
name 用户名或者组名 必有参数
state=present/absent 创建/删除
uid 数字
gid 数字
shell 默认就是/bin/bash
create_home yes/no 是否替换用户的家目录
remove=yes/no 删除用户时是否删除家目录
password 创建用户的登录密码
system yes/no 表示用户是否是系统用户
-
copy模块
dest: 文件复制到目标主机的位置
src: 源文件,主机的文件 --->目标主机
mode: 修改目标文件权限
owner: 文件的所有者
group: 文件的所在组
content: 复制输出的内容到目标主机,使用content就不能使用src
如果复制目录,源文件的路径是目录,目标主机的路径也必须是目录才可以复制
-
file模块
和copy有相似之处,
mode: 修改目标文件权限
owner: 文件的所有者
group: 文件的所在组
path----> 目标主机的文件路径
state:
link 做软连接 touch 创建 absent 删除
#特殊情况下才会有src
src ----> 指定创建的文件为软连接
-
hostname和ping
hostname 设置目标主机的主机名
ping 测试目标主机的连通性
-
yum/apt模块---安装和卸载
ansible web -m apt -a 'name=nginx' #安装
ansible web -m apt -a 'name=nginx state=absent' #删除
ansible web -m shell -a 'apt -y install nignx' #安装用shell模块也可以
-
service模块
也可以用command或者shell模块---相当于systemctl 对服务的状态进行控制
name=软件名
enabled=true--->开机自启
state:
started/stopped/restarted 开/停/重启
runlevel=40 设定开机自启的运行级别,数字越大,优先级越高
#ubuntu安装软件完毕自启,cnetos要设置开机自启
-
iptables模块
iptables模块 -- 支持centos和ubuntu
firewalld -- 仅支持centos
-
script模块
指定本地的脚本,然后脚本中的命令在目标主机执行,结果也是输出到目标主机。
创建完脚本后要赋权
-
setup 模块
收集节点信息,查看目标主机的配置信息
通过facts组件收集
filter是过滤,不加filter就显示全部
相关文章:

ansible基础
ansible 1.概述 ansible是基于python语言开发,配置管理和部署应用的工具。批量的配置,部署,管理“上千台”主机 (实际一次100台左右),ansible只要在一台主机上就可以对其他主机进行操作。 (1&…...

人工智能之深度学习_[2]-PyTorch入门
PyTorch 1.PyTorch简介 1.1 什么是PyTorch PyTorch是一个基于Python的科学计算包 PyTorch安装 pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simplePyTorch一个基于Python语言的深度学习框架,它将数据封装成张量(Tensor)来进行…...

基于Java的语音陪聊软件——支持聊天私聊-礼物系统-直播系统-缘分匹配-游戏陪玩
丰富的经验、成熟的技术,打造适合当下市场发展的语音交友软件源码。Java 语言凭借其独特的优势,为这款语音陪聊软件的稳健运行和持续发展奠定了坚实基础。它不仅融合了聊天私聊、礼物系统和直播系统等实用且有趣的功能,还创新性地引入了缘分匹…...
Go语言的文件操作
Go语言的文件操作 Go语言是一种开源的编程语言,由谷歌开发,具有简单、高效和并发的特点。在日常开发中,文件操作是一个非常重要且常见的任务。从读取配置文件到写入日志文件,从处理数据到存储结果,文件操作无处不在。…...
php审计1-extract函数变量覆盖
php审计1-extract函数变量覆盖 这是一个关于php审计的栏目,本人也是初学者,分享一下网上的关于php审计的一些知识,学习一下php的语法,顺便记录一下学习过程。 以下是一个关于php审计ctf题 <?php$flagflag.txt; extract($_…...

百度热力图数据原理,处理及论文应用7
目录 0、数据简介0、示例数据1、百度热力图数据日期如何选择1.1、其他实验数据的时间1.2、看日历1.3、看天气 2、百度热力图几天够研究?部分文章统计3、数据原理3.1.1 ** 这个比较重要,后面还会再次出现。核密度的值怎么理解?**3.1.2 Csv->…...

端口镜像和端口安全
✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网络安全从菜鸟到飞鸟的逆袭 目录 一,端口镜像二…...

Elasticsearch:Jira 连接器教程第一部分
作者:来自 Elastic Gustavo Llermaly 将我们的 Jira 内容索引到 Elaasticsearch 中以创建统一的数据源并使用文档级别安全性进行搜索。 在本文中,我们将回顾 Elastic Jira 原生连接器的一个用例。我们将使用一个模拟项目,其中一家银行正在开发…...
ThreeJs功能演示——几何体操作导入导出
1、内部创建几何体导出编辑能力 1)支持内部创建的面、正方体、球体 内部创建物体时,如果是三维物体,要创建集合形状geometry,和对应的材质material。再一起创建一个三维物体。 // 存储创建的几何体列表const geometries [];cre…...
LeetCode::2270. 分割数组的方案数
2270. 分割数组的方案数 思路 前缀和 提示 给你一个下标从 0 开始长度为 n 的整数数组 nums 。 如果以下描述为真,那么 nums 在下标 i 处有一个 合法的分割 : 前 i 1 个元素的和 大于等于 剩下的 n - i - 1 个元素的和。下标 i 的右边 至少有一个 元…...

elementui表单验证,数据层级过深验证失效
先看示例代码,代码为模拟动态获取表单数据,然后动态添加rules验证规则,示例表单内输入框绑定form内第四层: <template><el-form :model"form" :rules"rules" ref"ruleForm" label-width&…...
【Java】LinkedHashMap (LRU)淘汰缓存的使用
文章目录 **1. initialCapacity(初始容量)****2. loadFactor(加载因子)****3. accessOrder(访问顺序)****完整参数解释示例****示例验证** LinkedHashMap 在 Java 中可维护元素插入或访问顺序,并…...
CancerGPT :基于大语言模型的罕见癌症药物对协同作用少样本预测研究
今天我们一起来剖析一篇发表于《npj Digital Medicine》的论文——《CancerGPT for few shot drug pair synergy prediction using large pretrained language models》。该研究聚焦于一个极具挑战性的前沿领域:如何利用大语言模型(LLMs)在数…...

《汽车维护与修理》是什么级别的期刊?是正规期刊吗?能评职称吗?
问题解答: 问:《汽车维护与修理》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《汽车维护与修理》级别? 答:国家级。主管单位:中国汽车维修行业协会 …...

tomcat状态一直是Exited (1)
docker run -di -p 80:8080 --nametomcat001 你的仓库地址/tomcat:9执行此命令后tomcat一直是Exited(1)状态 解决办法: 用以下命令创建运行 docker run -it --name tomcat001 -p 80:8080 -d 你的仓库地址/tomcat:9 /bin/bash最终结果 tomcat成功启动...
消息中间件的基础概念入门
目录 一、什么是消息中间件 1.1、简介 1.2、消息中间件的主要作用 解耦合 异步通信 负载均衡 可靠性与持久性 消息路由与调度 削峰 事务支持 监控与审计 跨平台和跨语言支持 二、常用消息中间件对比 2.1、 RabbitMQ 2.1.1、特点 2.1.2、适用场景 2.2、Apache K…...

基于Web的宠物医院看诊系统设计与实现(源码+定制+开发)在线预约平台、宠物病历管理、医生诊疗记录、宠物健康数据分析 宠物就诊预约、病历管理与健康分析
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

Excel数据叠加生成新DataFrame:操作指南与案例
目录 一、准备工作 二、读取Excel文件 三、数据叠加 四、处理重复数据(可选) 五、保存新DataFrame到Excel文件 六、案例演示 七、注意事项 八、总结 在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步的分析和处…...
Web 开发入门之旅:从静态页面到全栈应用的第一步
Web 开发入门之旅:从静态页面到全栈应用的第一步 在当今互联网飞速发展的时代,掌握 Web 开发技能已成为众多技术爱好者和职场人士的必修课。然而,对于初学者而言,面对繁杂的技术栈和庞大的学习资源,往往感到无从下手。…...
WebSocket实现分布式的不同方案对比
引言 随着实时通信需求的日益增长,WebSocket作为一种基于TCP的全双工通信协议,在实时聊天、在线游戏、数据推送等场景中得到了广泛应用。然而,在分布式环境下,如何实现WebSocket的连接管理和消息推送成为了一个挑战。本文将对比几…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...