Ansible:模块1

news2024/12/24 8:42:03

Ansible:

远程操作主机功能

自动化运维(playbook 剧本 yaml)

是基于python开发的配置管理和应用部署工具。在自动化运维中,现在是一军突起。

Ansible能批量配置,部署,管理上千台主机。类似于xshell的一键输入的工具,不需要每次都切换主机进行操作。

只要有一台ansible的固定主机,就可以进行所有节点的操作。

不需要agent,客户端。

主协议一台主机上配置了ansible。

ansible是基于模块进行工作,只是提供了一种运行的架构,执行和辩证的是absible的模块来实现的。

copy

service

Ansible默认是通过ssh的密钥对来实现通信。(可以改)

Ansible的另一个特点,所有模块都是幂等性。

幂等性:指的是多次操作或者多次对协调资源的影响是一致的。

systemctl stop firewalld

systemctl stop firewalld

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

systemctl restart firewalld每一次操作都会先停再启动。不是幂等性

http get 幂等性

post 多次执行相同的post可能会创建多个相同的资源。不是幂等性

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

Ansible的四大组件:

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

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

3,plugins 插件

4,playbook 剧本 (shell脚本 yaml格式)

Ansible的优缺点:

部署较为简单,注意在控制主机部署即可,被控制主机协议有shh和pyhon2.5以上版本。举办的linux都是自带的。ansible只能控制linux系统,windows不行。

基于模块工作,可以只要任意语言开发模块(二次开发。底层架构)

环境:

1,管理端:

2,被管理端:

备用:

要先安装epel源

yum install -y epel-release.noarch

yum install -y ansible

ansible.cfg:ansible的主配置文件,一般无需修改

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

roles:公共角色目录

配置主机有两种方式:

1、直接声明主机的ip地址

2、主机名(/etc/hosts做映射)

名称只是一个标识,没有意义,不要用中文

vim hosts

配置密钥对验证

ssh-keygen -t rsa

ansible的命令格式:

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

模块1:

command模块,在远程主机执行linux的命令,不支持管道符,不支持重定向输出。

要先执行到目标主机的命令

ansible 192.168.176.50 -m command -a 'date'

ansible 192.168.176.60 -m command -a 'date'

指定ip地址

在目标主机上不会显示执行命令但在日志会显示

再连接

sshpass -p '123' ssh-copy-id root@192.168.176.50

sshpass -p '123' ssh-copy-id root@192.168.176.60

指定执行组,也可以用组名,在组下的所有机器

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

也可以对所有:所有组中的所有机器

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

不加-m,不声明指定的模块,默认就是command模块。

常用参数:

chdir 先进入目录再执行命令

ansible all -m command -a 'chdir=/home ls'

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

ansible all -m command -a 'creates=/opt/123 ls /opt'

removes:判断指定的文件是否存在,如果存在,执行后续的命令。

ansible all -m command -a 'removes=/opt/123 ls /opt'

模块2:

shell模块,再远程主机现在命令,相当于在远程主机,支持管道符和重定向。

创建一个用户和密码

ansible 192.168.176.50 -m shell -a 'useradd test'

ansible 192.168.176.50 -m shell -a 'cat /etc/passwd'

ansible 192.168.176.50 -m shell -a 'echo 123456 | passwd --stdin test'

获取IP地址

ansible 192.168.176.50 -m shell -a 'echo $(ifconfig ens33 | awk "NR==2{print $2}")|cut -d " " -f2'

在ansible当中,多个引号之间要做隔离

多个shell命令执行,多个命令之间用&&连在一块,表示逻辑且

ansible 192.168.176.50 -m shell -a 'touch /opt/123 && echo 123 > /opt/123 && ls /opt && cat /opt/123'

ansible 192.168.176.50 -m shell -a 'touch /opt/123 && echo 456 > /opt/123 && cat /opt/123'

也可以用;符号。表示逻辑或

ansible 192.168.176.50 -m shell -a 'touch /opt/456 ; echo "cc正" > /opt/456 ; cat /opt/456'

前面的命令成不成功后面的都会执行。

远程运行脚本

指定主机上创建一个脚本,在脚本中写入一个内容 #!/bin/bash ifconfig ,然后运行这个脚本:

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

简单的加法

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

模块3 cron模块

远程给主机设置定时任务

两种状态:present 表示添加(默认就是添加,可以省略)

absent 表示移除。#absent在整个ansible的语法当中都表示移除的意思(删除)

分 时 日 月 周

分=minute

时=hour

日=day

月=month

周=weekday

job:任务执行的命令

name:任务计划的名称,可以不加。

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

查看远程主机的但是任务:

ansible 192.168.176.50 -a 'crontab -l'

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

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

远程删除定时任务删除一定要加state=名称

有名字的

