自动化运维工具——ansible安装及模块介绍

目录

一、ansible——自动化运维工具

1.1 Ansible 自动运维工具特点

1.2 Ansible 运维工具原理

二、安装ansible 

三、ansible命令模块

3.1 command模块 

3.2 shell模块  

3.3 cron模块 

3.4  user模块 

3.5 group 模块

3.6  copy模块

3.7  file模块 

3.8  ping模块 

3.9 service模块 

3.10 script模块 

3.11  yum模块

3.12  setup模块 ​​​​​​​


一、ansible——自动化运维工具

1.1 Ansible 自动运维工具特点

  • Ansible 与 Saltstack 均是基于 Python 语言开发,Ansible 只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为 Ansible 是基于 SSH 远程管理,而Linux服务器大都离不开SSH,所以Ansible不需要为配置工作添加额外的支持。
  • Ansible 安装使用非常简单,而且基于上千个插件和模块实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。很多读者在使用 Ansible 工具时,认为 Ansible比 Saltstatck 执行效率慢,其实不是软件本身慢,是由于 SSH 服务慢,可以优化 SSH 连接速度及使用 Ansible 加速模块,满足企业上万台服务器的维护和管理。

1.2 Ansible 运维工具原理

  • Ansible分为控制端和被控端,主要是基于SSH协议去管理客户端,被控端是无需安装Agent插件的,Ansible会读取控制端hosts文件,根据文件中定义IP列表信息,调取本地的各个模块对被控端机器实现批量、并发的配置管理和维护,如果任务比较复杂可以写成PlayBook剧本进行分发管理;

Ansible 自动运维管理工具优点:

  • 轻量级,更新时,只需要在操作机上进行一次更新即可;
  • 采用 SSH 协议;
  • 不需要去客户端安装 agent;
  • 批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
  • 使用 python 编写的,维护更简单;
  • 支持 sudo 普通用户命令;
  • 去中心化管理。

二、安装ansible 

#192.168.19.2
hostname ansible
su#192.168.19.3
hostname webserver
su#192.168.19.4
hostname mysql
susystemctl stop firewalld
setenforce 0

 

 

 

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

 

#树型查询工具
yum -y install treetree /etc/ansible

 

vim /etc/ansible/hosts#配置主机清单
[webservers]
192.168.19.3
[dbservers]
192.168.19.4

 

 

 ​​​​​​​

#生成密钥对
ssh-keygen -t rsa
123123
123123ssh-copy-id root@192.168.19.3
ssh-copy-id root@192.168.19.4

 

 

每次查询都需要输入密钥
#可以使用ssh-agent代理
ssh-agent bash
ssh-add
123123ansible webserver -m command -a 'date'

 

 

三、ansible命令模块

3.1 command模块 


命令格式:ansible [主机] [-m 模块] [-a args]#列出所有已安装的模块,按q退出
ansible-doc -l    		#所有主机执行data命令,其中all可以换成IP或者分类名称,例:192.168.19.2 / webserver
ansible all -m command -a 'date'   #不加-m模块,则默认使用command模块
ansible all -a 'date'
ansible all -a 'ls /'//常用的参数:
chdir:在远程主机上运行命令前提前进入目录
creates:判断指定文件是否存在,如果存在,不执行后面的操作
removes:判断指定文件是否存在,如果存在,执行后面的操作ansible all -m command -a "chdir=/home  ls ./"

 

 

3.2 shell模块  

//在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令(支持管道符号等功能)
ansible-doc -s shellansible dbservers -m shell -a 'echo 123456 | passwd --stdin test'
ansible dbservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print $2}") | cut -d " " -f2'
ansible dbservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print \$2}")'

 

 

3.3 cron模块 

