Ansible服务

Ansible自动化服务器更新指南 自动化是现代IT运维的标配之一,而Ansible就是该领域中的一颗耀眼明星。它基于Python开发,能够实现IaC(Infrastructure as Code),通过简单的配置即可实现复杂的系统管理任务。Ansible不需要在目标主机上安装代理,它利用SSH协议进行通信,结合YAML语言编写的Playbook,可以轻松部署应用、配置系统、执行任务。 阅读详情

第一章 Ansible介绍

0.手工运维与自动化运维

1.手动运维时代

在这里插入图片描述

2.自动化运维

在这里插入图片描述
3.自动化运维带来的好处
在这里插入图片描述

1.什么是Ansible

Ansible 是 python 中的一套模块,系统中的一套自动化工具,只需要使用 ssh 协议连接及可用来系统管理、自动化执行命令等任务。

2.为什么需要Ansible?

批量管理功能:

  1. 可以实现批量系统操作配置

  2. 可以实现批量软件服务部署

  3. 可以实现批量文件数据分发

  4. 可以实现批量系统信息收集
    管理服务意义:

  5. 提高工作的效率(部署综合架构)

  6. 提高工作准确度

  7. 减少维护的成本

  8. 减少重复性工作
    安装部署简单:

  9. 没有配置文件(不需要配置)

  10. 不需要启动服务

  11. 客户端没有需要部署任务

3.如何学习Ansible?

1.官方文档
2.帮助文档
3.其他人写好的文档

第二章 Ansible安装部署

Ansible的安装部署十分简单,只需要yum安装就行

[root@m01 ~]# yum install ansible -y

第三章 Ansible主机清单

/etc/ansible/hosts 主机资产清单文件,用于定义被管理主机的认证信息, 例如 ssh 登录用户名、密码以及 key相关信息。

1.主机支持主机名通配以及正则表达式,例如 web[1:3].oldboy.com 代表三台主机
2.主机支持基于非标准的 ssh 端口,例如 web1.oldboy.com:6666
3.主机支持指定变量,可对个别主机的特殊配置,如登陆用户,密码
4.主机组支持指定变量[group_name:vars],同时支持嵌套组[game:children]

1.指定主机组相关配置

#主机组
[root@m01 ~]# cat /etc/ansible/hosts
[webserver]
172.16.1.31
172.16.1.41
#主机+端口+密码
[webserver]
172.16.1.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=‘123456’
172.16.1.41 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=‘123456’
#对整个主机组都生效的变量
[webserver:vars]
ansible_ssh_pass=‘123456’

#针对所有webserver组都生效的变量
[webserver:vars]
ansible_ssh_pass=‘123456’

第四章 Ansible常用模块

0.如何学习模块

ansible官方网站:

https://docs.ansible.com/
模块的应用语法格式:
ansible 主机名称/主机组名称/主机地址信息/all -m(指定应用的模块信息) 模块名称 -a(指定动作信息) “执行什么动作”

1.ping

应用场景:
测试主机和ansible之间的连通性
举例:
对webserver主机组测试是否连通

ansible webserver -m ping

2.command 简单模块

应用场景:
类似shell,但是只能执行简单的命令,复杂的命令和有些符号并不能识别,用的比较少
01.查看主机名,可以执行成功

[root@m01 ~]# ansible webserver -m ping
172.16.1.41 | SUCCESS => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“ping”: “pong”
}
172.16.1.31 | SUCCESS => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“ping”: “pong”
}
02.使用awk拼接查看主机IP执行失败

[root@m01 ~]# ansible webserver -m command -a “ifconfig eth0|grep 10”
172.16.1.31 | FAILED | rc=255 >>
SIOCSIFADDR: 没有那个设备
eth0|grep: ERROR while getting interface flags: 没有那个设备non-zero return code

172.16.1.41 | FAILED | rc=255 >>
SIOCSIFADDR: 没有那个设备
eth0|grep: ERROR while getting interface flags: 没有那个设备non-zero return code

3.shell 万能模块

万能模块,所有命令都可以执行,和本地执行效果一样
01.使用管道查询IP地址

[root@m01 ~]# ansible webserver -m shell -a “ifconfig eth0|grep 10.0.1”
172.16.1.41 | CHANGED | rc=0 >>
inet 10.0.1.41 netmask 255.255.255.0 broadcast 10.0.1.255

172.16.1.31 | CHANGED | rc=0 >>
inet 10.0.1.31 netmask 255.255.255.0 broadcast 10.0.1.255
02.批量执行脚本
在其他主机上创建一个脚本,内容为打印主机名

