ansible(不能交互)

news2024/10/7 16:44:26

1定义

基于python开发的一个配置管理和应用部署工具,在自动化运维中异军突起,类似于xshell一键输入的工具,不需要每次都切换主机进行操作,只要有一台ansible的固定主机,就可以实现所有节点的操作。不需要agent客户端,只需要一台主机上配置ansible即可。ansible基于模块进行工作,只是提供一种运行架构,真正执行操作、变更的是asible的模块来实现的

2、作用

①远程操作主机功能

②自动化运维

③批量配置、部署、管理上千台主机

3、如何实现通信

asible默认通过ssh的密钥对实现通信(可以改)

4ansible的另一个特点

所有模块都是幂等性

幂等性:多次操作或多次执行对系统资源的影响是一致的

是幂等性

不是幂等性

http get

……

http post(多次执行相同的post可能会创建相同的资源)

……

systemctl stop firewalld

……

systemctl restart firewalld

……

只要发现要停止的目标服务已经停止了,后续同样的操作,不会改变任何结果,什么也不做

ansible的幂等性,决定了可以放心大胆使用,重复执行某个任务不会对结果产生任何影响(绝大多数情况下)

5ansible的四大组件

(1)inventory主机清单(主机组):定义ansible可以远程操作的服务器

(2)模块:13个常用的模块。通过模块实现远程配置和操作

(3)Plugins插件

(4)Playbook剧本(shell脚本):yaml格式

6、ansible的优点

(1)部署简单,只要在控制主机部署即可,被控制主机需要有ssh和python2.5以上版本,基本上linux都是自带的这两个条件

(2)ansible只能控制linux系统,windows系统不行

(3)基于模块工作,可以使用任意语言开发模块(二次开发底层架构)

安装ansible实验

主机名

作用

IP地址

服务

test1

管理端

20.0.0.10

ansible

test2

被管理端

20.0.0.20

/

test3

20.0.0.30

/

1、安装epel源、ansible、tree服务

ansible.cfg

ansible的主配置文件(一般不动)

hosts

主机组,声明可以被控制的主机

roles

公共角色目录(一般不用)

2、修改ansible配置文件

配置主机有两种方式:

①直接声明主机的IP地址(最常用)

②主机名(一定要在/etc/hosts中做映射)

3、生成密钥对

ssh-keygen -t rsa

4、把密钥对传给对应主机

被管理端同样如此

ansible安装完成

5、测试

ansible 20.0.0.20 -m command -a 'date'

tail -f /var/log/messages

①指定IP地址(只会在目标主机执行)

ansible 20.0.0.20 -m command -a 'ls /opt'

②指定执行组(组内所有声明的主机都会执行)

ansible dbservers -m command -a 'ls /opt'(dbservers是组名)

③所有声明的主机都会执行

ansible all -m command -a 'ls /opt'

ansible 20.0.0.20 -a 'ls /opt'

#不加-m也就是不声明使用的模块,默认是command模块

7、ansible的命令格式

ansible 组名/IP地址 -m 模块名称 -a ‘参数列表(执行命令)’ 

8ansible的13个模块

(1)模块1:command模块:默认模块。在远程主机执行linux命令,不支持管道符及重定向输出

command常用参数

chdir

在远程主机上运行命令,提前进入目录(先进入目录再执行命令)

creates

判断指定文件是否存在,若存在不执行后续操作

removes

判断指定文件是否存在,若存在执行后续操作

(2)模块2:shell模块:在远程主机执行命令,相当于调用远程主机的shell进程,支持管道符和重定向

实题1:创建用户并加密

测试:

实题2:过滤出IP地址

注意:在ansible中,多个引号要做隔离

&&表示逻辑且,前一个命令执行成功才会执行后一个命令

;表示逻辑或,前面成功与否,后面的命令都会执行

实题3:指定主机上创建一个脚本,在脚本中写入一个内容#!/bin/bash

ifconfig,然后运行这个脚本

ansible 20.0.0.20 -m shell -a 'echo -e "#!/bin/bash\nifconfig" > /opt/jiaoben.sh ; sh /opt/jiaoben.sh'

-e 表示换行

实题4:两个数相加,运行脚本

ansible 20.0.0.20 -m shell -a 'echo -e "#!/bin/bash\na=$((2+3))\necho \$a" > /opt/jiaoben.sh ; sh /opt/jiaoben.sh'

(3)模块3:cron模块:远程给主机设置定时任务

两种状态:

①present表示添加(默认,可以省略)

②absent表示移除(absent在整个ansible语法中都表示移除)

minute

hour

day

month

weekday

job

任务执行的命令

name

任务计划的名称(可以不加)

实题1:创建定时任务,每隔5分钟执行ls /opt,任务名称test1

ansible 20.0.0.20 -m cron -a 'minute="*/5" job="ls /opt" name="test1"'