ansible 192.168.176.50 -m cron -a 'name=test2 state=absent'

没有名字的

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

多个none,会一起删除。所以最好给名称,指名不要重复。

模块4:

user模块:用户管理模块

常用参数:

name 指定用户名,必须要有

state:present absent 创建用户可以不加present,删除一定要加absent

system=yes | no,标记用户是否是一个程序用户 只会指明uid为程序用户

uid:用户的唯一标识

group:用户的所在组

create_home=yes | no, 替换用户的家目录,不需要替换用户的家目录可以不写

password:创建用户的密码

comment:户的注释信息(可有可无)

remove=yes | no 当删除用户,加上remove=yes,删除用户的家目录 userdel-r。如果不需要删除家目录,可以写。

给远程主机添加用户:

ansible 192.168.176.50 -m user -a 'name=cc1 system=yes'

在创建用户时,虽然我声明了是一个程序用户,但是默认的登录shell如果没有额外的声明,还是默认的/bin/bash,uid会按照程序用户来指定。

如何正确声明:

ansible 192.168.176.50 -m user -a 'name=cc2 shell=/sbin/nologin'

使用ansible的user模块创建用户时,如果创建普通用户可以不加system=no,指定shell轮询可以不加,默认就是/bin/bash 如果创建的是程序用户,一定要声明system=yes,声明shell的类型 shell=/sbin/nologin。

也可以指定uid的方式,给用户分配一个uid,同时指定用户的家目录

ansible 192.168.176.50 -m user -a 'name=cc5 uid=1013 password=123456 home=/opt/test3'

改变用户家目录:

ansible 192.168.176.50 -m user -a 'name=cc5 home=/opt/test4 create_home=yes'

删除用户连家目录一并删除

ansible 192.168.176.50 -m user -a 'name=cc5 remove=yes state=absent'

group 模块:

用户组的管理模块

name 必须要有

system=yes | no,标记用户组中的用户是否是程序用户 只会指明uid为程序用户

gid 设置组的id

ansible 192.168.176.50 -m group -a 'name=chen gid=306 system=yes'

创建的是组,不是用户

在创建一个用户的时候,怎么添加到一个组中。

ansible 192.168.176.50 -m user -a 'name=cc uid=1011 group=chen'

ansible不使用交互式的命令。

如何删除组

ansible 192.168.176.50 -m group -a 'name=chen state=absent'

要先删除组用户,才能删除组。

ansible 192.168.176.50 -m user -a 'name=cc remove=yes state=absent'

ansible 192.168.176.50 -m group -a 'name=chen state=absent'

ping模块:

ansible all -m ping

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

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

相关文章

2023ChatGPT浪潮,2024开源大语言模型会成王者?

《2023ChatGPT浪潮,2024开源大语言模型会成王者?》 一、2023年的回顾 1.1、背景 我们正迈向2023年的终点,回首这一年,技术行业的发展如同车轮滚滚。尽管互联网行业在最近几天基本上处于冬天,但在这一年间我们仍然经…

基于Apache SeaTunnel构建CDC数据同步管道

引言 在快速发展的数据驱动时代,数据的实时、准确同步成为了企业信息系统不可或缺的一部分。随着技术的进步,特别是在分布式计算和大数据技术的背景下,构建一个高效且可靠的数据同步管道成为了挑战。 Apache SeaTunnel作为一个先进的数据集…

数组|73. 矩阵置零 48. 旋转图像

73. 矩阵置零 **题目:**给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 题目链接&#xff1a;矩阵置零 class Solution {public void setZeroes(int[][] matrix) {Stack<int[]> mapofzerone…

产品入门第六讲:Axure中继器

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Axure》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c…

解锁终端安全的钥匙:深度了解迅软DSE桌面管理系统

随着信息化的快速发展&#xff0c;企业内部计算机终端数量不断攀升&#xff0c;成为网络整体安全管理的关键环节。越来越多的企业认识到终端安全管理的重要性&#xff0c;纷纷采取综合规划来应对这一挑战。为了满足广大用户对桌面终端管理的需求&#xff0c;迅软DSE推出了一套全…

微博被封禁如何解决

1.电脑搜索互联网信息投诉平台&#xff0c;点击我要投诉 2.找到互联网企业&#xff0c;选择新浪微博 3.然后填写个人信息&#xff0c;这里正常填写就行 4.填写信息 5.截图 6.成功

Qt实现动画的2种方式

由于我之前是写java的所以在学习Qt的时候感觉会有点熟悉&#xff0c;因为Qt就是 用c写&#xff0c;而java底层也是c实现的 先看效果&#xff1a; 一、使用QMovie 这种方式我目前是用来加载gif图的&#xff0c;很简单噢&#xff0c;只不过我是加载的本地的路径&#xff0c;如…