cat > echo.sh << EOF
#!/bin/bash
echo “$(hostname)”
EOF
然后使用ansible的shell模块批量执行

[root@m01 ~]# ansible webserver -m shell -a “/bin/bash /root/echo.sh”
172.16.1.41 | CHANGED | rc=0 >>
backup

172.16.1.31 | CHANGED | rc=0 >>
nfs01

4.copy 拷贝文件

01.拷贝m01的hostsname文件到其他主机的/opt目录下

[root@m01 ~]# ansible 172.16.1.31 -m copy -a “src=/etc/hostname dest=/opt”
172.16.1.31 | CHANGED => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: true,
“checksum”: “f434396716e2c9aed47cfde87c491cce5a2c08fa”,
“dest”: “/opt/hostname”,
“gid”: 0,
“group”: “root”,
“md5sum”: “318d7defb693a2eb0d4f1a7a96575a57”,
“mode”: “0644”,
“owner”: “root”,
“size”: 4,
“src”: “/root/.ansible/tmp/ansible-tmp-1563780990.63-144254987732501/source”,
“state”: “file”,
“uid”: 0
}
02.在传输文件时修改文件属主和属组信息

ansible 172.16.1.31 -m copy -a “src=/root/rsync.password dest=/etc/ owner=oldboy group=oldboy”
03.在传输文件时修改文件的权限信息

ansible 172.16.1.31 -m copy -a “src=/root/rsync.password dest=/etc/ mode=0600”
04.创建文件并直接写入内容

ansible 172.16.1.31 -m copy -a “content=‘oldboy’ dest=/etc/rsync.password mode=0600”
05.复制目录
src后面目录没有/: 将目录本身以及目录下面的内容都进行远程传输复制

ansible 172.16.1.31 -m copy -a “src=/data dest=/data”
src后面目录有/: 只将目录下面的内容都进行远程传输复制

ansible 172.16.1.31 -m copy -a “src=/data/ dest=/data”
参数说明:

src #推送数据的源文件信息
dest #推送数据的目标路径
backup #对推送传输过去的文件,进行备份
content #直接批量在被管理端文件中添加内容
group #将本地文件推送到远端,指定文件属组信息
owner #将本地文件推送到远端,指定文件属主信息
mode #将本地文件推送到远端,指定文件权限信息

5.file 设置文件属性

01.创建文件夹

ansible oldboy -m file -a “path=/root/oldboy state=directory”
02.创建文件并更改属性

ansible oldboy -m file -a “path=/root/test.txt state=touch mode=777 owner=root group=root”
03.创建软链接

ansible oldboy -m file -a “src=/root/abc path=/root/abc_link state=link”
参数说明:

path #指定远程主机目录或文件信息
recurse #递归授权
state
directory #在远端创建目录
touch #在远端创建文件
link #link 或 hard 表示创建链接文件
absent #表示删除文件或目录
mode #设置文件或目录权限
owner #设置文件或目录属主信息
group #设置文件或目录属组信息

6.script模块

编写脚本
[root@m01 ~]# mkdir -p /server/scripts
[root@m01 ~]# cat /server/scripts/yum.sh
#!/usr/bin/bash
yum install -y iftop
#在本地运行模块,等同于在远程执行,不需要将脚本文件进行推送目标主机执行
[root@m01 ~]# ansible oldboy -m script -a “/server/scripts/yum.sh”

7.cron

01.创建一条定时任务

ansible oldboy -m cron -a “minute=* hour=* day=* month=* weekday=* job=’/bin/sh
/server/scripts/test.sh’”
02.添加定时任务注释信息,防止重复

ansible oldboy -m cron -a “name=‘cron01’ job=’/bin/sh /server/scripts/test.sh’”
03.删除相应定时任务

ansible oldboy -m cron -a “name=‘ansible cron02’ minute=0 hour=0 job=’/bin/sh
/server/scripts/test.sh’ state=absent”
04.注释相应定时任务,使定时任务失效

ansible oldboy -m cron -a “name=‘ansible cron01’ minute=0 hour=0 job=’/bin/sh
/server/scripts/test.sh’ disabled=no”

8.user

01.创建用户指定uid,gid,不创建家目录也不允许登陆

ansible oldboy -m user -a “name=oldgirl uid=888 group=888 shell=/sbin/nologin
create_home=no”
参数说明:

uid #指定用户的 uid
group #指定用户组名称
groups #指定附加组名称
password #给用户添加密码
shell #指定用户登录 shell
create_home #是否创建家目录

9.group

01.创建用户组

ansible oldboy -m group -a “name=oldzhang gid=888 state=present”
参数说明:

