Ansible:远程自动化运维

2024-08-22 00:20

本文主要是介绍Ansible:远程自动化运维,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Ansible:远程自动化运维

Ansible

是基于python开发的配置管理和应用部署工具。也是自动化运维的重要工具。可以批量配置,部署,管理上千台主机。只需要固定在一台主机配置ansible就可以完成其他主机的操作

操纵模式

1.1 模块化操作,命令行执行

1.2 playbook,剧本,也是把命令行脚本化,脚本的格式yaml格式

幂等性

ansible特性:幂等性

幂等性:多次操作或者是多次执行,对系统的影响不会发生变化,无论执行对多少次结果都是一样的

ansible什么都不会做

四大组件

1.1 Inventory(主机清单):主机组,必须要声明管理主机的地址或者其他配置,不声明ansible无法对目标主机进行操作

1.2 modules(模块):学习核心。ansible的功能是靠模块来实现的

1.3 插件

1.4 playbooks(剧本):脚本(复用)

安装及模块

语法:命令行

192.168.100.12 ansible

192.168.100.13 被管理端

192.168.100.14 被管理端

同时
systemctl stop firewalld
setenforce 0
df -htest2
yum -y install epel-release
yum -y install ansible
cd /etc/ansible
vim hosts
20 取消注释[web]
23 192.168.100.13
33 [xy102]
37 192.168.100.14
wq!ssh-keygen -t rsa
# 一路回车sshpass -p '123' ssh-copy-id root@192.168.100.13sshpass -p '123' ssh-copy-id root@192.168.100.14ansible-doc -l  # 列出ansible所有已安装的模块(支持的模块)
q   # 退出

模块和语法

第一个模块:command

基础模块,也是ansible的默认模块,不支持管道符和重定向操作,执行一般的linux命令

ansible <组名/ip地址> -m 指定模块,不加-m,默认使用command,-a <参数或者命令>ansible 192.168.100.13 -m command -a "date"
yes  # 报错再执行sshpass -p '123' ssh-copy-id root@192.168.100.13ansible 192.168.100.14 -m command -a "date"
yes  # 报错再执行sshpass -p '123' ssh-copy-id root@192.168.100.14# 集群执行
ansible [web] -m command -a "date"# host里面所有都执行
ansible all -m command -a "date"需要交互的、动态查看、解压都不可以、静态可以--幂等性

常用参数:

chdir:在目标主机提前进入目录,然后执行指令

ansible 192.168.100.13 -a "chdir=/home ls ./"
# 先进入home再执行./(./可不加),chdir相当于cd切换目录

creates:判断文件是否存在,如果存在就不执行后面的指令

test3
touch 123test2
ansible 192.168.100.13 -a "creates=/opt/123 ls /opt"
# 会告诉你存在,不执行后面操作

removes:判断文件是否存在,如果存在,执行指令

ansible 192.168.100.13 -a "removes=/opt/123 ls /opt"

解压

ansible 192.168.100.13 -a "tar -xf /opt/nginx-1.22.tar.gz -C /opt"ansible 192.168.100.13 -a "chdir=/opt tar -xf nginx-1.22.tar.gz "

第二个模块:shell模块

支持管道符和重定向,也可以用逻辑表达式 &&且 ;逻辑或

ansible 192.168.100.14 -a “useradd test" ansible 192.168.100.14 -m shell -a "echo 123456 | passwd --stdin test"ansbile 192.168.100.14 -m shell -a "echo 123 > /opt/123"ansible 192.168.100.14 -m shell -a "cat /opt/123"

多个命令连在一块

ansible 192.168.100.14 -m shell -a "touch /opt/123.txt && echo 123 > /opt/123.txt && cat /opt/123.txt"
# 会有警告的提示

目标主机创建一个脚本,在脚本中写#!/bin/bash ifconfig 然后运行脚本,在一条命令完成

ansible 192.168.100.14 -m shell -a 'echo -e "#!/bin/bash\nifconfig" > /opt/test.sh && sh /opt/test.sh'

第三个模块:cron模块

定时任务模块 minute/hour/day/mouth/weekday 分/时/日/月/周

ansible 192.168.100.13 -m cron -a 'minute=30 hour=8 day=* job="ls /opt"'
# job=表示定时任务执行的命令ansible 192.168.100.13 -a 'crontab -l'  # 查看创建的定时任务ansible 192.168.100.13 -m cron -a 'minute=30 hour=8 day=3 month=9 job="ls /opt" name="test"'