【NSX-T】7. 搭建NSX-T环境 —— 部署和配置 Edge Cluster

目录 7. 部署和配置 Edge Cluster7.1 配置 Edge 节点&#xff08;1&#xff09;Name and Description&#xff08;2&#xff09;Credentials&#xff08;3&#xff09;Configure Deployment&#xff08;4&#xff09;Configure Node Settings&#xff08;5&#xff09;Configur…

APM固件编译和仿真

事情起因 主要想对无人机APM固件进行仿真的算法验证&#xff0c;因实际飞行的过程实际验证太浪费飞机了&#xff0c;所以就先试用仿真对算法进行仿真开发。 一&#xff0c;环境搭建 环境搭建我建议参考官方英文教程&#xff0c;英文教程写的比较全&#xff0c;不懂可以自己使…

使用Python Scrapy设置代理IP的详细教程

目录 前言 一、代理IP的作用和原理 二、Scrapy框架中设置代理IP的方法 步骤1&#xff1a;安装依赖库 步骤2&#xff1a;配置代理IP池 步骤3&#xff1a;创建代理IP中间件 步骤4&#xff1a;激活代理IP中间件 步骤5&#xff1a;运行爬虫程序 三、代码示例 四、常见问题…

数字化医疗新篇章:构建智能医保支付购药系统

在迎接数字化医疗时代的挑战和机遇中&#xff0c;智能医保支付购药系统的建设显得尤为重要。本文将深入介绍如何通过先进的技术实现&#xff0c;构建一套智能、高效的医保支付购药系统&#xff0c;为全面建设健康中国贡献力量。 1. 引言 随着医疗科技的飞速发展&#xff0c;…

「Verilog学习笔记」交通灯

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1nsmodule triffic_light(input rst_n, //异位复位信号&#xff0c;低电平有效input clk, //时钟信号input pass_request,output wire[7:0]clock,output reg…

如何使用示波器探头对被测电路进行检测

对电路信号进行检测之前首先要知道被测电路是什么电路&#xff0c;被测信号是什么信号。盲目地测试或者使用不正确的测量方法&#xff0c;有可能得到错误的波形甚至损坏仪器危及安全。 1、什么是差分信号&#xff1f;什么是单端信号&#xff1f; 差分传输是一种信号传输的技术…

OpenHarmony - 应用开发入门指南

一、了解OpenHarmony OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目, 目标是面向全场景、全连接、全智能时代, 搭建一个智能终端设备操作系统的框架和平台, 促进万物互联产业的繁荣发展。 开放原子开源基金会&#xff1a; 由阿里巴巴、百度、华…

前置接口数据引用指南:自动化测试流程优化技巧

当进行 自动化测试 编排时&#xff0c;测试步骤间的数据传递是至关重要的。 在传统的方式中&#xff0c;一般通过复杂的脚本配置&#xff0c;或者手动复制这些数据&#xff0c;然后再慢慢地粘贴到每个需要它们的地方&#xff0c;以此来实现接口之间的参数传递。这种方式往往效…

openwrt 搭建web

折腾 软路由 有几年了&#xff0c;最近试了下 移动的 IPV6, 既然可以拿到 公网的 IPV6&#xff0c; 所以想折腾下, 经过不懈努力 实现了&#xff1a;通过 ipv4/ipv6 地址访问我的 web站点 (白飘不花钱的方式) 1 动态DNS 折腾 DDNS 无非是想 白飘 公网IP&#xff0c;但是 仅仅…

力扣题:数字与字符串间转换-12.25

力扣题-12.25 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;481. 神奇字符串 解题思想&#xff1a;首先将字符串构建出来&#xff0c;然后进行遍历即可 class Solution(object):def magicalString(self, n):""":type n: int:rty…

微信小程序校园跑腿系统怎么做,如何做,要做多久

​ 在这个互联网快速发展、信息爆炸的时代&#xff0c;人人都离不开手机&#xff0c;每个人都忙于各种各样的事情&#xff0c;大学生也一样&#xff0c;有忙于学习&#xff0c;忙于考研&#xff0c;忙着赚学分&#xff0c;忙于参加社团&#xff0c;当然也有忙于打游戏的&#x…

arcgis javascript api4.x加载天地图cgs2000坐标系

需求&#xff1a;arcgis javascript api4.x加载天地图cgs2000坐标系 效果&#xff1a; 示例代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"wid…

别小看它!现货黄金趋势通道的作用

在现货黄金市场中&#xff0c;我们对趋势通道的熟悉程度不如趋势线。实际上&#xff0c;趋势通道是从趋势线演化而来的&#xff0c;没有趋势线就没有趋势通道。然而很多人不重视趋势通道&#xff0c;认为它只是趋势线的附庸&#xff0c;下面我们就来讨论一下趋势通道的作用。 为…