name #指定创建的组名
gid #指定组的 gid
state
absent #移除远端主机的组
present #创建远端主机的组(默认)

10.yum

ansible oldboy -m yum -a “name=httpd state=installed”
参数说明:

name #指定要安装的软件包名称
state #指定使用 yum 的方法
installed, present #安装软件包
removed, absent #移除软件包
latest #安装最新软件包

11.service

ansible oldboy -m service -a “name=nfs state=stopped enabled=yes”
参数说明:

name # 定义要启动服务的名称
state # 指定服务状态
started #启动服务
stopped #停止服务
restarted #重启服务
reloaded #重载服务
enabled #开机自启

12.mount

ansible oldboy -m mount -a “src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=present”
ansible web -m mount -a “src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=mounted”
web -m mount -a “src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=unmounted”
web -m mount -a “src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=absent”
状态解释

present # 开机挂载,仅将挂载配置写入/etc/fstab
mounted # 挂载设备,并将配置写入/etc/fstab
unmounted # 卸载设备,不会清除/etc/fstab 写入的配置
absent # 卸载设备,会清理/etc/fstab 写入的配置

13.unarchive

01.解压远程服务器的压缩包到指定目录
创建压缩包:

cd /etc && tar zxvf /opt/sys.tar.gz etc/fstab etc/hosts
执行命令:

ansible 172.16.1.31 -m unarchive -a “src=/opt/sys.tar.gz dest=/opt/ remote_src=yes”
02.把本地文件解压到目标机器指定目录
创建命令

cd / && tar zcvf /opt/log.tar.gz var/log/messages
ansible 172.16.1.31 -m unarchive -a “src=/opt/log.tar.gz dest=/opt/”

14.archive

01.压缩单个文件

ansible 172.16.1.31 -m archive -a “path=/var/log/message dest=/tmp/log.tar.gz format=gz force_archive=true”

15.setup 获取主机信息

01.直接执行获取主机信息

ansible 172.16.1.31 -m setup
02.只将主机某个信息打印出来