实题2:9月1号早上8点三十分,执行ls /opt,任务名称test3

ansible 20.0.0.20 -m cron -a 'minute="30" hour="8" day="1" month="9" job="ls /opt" name="test3"'

实题3:周三下午14:30分,执行ls /opt

ansible 20.0.0.20 -m cron -a 'minute="30" hour="14" weekday="*/3" job="ls /opt"'

实题4:删除定时任务

ansible 20.0.0.20 -m cron -a 'name=test1 state=absent'

ansible 20.0.0.20 -m cron -a 'name=None state=absent'

注意:多个计划任务,如果不指定名称,一旦删除None,多个None均删除,不建议使用,一定要指定任务名称

(4)模块4:user模块:用户管理模块

user模块常用参数

name

指定用户名(必须加)

state

=present创建用户(默认,可以不加)

=absent删除用户(必须加)

system

=yes用户是一个程序用户

n=o用户不是一个程序用户

uid

用户的唯一标识

group

用户所在组

create_home

=yes替换用户的家目录

=no不替换用户的家目录(可以不加)

password

创建用户的密码

comment

用户的注释信息(可有可无)

remove

=yes删除用户的家目录(相当于userdel -r)

不需要删除用户的家目录,可以不写

注:使用ansible的user模块创建用户时,若创建普通用户可以不加system=yes和shell类型,默认是/bin/bash;若创建程序用户,一定要声明system=yes和shell=/sbin/nologin,也可以指定uid方式,给用户分配一个uid

实题1:创建一个程序用户yyy

程序用户uid范围1-999

普通用户1000开始

注意:在创建用户时,虽然声明一个程序用户,但默认的登录shell没有额外声明,但还是默认的/bin/bash,uid还是会安装程序用户来指定

实题2:远程创建用户,指定uid,创建密码和家目录

实题3:修改用户的家目录

实题4:删除用户并删除其家目录

ansible 20.0.0.20 -m user -a 'name=ttt remove=yes state=absent'

测试

(5)模块5:group模块:用户组的管理模块

group常用参数

name

指定名称(必须加)

gid

设置组的id

实题1:创建用户添加到指定组中

ansible 20.0.0.20 -m user -a 'name=rrrrr uid=1011 group=ppp'

实题2:删除组(若组里有用户,先删除用户再删除组)

ansible 20.0.0.20 -m group -a 'name=ppp state=absent'

(6)模块6:ping模块:测试主机之间的连通性

ansible all -m ping

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

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

相关文章

[足式机器人]Part4 南科大高等机器人控制课 Ch08 Rigid Body Dynamics

本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 南科大高等机器人控制课 Ch08 Rigid Body Dynamics 1. Spatial Vecocity1.1 Spatial vs. Conventional Accel1.2 Plueker Coordinate System and…

二叉树的最大深度(LeetCode 104)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一:深度优先搜索GolangC 方法二:广度优先搜索GolangC 参考文献 1.问题描述 给定一个二叉树 root ,返回其最大深度。 叉树的「最大深度」是指从根节点到最远叶子节点的最长路径上的节…

会旋转的树,你见过吗?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻强烈推荐优质专栏: 🍔🍟🌯C的世界(持续更新中) 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔…

精选暖心的早安问候语图片,送一份温馨问候、送一串真诚祝福!

1、寒天催日短,风浪与云平;大雪随风降,祝福与您行;降温总无情,问候暖身心;短信虽礼轻,礼轻情意重!冬季渐深,温度渐冷,注意身体,健康养生!早上好! ​ 2、问候是明亮的灯塔&#xff0…

第二证券:激发资本市场数智新动能 实现高质量发展

12月15日至16日,深交所与港交所、广期所联合举行主题为“科技引领数智赋能”的2023年大湾区生意所科技大会。 本次大会深化贯彻落实中心经济作业会议精神和中心金融作业会议精神,聚焦工作数字化转型和科技立异前沿趋势,深化粤港澳大湾区协同…

C语言文件权限

前言 提笔不会忘字的人&#xff0c;提键盘却忘了编程语言&#xff0c;差点忘本了&#xff0c;用python&#xff0c;shell等脚本语言忘记C语言怎么用了&#xff0c;研究文件系统简单的文件读写不会写了&#xff0c;记录一下。 简单的文件读写 #include <unistd.h> #inc…

快猫视频模板源码定制开发 苹果CMS 可打包成双端APP

苹果CMS快猫视频网站模板源码&#xff0c;可用于开发双端APP&#xff0c;后台支持自定义参数&#xff0c;包括会员升级页面、视频、演员、专题、收藏和会员系统等完整模块。还可以直接指定某个分类下的视频为免费专区&#xff0c;具备完善的卡密支付体系&#xff0c;无需人工管…

Apipost检测接口工具的基本使用方法

