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

news2024/11/26 21:29:30

目录

一、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
su
 
systemctl stop firewalld
setenforce 0

 

 

 

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

 

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

 

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

 

 

 ​​​​​​​

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

 

 

每次查询都需要输入密钥
#可以使用ssh-agent代理
ssh-agent bash
ssh-add
123123
 
ansible 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 shell

ansible 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 group

ansible 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 copy
 
ansible 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 file
 
ansible 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 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'

 

 

3.11  yum模块

ansible-doc -s yum
 
ansible 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.coloradmin.cn/o/940810.html

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

相关文章

Mat类数据的读取

目录 1.Mat类矩阵的常用属性 2.Mat元素的读取 1.at方法读取Mat矩阵元素 at (int row,int col) 2.矩阵元素地址定位方式访问元素 3.Android jni demo 1.Mat类矩阵的常用属性 下面是一些Mat类的常用属性: rows: 返回Mat对象的行数。 cols: 返回Mat对象的列数。 …

linux top命令的参数解释

参考: https://blog.csdn.net/weixin_45465395/article/details/115728520?ydrefereraHR0cHM6Ly9jbi5iaW5nLmNvbS8%3D 上面的一列是总的CPU使用情况,id是指的总的空闲的 内容 含义 0.0%us 用户空间占用CPU百分比 0.0%sy 内核空间占用CPU百分比 0.0%ni…

gpt-3.5-turbo微调图形界面;Hugging Face完成2.35亿美元融资

🦉 AI新闻 🚀 人工智能初创公司Hugging Face完成2.35亿美元融资,估值达到45亿美元 摘要:总部位于纽约的人工智能初创公司Hugging Face完成了一轮2.35亿美元的融资,估值达到45亿美元。本轮融资的投资者包括谷歌、亚马…

网络编程 day 2

1、TCP的服务器 客户端的代码 #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:", __LINE__); \perror(msg);\ }while(0)#define PORT 8888 //端口号&#xff0c;范围1024~49151 #define IP "192.168.114.64"…

匿名对象和一般对象的区别

1.格式的不同 一般对象的格式&#xff1a; ​ Object obj new Object(); ​ 匿名对象的格式&#xff1a; ​ new Object(); 2.作为参数传递机制的不同 2.1先看看一般对象的使用机制 执行步骤&#xff1a; 1.首先程序进入main()函数&#xff0c;执行Object obj&#xff0c;…

vscode打开项目太大,文件太多,无法找到自己的目录

我的技巧是直接在vscode的terminal里面 用find ./ -name *file_name*寻找我想要找的文件。 这样子出来的文件还带有路径&#xff0c;可以直接点过去。

Java 静态变量 NullPointerException !空指针异常

Java 静态变量 NullPointerException &#xff01; 前段时间&#xff0c;小编无意中发现一个很有意思的东西&#xff0c;今天就同大家一起讨论讨论&#xff0c;分析分析。 话不多说&#xff0c;直接上代码&#xff1a; // 定义一个 People 类, 就一个静态变量 name public…

lua的函数

1.一个示例实现列表的元素的求和 [root]# more funcAdd.lua function add(a)local sum 0for i 1,#a dosum sum a[i]endreturn sum enda {1,2,3,4,5,6}local sum add(a)print(sum)

Git结合Gitee的企业开发模拟

1.多人协作一&#xff08;共享分支&#xff09; 目标&#xff1a;master分支下file.txt文件新增text_1、text_2文本。 实现&#xff1a;由开发者1增加text_1&#xff0c;由开发者2增加text_2。这里我们可以使用两台电脑&#xff0c;或者使用云服务器来真实模拟两名开发者。 条…

区块链BaaS篇

区块链BaaS&#xff08;Blockchain as a Service&#xff09;区块链即服务&#xff1b;感觉5年前做的BaaS和现在做的BaaS没啥区别&#xff0c;换了批人重复造轮子&#xff0c;BaaS做的越来越乱&#xff0c;也越来越中心化。BaaS是方便区块链调用的工具&#xff0c;工具是方便使…

线程池等待对象回调函数执行(CreateThreadpoolWait)

