自动化运维工具—Ansible概述及命令行模块

news2024/10/7 10:13:49

一.自动化运维工具—Ansible概述及命令行模块

1.1 Ansible是什么

Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。

Ansible能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多 个操作,使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操住。

Ansible是基于模块工作的,它只是提供了一-种运行框架,它本身没有完成任务的能力,真正执行操作的是Ansible的模块,比如copy模块用于拷贝文件到远程主机上,service模块用于管理服务的启动、停止、重启等。

1.2、Ansible常用模块(至少6个)?

command ping copy cron yum service shell file user group

1.3、什么是 Ansible 模块?

模块被认为是 Ansible 的工作单元。每个模块大多是独立的,可以用标准的脚本语言编写,如 Python、Perl、Ruby、bash 等。模块的一个重要属性是幂等性,意味着一个操作执行多次不会产生副作用

1.4、什么是 Ansible 的 playbooks ?

Playbooks 是 Ansible 的配置、部署和编排语言,它是基于YAML语言编写的。他们可以描述您希望远程系统实施的策略,或者描述一般 IT 流程中的一系列步骤。

1.5、描述Ansible是如何工作的?

Ansible由节点和控制机器组成。 控制机器是安装Ansibles的地方,节点由这些机器通过SSH管理。 借助SSH协议,控制机器可以部署临时存储在远程节点上的模块。 控制机器使用ansible或者ansible-playbooks在服务器终端输入的Ansible命令集或者playbook后,Ansible会遵循预先编排的规则将PLAYbook逐条拆解为Play,再将Play组织成Ansible可以识别的任务tasks,随后调用任务涉及到的所有MODULES及PLUGINS,根据主机清单INVENTORY中定义的主机列表通过SSH协议将任务集以临时文件或者命令的形式传输到远程节点并返回结果,如果是临时文件则执行完毕后自动删除。

1.6Ansible的四个组件:

  • Inventory 主机清单(主机组)
  • Modules 模块
  • Plugins 插件
  • Playbooks 剧本(相当于脚本)

 

1.7Ansible的特性

(1)特性一:

Ansible其中一个比较鲜明的特性Agentless,即无Agent的存在(无代理端,即无客户端),它就像普通命令一样, 并非c/s软件,也只需在某个作为控制节点的主机上安装一次Ansible即可,通常它基于ssh连接来控制远程主机,远程主机上不需要安装Ansible或其它额外的服务。

使用者在使用时,在服务器终端输入命令或者playbooks,会通过预定好的规则将playbook拆解为play(一个play就是一个Linux操作),再组织成ansible可以识别的任务,调用模块和插件,根据主机清单通过SSH将临时文件发给远程的客户端执行并返回结果,执行结束后自动删除。

(2)特性二:

Ansible的另一个比较鲜明的特性是它的绝大多数模块都具备幂等性(idempotence)。所谓幂等性,指的是多次操作或多次执行对系统资源的影响是一致的。

比如执行 systemctl stop xxx 命令来停止服务,当发现要停止的目标服务已经处于停止状态,它什么也不会做,所以多次停止的结果仍然是停止,不会改变结果,它是幂等的,而systemctl restart xxx是非幂等的。

Ansible的很多模块在执行时都会先判断目标节点是否要执行任务,所以,可以放心大胆地让Ansible去执行任务,重复执行某个任务绝大多数时候不会产生任何副作用。

二、Ansible 环境安装部署

实验环境:

角色IP安装工具
管理端192.168.6.157ansible
被管理端192.168.6.154无需安装