&#x1f440; 今天言简意赅的介绍一款和postman一样好用的后端接口测试工具Apipost 专门用于测试后端接口的工具&#xff0c;可以生成接口使用文档官方下载网站&#xff1a;http://www.apipost.cn 傻瓜式安装—>register->项目->创建项目->APIs->新建目录&…

Spring Boot 3 + Vue 3 整合 WebSocket (STOMP协议) 实现广播和点对点实时消息

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

CTF竞赛密码学题目解析

CTF&#xff08;Capture The Flag&#xff09;竞赛是一个有趣的挑战。密码学是CTF竞赛中的核心元素之一&#xff0c;通常涉及解密、破译密码、理解加密算法等技能。以下是30个题目及答案&#xff0c;新入行的可以看看鸭。 题目及答案 1. Caesar Cipher 描述&#xff1a;给出一…

MinHash-LSH:如何解决医学大模型的大规模数据去重?

MinHash-LSH 最小哈希 局部敏感哈希&#xff1a;如何解决医学大模型的大规模数据去重&#xff1f; 大模型的数据问题MinHash-LSH 最小哈希 局部敏感哈希&#xff1a;大规模数据集去重优化Jaccard相似度&#xff1a;用于比较样本集之间的相似性降维技术 MinhashLSH – 局部敏感…

SCC-Tarjan算法,强连通分量算法,从dfs到Tarjan详解

文章目录 前言定义强连通强连通分量 Tarjan算法原理及实现概念引入搜索树有向边的分类强连通分量的根时间戳追溯值 算法原理从深搜到TarjanTarjan算法流程Tarjan算法代码实现 OJ练习&#xff1a; 前言 强连通分量是图论中的一个重要概念&#xff0c;它在许多领域都有广泛的应用…

Qt之使用QListView加载相册(富文本ToolTip)

一.效果 二.实现 #include "mainwindow.h" #include "ui_mainwindow.h"#include <QStandardItemModel> #include <QFont>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);QFont…

SourceTree 免登录跳过初始设置

用于Windows和Mac的免费Git客户端。 Sourcetree简化了如何与Git存储库进行交互&#xff0c;这样您就可以集中精力编写代码。通过Sourcetree的简单Git GUI可视化和管理存储库。 SourceTree 安装之后需要使用账号登陆以授权&#xff0c;以前是可以不登陆的&#xff0c;但是现在是…

基于ssm办公自动化管理系统论文

摘 要 随着计算机应用的普及、成熟&#xff0c;越来越多公司开始采用网上信息管理系统&#xff0c;网上信息管理系统的运行可以有效的提高企业管理效率。因此&#xff0c;为满足企业办公管理方面的需求&#xff0c;开发了办公自动化管理系统。 本文重点阐述了办公自动化管理系…

c语言:输出1~100的数据以10×10格式

一、题目 以10*10的格式&#xff0c;输出1-100。 如图&#xff1a; 二、思路分析 此题的难点&#xff1a; 1、1-9的要向前空一格&#xff1b; 2、100要向前进一格 三、代码截图【带注释】 四、源代码【带注释】 #include <stdio.h> int main() { //分成三个部分&am…

Axure的交互与情形,事件,动作

交互样式 交互样式是指当用户与原型进行交互时&#xff0c;元素所呈现出的视觉效果。在Axure中&#xff0c;可以通过设置交互样式来调整元素在交互过程中的外观&#xff0c;例如改变颜色、大小、位置等。 交互事件 交互事件是指在用户与原型进行交互时触发的动作。在Axure中&…

计算机图形学头歌合集(题集附解)

目录 CG1-v1.0-点和直线的绘制 第1关&#xff1a;OpenGL点的绘制 第2关&#xff1a;OpenGL简单图形绘制 第3关&#xff1a;OpenGL直线绘制 第4关&#xff1a;0<1直线绘制-dda算法<> 第5关&#xff1a;0<1直线绘制-中点算法<> 第6关&#xff1a;一般直线绘…

使用Log4j与log4j2配置mybatisplus打印sql日志

环境&#xff1a;项目非完全spring项目&#xff0c;没有spring的配置文件。执行sql时老是不打印sql语句。因此进行修改&#xff0c;过程比较坎坷&#xff0c;记录一下。 我尝试使用log4j和log4j2进行配置 最终把这两种全部配置记录上 Log4j配置 如果项目用的是log4j需要进行配置…

nodejs配置express服务器,运行自动打开浏览器

查看专栏目录 Network 灰鸽宝典专栏主要关注服务器的配置&#xff0c;前后端开发环境的配置&#xff0c;编辑器的配置&#xff0c;网络服务的配置&#xff0c;网络命令的应用与配置&#xff0c;windows常见问题的解决等。 文章目录 设置方法&#xff1a;1&#xff0c;安装nodej…