删除定时任务

ansible 192.168.100.13 -m cron -a 'name="test" state=absent'ansible 192.168.100.13 -m cron -a 'name="None" state=absent'
# 会将None全部删除,所以在创建定时任务的时候一定要指定名字

第四个模块:user模块

用户管理模块

第一个参数:name(必选参数)
state=present|absent present 创建  absent 删除
system=yes|no  创建用户时,是否为系统账号,no是普通用户,yes是程序用户
uid:指定用户的uid
group:指定用户组
shell:默认系统用户不加(/bin/bash)
create_home=yes|no  不是默认的家目录/home。/opt/test1家目录,create_home=yes创键,no就是不创建
password:用户添加密码
remove=yes|no  state=absent删除用户,删除用户时是否删除家目录
ansible 192.168.100.13 -m user -a 'name=xy102 system=no'ansible 192.168.100.13 -m user -a 'name=xy77 uid=900 shell=/sbin/nologin system=yes'ansible 192.168.100.13 -m user -a 'name=xy77 home=/opt/xy77 create_home=yes password=123456'删除
ansible 192.168.100.13 -m user -a 'name=xy77 state=absent'ansible 192.168.100.13 -m user -a 'name=xy77 remove=yes state=absent'

第五个模块:copy模块

copy复制模块,把指定主机的文件复制到目标主机

cd /opt
touch xy102.txt
echo 123 > xy102.txt
ansible 192.168.100.14 -m copy -a 'src=/opt/xy102.txt dest=/opt/'

src表示源文件

dest目标主机的保存路径

mode复制文件时 表示权限

owner文件的所有者 属主

group文件所在组 属组

content指定复制的内容,就不能用src

ansible 192.168.100.14 -m copy -a 'src=/opt/xy102.txt dest=/opt/ mode=640'ansible 192.168.100.14 -m copy -a 'src=/opt/xy102.txt dest=/opt/ mode=640 owner=dn group=dn'
# 这个用户在目标主机必须提前存在
ansible 192.168.100.14 -m copy -a 'content="黑神话:悟空,真好玩" dest=/opt/houzi.txt mode=777 owner=dn group=dn'# 远程把houzi.txt改成 孙悟空.txt
(1)使用command模块
ansible 192.168.100.14 -a 'mv /opt/houzi.txt /opt/孙悟空.txt'(2)使用shell模块
ansible 192.168.100.14 -m shell -a 'mv /opt/孙悟空.txt /opt/猪八戒.txt'

第六个模块:file模块

设置文件属性

mode owner group state=touch|absent touche创建 absent删除

ansible 192.168.100.13 -m file -a 'path=/opt/abc.txt state=touch mode=777 owner=dn group=dn'
ansible 192.168.100.13 -m file -a 'path=/opt/abc.txt.link src=/opt/abc.txt state=link'删除
ansible 192.168.100.13 -m file -a 'path=/opt/abc.txt.link state=absent'

第七个模块:hostname模块

设置远程主机的主机名

ansible 192.168.100.13 -m hostname -a "name=nginx1"
su 刷新

第八个模块:ping模块

看success表示成功

ansible all -m ping

第九个模块:yum模块

yum模块只能安装和卸载软件

ansible 192.168.100.13 -m yum -a 'name=httpd'  # 安装ansible 192.168.100.13 -m yum -a 'name=httpd state=absent' # 卸载

第十个模块:server模块

管理模块,用来管理目标主机软件的运行状态

name 服务名称

state=started|stopped|restarted

enabled=true 开机自启

runlevel=40 运行级别 如果设置了开机自启,就需要声明运行级别

ansible 192.168.100.13 -m yum -a 'name=nginx'  # 安装软件ansible 192.168.100.13 -m service -a 'name=nginx enabled=true state=started runlevel=60'  # 管理

1、安装nginx

2、开启nginx、开机自启

3、访问nginx,访问内容是this is nginx1

ansible 192.168.100.13 -m shell -a 'echo "this is nginx1" > /usr/share/nginx/html/index.html && curl 192.168.100.13'   # 访问nginx,访问内容是this is nginx1

这篇关于Ansible:远程自动化运维的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094709

相关文章

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

C#实现访问远程硬盘的图文教程

《C#实现访问远程硬盘的图文教程》在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件,这次我们将给出一个完整的... 目录引言一. 远程硬盘功能展示二. 远程硬盘代码实现1. 底层业务通信实现2. UI 实现三. De