安装部署:

 #1、管理端安装ansible
 yum install -y epel-release   #先安装epel源
 yum install -y ansible        #安装ansible
 ​
 #ansible目录结构
 [root@yuji ~]# cd /etc/ansible
 [root@yuji ansible]# tree
 .
 ├── ansible.cfg
 ├── hosts
 └── roles
 ​
 1 directory, 2 files
 ​
 ​
 #2、配置主机清单,修改/etc/ansible/hosts文件
 cd /etc/ansible
 vim hosts
 [webservers]    #配置组名
 192.168.6.154  #组里包含被管理的主机IP或主机名(主机名需要先修改/etc/hosts文件)
 ​
 [dbservers]      #第二个组
 192.168.6.188
 ​
 #3、ansible默认使用ssh连接,所以管理前要设置免密登录
 #配置密钥对验证
 ssh-keygen -t rsa    #一路回车,生成密钥文件
 ​
 vim /etc/ssh/ssh_config      #修改ssh客户端配置文件
 StrictHostKeyChecking no     #35行,取消注释,将ask修改为no,开启免交互
 ​
 systemctl restart sshd       #重启sshd
 ​
 #使用sshpass,以免交互的方式将公钥文件传给被管理端,实现免密登录
 sshpass -p 'root' ssh-copy-id root@192.168.6.154
 ​
 #如果被管理端主机有很多台,可以通过sshpass和for循环写一个脚本,实现多台主机免密登录。

2.下载软件包

yum install -y epel-release         #安装epel扩展源
yum install -y ansible            

ansible配置文件都在/etc/ansible目录下
在这里插入图片描述

ansible.cfg         #ansible的配置文件
hosts               #ansible的主仓库,用于存储需要管理的远程主机的相关信息
roles               #角色

3.配置主机清单

vim /etc/ansible/hosts
[webserver]              #组名
192.168.6.154           #组成员IP
... ...

三、Ansible命令行模块

命令格式:`命令格式: ansible [主机] [-m 模块] [-a 操作]`
ansible-doc -l        #列出所有已安装的模块,q退出
ansible-doc -s 模块    #查看相应模块信息,q退出
ansible-doc -s yum    #-s列出yum模块描述信息和操作动作,q退出

4.1 command模块

ansible 192.168.6.154 -m command- a 'ls'    #指定ip执行ls
ansible mysql -m command -a 'ls'          #指定组执行ls
ansible all -m command -a 'ls'        #所有主机执行ls命令
ansible all -a 'ls'              `#如果不加-m模块,则默认运行command模块`

4.2 cron模块

两种状态(state):present表示添加(可以省略),absent表示移除。

ansible webserver -m cron -a 'day="*/1" job="/usr/bin/echo hello >> /opt/1test.txt" name="this is test"'
#指定webserver组中所有主机使用cron模块,时间是每天,工作是输出hello,计划性任务命名为this is test
ansible webserver -a 'crontab -l'
#没有-m指定模块默认使用command模块,操作是查看计划性任务
ansible webserver -m cron -a 'name="this is test" state=absent'  
#移除计划任务

4.3 user模块

user模块是请求的是useradd, userdel, usermod三个指令

ansible mysql -m user -a 'name=lisi'        
#创建用户lisi
ansible mysql -m command -a 'tail -1 /etc/passwd'
#查看/etc/passwd文件最后一行,看用户是否创建成功
ansible mysql -m user -a 'name=lisi state=absent'
#删除用户lisi

4.4 group模块

group模块请求的是groupadd, groupdel, groupmod三个指令。