//在远程主机定义任务计划。其中有两种状态(state):present表示添加(可以省略),absent表示移除。
ansible-doc -s cron				#按 q 退出//常用的参数:
minute/hour/day/month/weekday:分/时/日/月/周
job:任务计划要执行的命令
name:任务计划的名称ansible webservers -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test crontab"'
ansible webservers -a 'crontab -l'
ansible webservers -m cron -a 'name="test crontab" state=absent'			#移除计划任务,假如该计划任务没有取名字,name=None即可

 

3.4  user模块 


user模块是请求三条指令,useradd,userdel,usermod#模块信息
ansible-doc -s user#创建用户
ansible all -m user -a 'name=yh'#查看用户账户信息
ansible all -m 'command' -a 'tail -1 /etc/passwd'#移除指令
ansible all -m user -a 'name="yh" state=absent'

 

3.5 group 模块


//用户组管理的模块
ansible-doc -s groupansible dbservers -m group -a 'name=mysql gid=306 system=yes'    #创建mysql组
ansible dbservers -a 'tail /etc/group'
ansible dbservers -m user -a 'name=test01 uid=306 system=yes group=mysql'    #将test01用户添加到mysql组中
ansible dbservers -a 'tail /etc/passwd'
ansible dbservers -a 'id test01'  

3.6  copy模块


对文件进行有效的复制ansible-doc -s copyansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.back'ansible dbservers -a 'ls /opt'
ansible dbservers -a 'cat /opt/fstab.back'ansible dbservers -m copy -a 'content="hello lic" dest=/opt/test.txt'
ansible dbservers -a 'cat /opt/test.txt'

3.7  file模块 

ansible-doc -s fileansible dbservers -m user -a 'name=mysql system=yes'ansible dbservers -m file -a 'owner=mysql group=mysql mode=600 path=/opt/test.txt'
ansible dbservers -a 'ls -l /opt/test.txt'#创建
#ansible dbservers -m file -a 'path=/opt/abc.txt state=touch'ansibledbservers -m file -a 'src=/opt/test.txt path=/opt/test.txt.link state=link'
ansible dbservers -a 'ls -l /opt'#移除文件/opt/test.txt
ansible dbservers -m file -a 'path=/opt/test.txt state=absent' 

 

3.8  ping模块 

ansible all -m ping 

 

3.9 service模块 


ansible-doc -s service#192.168.19.3执行yum -y install httpd

 

ansible webserver -a 'systemctl status httpd'ansible webserver -m service -a 'enabled=true name=httpd state=started'systemctl status httpd
systemctl is-enabled httpd

 

 

 

3.10 script模块 

ansible-doc -s scriptvim test.sh
#!/bin/bash
echo 'hello ansible from script' > /opt/script.txtchmod +x test.sh
ansible all -m script -a 'test.sh'

 

 

3.11  yum模块

ansible-doc -s yumansible dbservers -m yum -a 'name=httpd'
ansible dbservers -a 'rpm -q httpd'ansible dbservers -m yum -a 'name=httpd state=absent'
ansible dbservers -a 'rpm -q httpd'

 

3.12  setup模块 ​​​​​​​


ansible-doc -s setup#获取MySQL组主机的facts信息ansible dbservers -m setup

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ opencv将彩色图像按连通域区分

要将彩色图像按连通域区分&#xff0c;您可以使用 OpenCV 中的 cv::connectedComponents 函数。 下面是一个简单的示例代码&#xff0c;说明如何使用 cv::connectedComponents 函数来检测并标记图像中的连通域&#xff1a; #include <opencv2/opencv.hpp> #include <…

数据结构-第一期——数组(Python)

目录 00、前言&#xff1a; 01、一维数组 一维数组的定义和初始化 一维变长数组 一维正向遍历 一维反向遍历 一维数组的区间操作 竞赛小技巧&#xff1a;不用从a[0]开始&#xff0c;从a[1]开始 蓝桥杯真题练习1 读入一维数组 例题一 例题二​ 例题三 实战训…

Java从入门到精通-流程控制(一)