[root@m01 /server/scripts/test]# ansible 172.16.1.41 -m setup -a “filter=ansible_all_ipv4_addresses”
172.16.1.41 | SUCCESS => {
“ansible_facts”: {
“ansible_all_ipv4_addresses”: [
“172.16.1.41”,
“10.0.1.41”
],
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false
}

16.查看帮助

ansible-doc -l
ansible-doc copy

第六章 Ansible输出信息颜色解释

  1. 绿色信息: 查看主机信息/对主机未做改动
  2. 黄色信息: 对主机数据信息做了修改
  3. 红色信息: 命令执行出错了
  4. 粉色信息: 忠告信息
  5. 蓝色信息: 显示ansible命令执行的过程
瑞芯微RK3588部署YOLOv8模型 写下这篇博客进行记录,以防后面忘了怎么部署。 阅读详情

相关推荐

Hypermesh联合ABAQUS—Sets的建立和编辑

打开part copy对话框在对话框的最上面位置可以输入copy后的名称,然后将最下面的Separate disconnected regions into parts(将不连续的区域分割成parts)选项的前面方框勾选上。打开abaqus软件界面,File→import→model,将file filter选为inp格式,找到要导入的有限元文件,单击OK导入文件。HyperWorks新建Set时,会在Model Browser显示,打开Create Set对话框显示详细信息。快捷键,高亮set的内容。

动力资料屋的博客 1290

走进自动化运维之Ansible服务部署,附带(参数及模块)详解!

何为Ansible: 简单的自动化运维管理工具,不需要配置代理工具,基于Python研发。 Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。 自动化运维工具“三剑客”: 工具 开发语言 结构 配置文件格式 运行任务 Ansible Python 无 YAML 支持命令行 SaltStack P...

weixin_34253126的博客 1264

从零到一:STM32G431的DSP库集成与FFT实战避坑指南

本文详细介绍了在STM32G431微控制器上集成CMSIS-DSP库并进行FFT实战开发的完整流程。重点解析了通过CubeMX和Keil环境配置DSP库的关键步骤、编译器宏定义陷阱及解决方案,并提供了FFT算法优化、内存管理及常见问题诊断的实用技巧,帮助开发者高效实现嵌入式信号处理应用。

oauth7security的博客 768

【云平台管理】安装应用Ansible服务

YAML是一种用来表达资源序列的格式,参考了其他很多种语言所以具有很高的可读性。YAML是YAML Ain t Markup Language的缩写,即YAML不是XML。不过在研发这种语言时,YAML的意思其实是“Yet Another Markup Language”(仍是一种标记语言)。其特性如下:具有很好的可读性,易于实现表达能力好,扩展性好和脚本语言的交互性好有一个一致的信息模型可以基于流来处理Ansible为了更加便捷地管理主机,在主机清单中将被管理主机进行分组命名。

weixin_73059729的博客 1225

ESP8266红外控制美的空调:从协议解析到Home Assistant集成

红外遥控技术作为一种经典的非接触式控制方式,其原理是通过红外发光二极管发射经过特定频率调制的光信号来传递指令。在物联网和智能家居领域,利用微控制器如ESP8266模拟红外信号,成为将传统家电接入智能生态系统的关键技术。这项技术通过精准解析和生成符合设备厂商私有协议的红外编码,实现了对空调、电视等设备的远程与自动化控制,具有很高的实用价值。本文聚焦于美的空调的红外协议,深入探讨了其脉冲宽度调制(PWM)和全量式编码的特点,并提供了基于ESP8266的完整解决方案,包括硬件连接、库函数API详解以及如何将其无缝

weixin_30718391的博客 402

Simulink Test Sequence自动化测试实战:从Excel到模型验证

本文详细介绍了如何利用Excel和MATLAB脚本实现Simulink Test Sequence的自动化测试。通过设计结构化Excel模板管理测试数据,并调用Simulink Test API批量创建与执行测试用例,该方法能显著提升复杂模型单元测试的效率,便于集成到CI/CD流程,实现从数据到验证的全自动化。

weixin_29261711的博客 144

Ansible

引入变量,可以方便playbook重用。比如装包的playbook,包名使用变量。多次执行playbook,只要改变变量名即可,不用编写新的playbookansible支持10种以上的变量定义方式。常用的变量来源如下:inventory变量。变量来自于主机清单文件facts变量。playbook变量。变量在playbook中定义。变量文件。专门创建用于保存变量的文件。推荐变量写入单独的文件。# 使用inventory变量。

it_zhenxiaobai的博客 988

51单片机 DHT11温湿度传感器LCD显示+串口打印+Proteus仿真

DHT11+LCD1602+串口输出+Proteus仿真

perseverance51博客 7198

ansible自动化运维工具及常见模块的使用

ansible是一个基于Python开发的自动化运维工具,也叫机器管理工具。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。ansible可以实现批量管理成百上千的多台主机,是应用级别的跨主机编排工具。

lcy913的博客 1352

Kylin操作系统下OpenLDAP安装

Kylin操作系统下OpenLDAP安装

跟着大数据和AI去旅行 1612

连接参数详解:Connection Interval, Slave Latency, Supervision Timeout 的协同与调优实战

在低功耗蓝牙(BLE)开发与调试中,Connection Interval(连接间隔)、Slave Latency(从机延迟) 和 Supervision Timeout(监督超时) 是三个核心参数。它们不仅直接影响设备的通信性能、功耗表现和连接稳定性,更是各类技术面试与认证考试的高频考点。本文将从基础概念出发,深入剖析三者的协同机制,结合历年真题解析考点与解题思路,并通过实战案例演示调优方法,快速掌握这一核心知识点。

byte轻骑兵的技术小窝 2761

Ansible服务介绍

Ansible 是一款由python开发的开源自动化工具,专注于 配置管理、应用部署、任务编排 和 持续交付。它通过简单的 YAML 语法定义自动化流程,无需在被管理节点安装额外客户端,仅依赖 SSH 和 Python 即可运行。

m0_56363537的博客 1264

《多模态融合改进》目录一览 | 专栏介绍 :全网 第一份 完整的多模态改进教程,提供《多模态模型改进完整项目包》-开箱即用

在大家订阅专栏后,便可获得多模态模型改进完整项目包-开箱即用,方便简单

Limiiiing的博客 1万+

ansible批量管理服务器,ansible-playbook

ansible的安装: [root@ansible ~]#yum install ansible [root@ansible ~]#ansible --version //验证ansible是否安装成功 ansible配置文件查找顺序: – 首先检测ANSIBLE_CONFIG变量定义的配置文件 – 其次检查当前目录下的 ./ansible.c...

LINUX(云计算) 757

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

综合架构管理服务 Ansible

综合架构管理服务. 2020.12.30 介绍部分 1.ansible批量管理服务概念 2.ansible批量管理服务特点 3.ansible批量管理服务部署 4.ansible中批量管理服务应用—模块应用 ansible模块命令语法 ansible常用模块 知识点回顾 1.远程管理服务介绍 ssh 数据加密 22 telnet 数据明文 23 2.ssh远程管理服务工作原理 私钥 公钥 用途1:对数据进行加密处理 用途2:对用户房访问进行认证 3.ssh远程连接的方式 a.基于口令的方式进行连接 b.基于

weixin_52610048的博客 429

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Ansible 语言服务器教程

Ansible 语言服务器教程 项目介绍 Ansible Language Server(ALS)是为提升Ansible配置管理和自动化脚本编写体验而设计的语言服务实现。它之前作为一个独立仓库存在,但其代码库现已集成至vscode-ansible中,专门服务于Visual Studio Code的Ansible插件,以便提供更强大的语法高亮、自动完成、错误检查等特性。Als基于MIT许可协议,致力...

gitblog_00495的博客 1274

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Ansible在多台服务器上运行python脚本

使用 Ansible 在多台服务器上批量运行 Python 脚本是一种高效且可靠的方式。以下是具体的实现步骤和示例代码: --- ### 1. 准备工作 - **安装 Ansible**:确保您的 Ansible 控制节点已安装 Ansible。如果没有安装,可以通过以下命令安装: ```bash pip install ansible ``` - **配置 Inventory 文件**:在 Ansible 控制节点上创建一个 `hosts.ini` 文件,列出需要运行脚本的目标服务器: `

weixin_46689397的博客 938

Ansible案例:使用ansible配置DNS服务器

本案例详细讲述了,怎么使用Ansible在被控节点上配置DNS服务。

xike___的博客 974

使用Ansible和Kubernetes快速部署微服务

在这种情况下,路由将从/env1/hello路由前进到env1命名空间中的Hello K8s服务,并从/env2/hello路由前进到env2命名空间中的Hello K8s服务。因为my_name字段中定义的内容替换为application.properties微服务的每个实例都有不同的价值,因此我们预计每个K8S服务/部署都会发出不同的欢迎消息。因此,多个实例组合在一起可以实现复杂的路由,如上所示。这导致了更快的下载和疏忽的上传时间,因为映像是直接加载到worker节点的容器守护进程中的。

免费 943

Ansible一键安装Harbor服务

环境说明企业内网环境,使用docker-compose的方式安装Harbor服务,需要先安装docker、docker-compose两个服务,将以二进制的方式安装docker和docker-compose,以适配各种安装环境。docker版本:20.10.21,建议使用20.10以上的版本,低版本的会出现安装异常;Docker-compose版本:2.24.7Harbor版本:2.10.3一、编...

weixin_38320674的博客 213

批量重启linux服务器,ansible 批量重启服务,ansible批量重启

ansible 批量重启服务,ansible批量重启ansible 10.1.1.113 -m service -a 'name=puppet state=restarted enabled=yes'- name: Start MySQLservice: name=mysqld state=started enabled=yeshandlers:- name: restart mysqlservi...

weixin_32290249的博客 2143

Ansible之批量管理服务器

Ansible连接服务器

梦幻通灵 676

Ansible批量配置服务器免密登录步骤详解

192.168.85.138 安装ansible,计划配置到139的免密192.168.85.139 待配置免密。

fenglei2020的博客 1508

搭建基于Ansible的服务器自动化运维管理平台

pxe批量部署centos8服务器并编写playbook初始化基础环境

m0_61746515的博客 2170

一万台服务器用saltstack还是ansible?

SaltStack适合大规模、高性能、实时管理的环境,特别是在需要并行执行和快速响应的场景中,适合处理一万台服务器的管理。Ansible更加简洁易用,适合配置管理和自动化任务,虽然它可以扩展到大规模环境,但在执行性能上可能不如SaltStack。如果你需要极高的并发性能,或者你的环境极其庞大,SaltStack可能是更合适的选择。如果你更注重易用性和简化的管理,Ansible也是一个不错的选择,尤其是如果你的团队已经有Ansible的使用经验的话。

HCIE 数通、RHCE、HCIP 欧拉、MySQL OCP 持证工程师。 1332

云计算-ansible部署zabbix监控服务

摘要:本文介绍了使用Ansible自动化部署Zabbix监控系统的过程。首先配置本地YUM源(ansible、centos、zabbix),然后编写Ansible剧本安装所需软件包(httpd、mariadb、zabbix等)。剧本包含创建数据库用户、导入数据库、配置zabbix_server.conf、设置时区等步骤,最后启动相关服务(mariadb、httpd、zabbix-server)。整个过程通过YAML文件实现自动化部署,包括复制配置文件、服务管理等操作,最终完成Zabbix监控系统的安装与配置

qq_51879297的博客 926
上一篇: 文档字符编码识别错误
下一篇: SSH服务
Jsben
博客等级 码龄7年 38粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值