```bash
ansible webserver -m group -a 'name=webserver1 gid=567 system=yes' 
#创建组
ansible webserver -a 'tail -1 /etc/group'              
 #查看组信息
ansible webserver -m user -a 'name=wangwu uid=567 system=yes group=webserver1'
#创建用户并加入webserver组
ansible webserver -a 'tail -1 /etc/passwd'       
 #查看用户wangwu的用户id和组id信息

4.5 copy模块

ansible mysql -m copy -a 'src=/etc/fstab dest=/opt/fstab.back owner=root mode=640'
#指定mysql组中的主机使用copy模块将控制端文件/etc/fstab复制到被控制端并更名
ansible mysql -a 'ls /opt'

ansible mysql -m copy -a 'content="hello world!" dest=/opt/fstab.back' 
#将hello world!写入/opt/fstab.back
ansible mysql -a 'cat /opt/fstab.back'

4.6 file模块

ansible mysql -m user -a 'name=mysql system=yes'
#创建mysql系统用户
ansible mysql -m group -a 'name=mysql system=yes'
#创建mysql组
ansible mysql -m file -a 'owner=mysql group=mysql mode=644 path=/opt/fstab.back'
#修改文件的属主属组
ansible mysql -m file -a 'path=/opt/fstab.link src=/opt/fstab.back state=link'  
#mysql组中主机使用file模块,为源文件/opt/fstab.link创建一个软连接/opt/fstab.back.link
ansible mysql -a 'ls -l /opt'

4.7 ping模块

ansible all -m ping

4.8 yum模块

yum模块主要用于安装和卸载软件包

ansible webserver -m yum -a 'name=httpd'            
#yum安装httpd
ansible webserver -a 'rpm -q httpd'

ansible webserver -m yum -a 'name=httpd state=absent'  
#卸载httpd
ansible webserver -a 'rpm -q httpd'

4.9 service模块

ansible webserver -a 'systemctl status httpd'
#查看web服务器httpd运行状态
ansible webserver -m service -a 'enabled=true name=httpd state=started'
#启动httpd服务

 

4.10 shell模块

ansible mysql -m user -a 'name=zhangsan'
ansible mysql -m shell -a 'echo 123123 | passwd --stdin zhangsan'

 
 

4.11 script模块

vim test.sh
#!/bin/bash
echo 'hello ansible from script' > /opt/script.txt

chmod +x test.sh
ansible all -m script -a 'test.sh'

 

4.12 setup模块

Ansible facts 是远程系统的信息,主要包含IP地址,操作系统,以太网设备,mac 地址,时间/日期相关数据,硬件信息等信息。

ansible mysql -m setup
#获取mysql组主机的facts信息

 4.13 mount模块

 

列表方式编写

 

单体纵向

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77243.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器人手臂四旋翼的笛卡尔阻抗控制(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 当机器人手指与障碍物接触时,呈现出2阶机械阻抗特性。在阻抗控制算法中,不需直接计算加速度,从而避免了因大加速度误差给控制带…

leetcode 473. 火柴拼正方形-思路整理与细节分析

题目: 你将得到一个整数数组matchsticks,其中 matchsticks[i]是第i个火柴棒的长度。你要用所有的火柴棍拼成一个正方形。你不能折断任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须使用一次。如果你能使这个正方形&am…

FPGA新起点V1开发板(五)——Modelsim软件的使用(联合仿真)

文章目录一、简介1.1 前仿真1.2 后仿真二、联合仿真2.1 选择modesim的安装路径2.2 设置选择eda的工具2.3 test bench文件2.4 打开test bench文件2.5 给系统时钟和复位信号赋初值2.6 配置仿真功能三、RTL仿真3.1 打开波形窗口3.2添加内部信号四、时序仿真一、简介 1.1 前仿真 主…

web大学生网页作业成品 响应式网站水果超市7页(html+css+javascript+jquery+bootstarp)

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

web期末大作业 用HTML+CSS做一个漂亮简单的节日网页【传日文化节日中秋节】

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

web前端期末大作业—— HTML+CSS豪华车 (9页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

蚂蚁金服开源的这份SpringBoot笔记,曾在24小时内GitHub星标48k

前言 Spring的影响力想必就不用小编多说了,今天要跟大家说的是SpringBoot。Spring Boot作为目前Spring技术体系中炙手可热的框架之一,已经是开发者们的必备神器了。在实际的项目中,需要集成各种的插件支持,还有很多或许我们平时不…

【计算机考研408-计算机网络-教书匠视频笔记】主机访问浏览器的全部过程

主机H1利用浏览器通过该域名请求访问web服务器 由于题目给定主机H1的ARP表是空的 (1)主机H1首先会发送ARP请求报文,ARP请求报文会被封装在以太网的MAC帧中发送 ARP请求报文:FF-FF-FF-FF-FF-FF 源MAC地址:00-11-22-3…

Docker 容器使用

文章目录Docker 容器使用Docker 客户端运行一个web应用查看 WEB 应用容器网络端口的快捷方式查看WEB应用程序日志查看WEB应用程序容器的进程检查WEB应用程序停止WEB应用容器重启WEB应用容器移除WEB应用容器Docker 容器使用 Docker 客户端 docker 客户端非常简单 ,我们可以直接…

全网显示 IP 归属地,用上这个开源库,实现也太简单了

细心的小伙伴可能会发现,最近蘑菇新上线了 IP 属地的功能,小伙伴在发表动态、发表评论以及聊天的时候,都会显示自己的 IP 属地信息 动态显示IP属地 在蘑菇群聊中,也 可 以 展 示 IP 属 地,下面是小伙伴们在交流群中显…

【强化学习论文合集】十八.2019国际表征学习大会论文(ICLR2019)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

面试官:你觉得你最大的缺点是什么?

面试官:你觉得你最大的缺点是什么? 前言 相信百分之80的同学们都会被问到这个问题:你觉得你最大的缺点是什么? 这也是求职者一个充满恐惧的问题,特别是我们程序员,大家在与人沟通并没有我们与代码沟通这么得心应手,如果你没回…

网络请求工具wget和curl

一. wget命令 wget命令来自于英文词组”web get“的缩写,其功能是用于从指定网址下载网络文件。 wget命令支持如HTTP、HTTPS、FTP等常见协议,可以在命令行中直接下载网络文件。 注意:不同busybox版本集成的wget命令,可能不…

统计检验分析

1. 正态分布检验 2. 统计检验 正态分布且方差齐非正态分布或方差不齐para test non-para testnon-pairedpaired2组 t-testWilcoxon rank-sum testWilcoxon signed-rank test3组及以上One way ANOVA Kruskal-Wallis testt-test: Paired t-test: 确定某个总体的成对测量值之间…

说说WM_DESTROY和WM_NCDESTROY的区别

在一个 Windows 窗口被销毁的时候,你会发现有两个比较类似的消息:WM_DESTROY和WM_NCDESTROY,那么,这俩兄弟之间有什么区别呢?今天就来讲讲。 不同之处在于,WM_DESTROY消息在窗口销毁序列的开头发送&#x…

MySQL执行计划误选索引及修改方案

MySQL的优化器 MySQL在执行查询语句时使用那个索引是由server层的优化器决定的。优化器的作用是找到一个最优的执行方案,用最小的代价去执行语句。由于MySQL使用预估的方式去选择索引,所以MySQL可能会出现选择索引出错的情况,无法命中最优索…

刘韧工作手册(2023年版)

刘韧于2022年9月22日为云算科技做内部演讲。由谭缘整理成文,李欣欣编辑,朱芳文审定。一、认知篇01 干中学,重复做。“学”是为了“习”,学到的东西是为了下一次习的时候,做得更好。“习”,是最终实践的成果…

WSL安装教程

wsl安装教程引言前期准备工作安装wsl第一步第二步 检测系统版本第三步 确定虚拟机特性第四步 下载Linux内核的更新包第五步 设置WSL 2作为默认版本第六步 选择Linux发行版本并设置Linux账号小TIPS引言 Windows Subsystem for Linux(简称WSL)是一个在Win…

大家都在画圣诞树,我们用代码敲一颗吧~圣诞树

前段时间发布的文章很多人问怎么操作的,今天具体说明一下:PS:如果需要下载可以点击左下角阅读全文下载代码使用更方便具体步骤如下:复制下面代码在电脑里面新建一个记事本,将代码复制到新建的记事本里保存记事本&#…

虚拟机网络连通性选择

做运维的朋友对于虚拟机这个概念应该不会陌生,这里不做讲解。今天主要想对虚拟机的网络连通性的选择方法做一个简单的介绍,如果是老人就没必要看了,此文章针对刚入门初次使用虚拟机进行测试、工作的小伙伴。 咱们常见的虚拟机平台软件有很多&…