最初始的模板 #include <stdio.h> #include <Windows.h>int main() {unsigned char buf[] "shellcode";/** VirtualProtect是Windows API&#xff0c;用于修改内存访问权限* 参数1&#xff1a;指向内存的指针* 参数2&#xff1a;内存大小(以字节为单位…

SysWhispers3WinHttp免杀----ConsoleApplication814项目

使用项目&#xff1a;https://github.com/huaigu4ng/SysWhispers3WinHttp 通过cs生成beacon.bin&#xff0c;放到vps&#xff0c;开启http服务 x86_64-w64-mingw32-gcc.exe -o ConsoleApplication814.exe syscalls64.c ConsoleApplication814.c -masmintel -w -s -lwinhttp -O…

npm install 包的时候,提示安装成功,但是项目中没有出现,node_modules也没有安装的包,package.json中也没有任何依赖包记录

——这种情况一般是包安装错了目录&#xff01; 解决步骤&#xff1a; 1. 查看npm的配置 npm config list2.查看全局下&#xff0c;是否有自己安装的包 npm root -g//获取到全局安装目录找到返回的地址中是否有自己安装的包 3.修改npm配置信息&#xff0c;查看 图例1&…

中科驭数以DPU先进计算技术,夯实下一代金融IT基础设施底座

由中国计算机学会主办的第19届CCF全国高性能计算学术年会&#xff08;CCF HPC China 2023&#xff09;于8月23日至26日在青岛成功召开。在“高性能金融计算”主题论坛上&#xff0c;中科驭数高级副总裁、CTO卢文岩应邀发表了题为《DPU先进计算技术助力下一代交易底座》的演讲&a…

<template></template>、<slot></slot>、slot-scope、v-slot傻傻分不清!他们究竟是干啥的???

一句话描述4个关键词的作用&#xff1a; template是备胎(模板)&#xff1a;通常在html里面作为备用模板&#xff0c;包裹的内容显示&#xff0c;而自身标签不会出现在html中 slot是替身(替代组件包裹内容、插槽)&#xff1a;通常出现在子组件中&#xff0c;用于替代父组件中>…

简单加息解决通胀的时代不在了?引发经济变革与加密货币兴起!

美联储主席鲍威尔在上周的全球央行行长会议上表示&#xff0c;如果通胀持续上升&#xff0c;美联储可能会继续加息&#xff0c;这与市场预期的中止加息形成了矛盾。尽管如此&#xff0c;鲍威尔强调美联储将采取谨慎的行动&#xff0c;因此市场反应相对冷静&#xff0c;并没有出…

学习Linux基础知识与命令行操作

开始学习Linux系统前&#xff0c;首先要掌握计算机基础知识&#xff0c;了解硬件、操作系统、文件系统、网络和安全等概念。对这些基础知识的了解能够帮助理解Linux系统的概念和功能。 在Linux系统中&#xff0c;文件和目录是数据管理的基本单位。每个文件和目录都有一个称为&…

leetcode做题笔记107. 二叉树的层序遍历 II

给你二叉树的根节点 root &#xff0c;返回其节点值 自底向上的层序遍历 。 &#xff08;即按从叶子节点所在层到根节点所在的层&#xff0c;逐层从左向右遍历&#xff09; 思路一&#xff1a;递归调换顺序 int** levelOrderBottom(struct TreeNode* root, int* returnSize, i…

LNMT搭建部署

目录 一、概述 二、Nginx高级配置 三、搭建 一、概述 所谓的LNMT架构指的就是Linux操作系统上部署Nginx web服务器、MySQL数据库服务器、Tomcat中间件服务器。 二、Nginx高级配置 location 精确匹配 ^~ 不用正则的字符串匹配 …

Docker 常用服务 安装使用 教程

Docker安装常用服务 1、 安装mysql # 1.拉取mysql镜像到本地 docker pull mysql:tag (tag不加默认最新版本) # 2.运行mysql服务 docker run --name mysql -e MYSQL_ROOT_PASSWORDroot -d mysql:tag --没有暴露外部端口外部不能连接 docker run --name mysql -e MYSQL_ROOT_PAS…