Ansible:模块1

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.mfbz.cn/a/254448.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MFC 程序执行流程

目录 MFC 程序启动 MFC 入口函数 程序执行流程总结 在Win32课程中WinMain由程序员自己实现,那么流程是程序员安排,但到了MFC中,由于MFC库实现WinMain,也就意味着MFC负责安排程序的流程。 MFC 程序启动 程序的启动,…

红枣期货个股(红枣期货个股:投资方向分析)

红枣期货个股介绍 红枣是我国传统的绿色健康食品,具有营养丰富、味道独特的特点,深受消费者喜爱。红枣产业链较长,包括种植、采摘、加工、销售等环节,其中期货是红枣产业不可或缺的一环。红枣期货个股作为期货交易市场上的重要投…

mybatis中oracle的sql没走索引导致特别慢(未加jdbcType的)

如果直接跑sql是能走索引很快,在mybatis中不能,可能就是jdbcType的原因。 比如,我有一个属性A,在表里面是VARCHAR2类型,但是在mybatis中的sql是#{a},缺少jdbcTypeJdbcType.VARCHAR,就会导致myba…

risc-v system instruction

ECALL ecall 指令以前叫做 scall,用于执行环境的变更,它会根据当前所处模式触发不同的执行环境切换异常, 用来执行需要更高权限才能执行的功能;简单来说,ecall 指令将权限提升到内核模式并将程序跳转到指定的地址。操作系统内核和应用程序其实…

AD采集卡设计方案:630-基于PCIe的高速模拟AD采集卡

基于PCIe的高速模拟AD采集卡 一、产品概述 基于PCIe的一款分布式高速数据采集系统,实现多路AD的数据采集,并通过PCIe传输到存储计算服务器,实现信号的分析、存储。 北京太速科技,产品固化FPGA逻辑,适配2路…

ShardingSphere-JDBC 和 ShardingSphere-Proxy,你选择哪一个

参考文章 总结: 只使用Java,ShardingSphere-JDBC更好有异构语言的话,ShardingSphere-Proxy 更好混用也挺香

Flink系列之:监控Checkpoint

Flink系列之:监控Checkpoint 一、概览二、概览(Overview)选项卡三、历史记录(History)选项卡四、历史记录数量配置五、摘要信息(Summary)选项卡六、配置信息(Configuration&#xff…

100GPTS计划-AI动漫AnimeArtisan

地址 https://poe.com/AnimeArtisan https://chat.openai.com/g/g-LM6ObVhfF-anime-artisan 测试 风景类: 阳光、蓝天、白云、大海、海滩、森林、瀑布、山峰、雪山 日常类: 睡觉、跑步、学习、工作、做家务、看书、听音乐、运动、购物、煮饭 人物类: 女孩、男孩、老人、儿童…

『 Linux 』重新理解挂起状态

文章目录 🦄 前言新建状态 🐋挂起状态 🐋唤入唤出 🐋进程与操作系统间的联系 🐋 🦄 前言 『 Linux 』使用fork函数创建进程与进程状态的查看中提到了对挂起状态的一个理解; ​ 挂起状态相比于其…

爬虫练习-获取imooc课程目录

代码: from bs4 import BeautifulSoup import requests headers{ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0, }id371 #课程id htmlrequests.get(https://coding.imooc.com/class/chapter/id.html#Anchor,head…

kubernetes 学习笔记

1. Kubernetes 介绍 1.1 应用部署方式的演变 在部署应用程序的方式上,主要经理了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上。虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚…

高可用接入层技术演化及集群概述

集群概述 集群的介绍及优势 集群:将多台服务器通过硬件或软件的方式组合起来,完成特定的任务,而这些服务器对外表现为一个整体。集群的优势 高可靠性:利用集群管理软件,当主服务器故障时,备份服务器能够自…

Cesium 加载 Geoserver WMS 图层以及条件查询和切换图层样式

Cesium 加载 Geoserver WMS 图层以及条件查询和切换图层样式 图层样式核心代码完整代码:在线示例 Cesium 加载 Geoserver WMS 图层,在实际项目中常常会遇到,需要对图层进行过滤,这里介绍一下过滤方法。 Cesium Geoserver 图层条件…

AirPodsPro3爆料汇总,2025年发布?

不止是iPhone,苹果的AirPods Pro系列耳机也是非常受用户青睐的一款产品,相信不少果粉都非常期待它的升级换代。 第一代AirPods Pro于2019年10月发布,第二代AirPods Pro于2022年9月发布,按照这个时间线来看的话,第三代A…

《Linux C编程实战》笔记:进程操作之创建进程

进程是一个动态的实体,是程序的一次执行过程。进程是操作系统资源分配的基本单位。 以下是一些概念,我就直接抄书了 进程是操作系统的知识,简单理解的话,你写的代码运行起来算一个进程? 创建进程 每个进程由进程ID号…

在vue项目中,数据已经在页面渲染,但在后续操作时获取不到数据

如下图 产生这个问题的原因 异步问题 如何解决 方法一:可以将其存放在一个setTimeout里面(利用一个极小的延迟来获取数据),如下图 效果 方法二:将操作放入axios里面,如下图

昂首资本发现原油价差这样用,难怪银行这么富

难怪银行这么富,原来是发现一个稳定产生利益的投资策略。虽然这个利润可能看起来比较少。但是昂首资本需要提醒各位投资者的是:首先,这个策略几乎没有风险。第二,这是一个可以复制的投资策略。 下面昂首资本就通过原油的价差进行实…

开发信怎么写回复率高?写外贸邮件的技巧?

如何打造高回复率的开发信?有效的开发信模板推荐? 如何写一封能够引起客户兴趣并提高回复率的开发信变得至关重要。开发信是建立联系、促进销售和扩大业务的关键工具之一。蜂邮EDM将探讨一些关键策略,帮助你提高开发信的回复率,确…

爬虫图片验证码处理

图片验证码处理 目前&#xff0c;很多网站为了防止爬虫爬取&#xff0c;登录时需要用户输入验证码。下面我们学习如何在爬虫程序中识别验证码。 其中包含验证码。 页面中的验证码图片对应一个<img>元素&#xff0c;即一张图片&#xff0c;浏览器加载完登录页面后&#…

Spring 6(二)【IOC原理】

前言 IOC 是Spring的两大核心概念之一&#xff0c;它是一种思想&#xff0c;需要极其熟练的掌握。 今日摘录&#xff1a; 低能无聊的人太多。说他们勤勉&#xff0c;不过是因困为不会合理分配时间&#xff1b;说他们积极&#xff0c;不过是逃避其他困难工作而已。即便说工作只…
最新文章