流程控制 1.复合语句 复合语句&#xff0c;也称为代码块&#xff0c;是一组Java语句&#xff0c;用大括号 {} 括起来&#xff0c;它们可以被视为单个语句。复合语句通常用于以下情况&#xff1a; - 在控制结构&#xff08;如条件语句和循环&#xff09;中包含多个语句。 - …

机械臂+2d相机实现复合机器人定位抓取

硬件参数 机械臂&#xff1a;艾利特 相机&#xff1a;海康相机 2d识别库&#xff1a;lindmod&#xff0c;github可以搜到 光源&#xff1a;磐鑫光源 软件参数 系统&#xff1a;windows / Linux 开发平台&#xff1a;Qt 开发语言&#xff1a;C 开发视觉库&#xff1a;OpenCV …

大数据Flink简介与架构剖析并搭建基础运行环境

文章目录 前言Flink 简介Flink 集群剖析Flink应用场景Flink基础运行环境搭建Docker安装docker-compose文件编写创建并运行容器访问Flink web界面 前言 前面我们分别介绍了大数据计算框架Hadoop与Spark,虽然他们有的有着良好的分布式文件系统和分布式计算引擎&#xff0c;有的有…

前端vue引入高德地图入门教程

距离上一篇关于前端项目中使用高德地图的文章已经将近5年之久&#xff0c; 这是我的第一篇关于高德地图的文章 这期间前端技术日新月异&#xff0c;5年前JQuery还如日中天&#xff0c;如今已经销声匿迹&#xff0c;很少有公司招聘还在要求JQuery&#xff0c;更多的是Vue、React…

TensorFlow-slim包进行图像数据集分类---具体流程

TensorFlow中slim包的具体用法 1、训练脚本文件&#xff08;该文件包含数据下载打包、模型训练&#xff0c;模型评估流程&#xff09;3、模型训练1、数据集相关模块&#xff1a;2、设置网络模型模块3、数据预处理模块4、定义损失loss5、定义优化器模块 本次使用的TensorFlow版本…

合宙Air724UG LuatOS-Air LVGL API控件--复选框 (Checkbox)

复选框 (Checkbox) 复选框主要是让用户进行一些内容选择&#xff0c;或者同意用户协议。 示例代码 – 复选框回调函数 function event_handler(obj, event) if event lvgl.EVENT_VALUE_CHANGED then print(“State”, lvgl.checkbox_is_checked(obj)) end end – 创建复选框…

【前端demo】简易计算器 原生实现

文章目录 效果代码htmlcssjs 其他demo&#xff1a;https://blog.csdn.net/karshey/article/details/132585901 效果 效果预览&#xff1a;https://codepen.io/karshey/pen/RwERjGz 参考&#xff1a; js实现仿华为手机计算器&#xff0c;兼容电脑和手机屏幕_dengluandai1740的…

Golang数据结构和算法

Golang数据结构和算法 数据的逻辑结构和物理结构常见数据结构及其特点算法的时间复杂度和空间复杂度Golang冒泡排序Golang选择排序Golang插入排序Golang快速排序Golang归并排序Golang二分查找Golang sort包Golang链表Golang container/list标准库Golang栈stackGolang二叉搜索树…

JasperReport定义变量后打印PDF变量为null以及整个pdf文件为空白

问题1: JasperReport打印出来的整个pdf文件为空白文件&#xff1b; 问题2&#xff1a;JasperReport定义变量后打印PDF变量为null&#xff1b; 问题1原因是因为缺少数据源JRDataSource JasperFillManager.fillReport(jasperReport, params,new JREmptyDataSource());如果你打印…

python爬虫-Selenium

一、Selenium简介 Selenium是一个用于Web应用程序测试的工具&#xff0c;Selenium 测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。模拟浏览器功能&#xff0c;自动执行网页中的js代码&#xff0c;实现动态加载。 二、环境配置 1、查看本机电脑谷歌浏览器的版…