Ansible基本使用

目录

介绍

安装

inventory-主机清单

分组

子组

modules-模块

command

shell

script

file

copy

systemd

yum

 get_url

yum_repository

user

mount

cron


介绍

ansible是基于python开发的自动化运维工具。架构相对比较简单,仅需通过ssh连接客户机执行任务即可,客户端无需额外安装代理。

ansible有2中使用方式:

ad-hoc:相当于使用单条的命令行

playbook:类似于脚本,将多条命令组合成一个任务

安装

linux系统标准的yum源可能没有ansible软件包,可以使用epel源

yum install epel-release
yum install -y ansible

查看软件版本

[root@m01 yum.repos.d]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfgconfigured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python2.7/site-packages/ansibleexecutable location = /usr/bin/ansiblepython version = 2.7.5 (default, Aug  7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

建议先修改2条默认配置,在/etc/ansible/ansible.cfg 去掉两行的注释

#关闭主机验证
host_key_checking = False
#开启ansible日志
log_path = /var/log/ansible.log

inventory-主机清单

主机清单中明确了需要控制的主机,ansible执行任务,必须要先读取主机清单文件,默认读取/etc/ansible/hosts文件。

使用ansible时,主控端到被控端提前做好ssh免密登录,如何做免密请参考我的另一篇博客。

ssh免密登录-CSDN博客文章浏览阅读262次,点赞3次,收藏5次。ssh免密设置https://blog.csdn.net/wangweinan_5566/article/details/143287669

分组

每个分组中可以多个主机,如果主机没有做免密,也可以在文件中指定用户、密码,但是不推荐该方式。

[web]    #分组名
172.16.1.7    #主机ip[nfs]
172.16.1.31 ansible_user=root ansible_password=2 ansible_port=22

子组

[data:children]    #子组名:children  children关键字
nfs    #分组名
backup
db

初步使用ansible

[root@m01 ansible]# ansible data -m ping
172.16.1.31 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
172.16.1.41 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
172.16.1.51 | UNREACHABLE! => {"changed": false,"msg": "Failed to connect to the host via ssh: ssh: connect to host 172.16.1.51 port 22: No route to host","unreachable": true
}

modules-模块

相当于linux中的各种命令,ansible有好几百个模块,需要自己慢慢熟悉,本次会介绍几个常用的模块。

ad-hoc使用格式:

ansible 主机清单 -m 模块 -a 模块中的选项

        -i:主机清单

        -m:模块

        -a:模块选项

查看模块帮助:

ansible-doc -s 模块名

command

ansible默认模块,该模块相当于linux命令行,但是不支持特殊符号如:*、|等,只适合执行简单命令。

[root@m01 ~]# ansible all -m command -a 'hostname'
172.16.1.7 | CHANGED | rc=0 >>
web01
172.16.1.31 | CHANGED | rc=0 >>
nfs01
172.16.1.41 | CHANGED | rc=0 >>
backup

shell

与command模块类似,但是该模块支持特殊符号。

[root@m01 ~]# ansible all -m shell -a 'rm -rf  /tmp/*'
[WARNING]: Consider using the file module with state=absent rather than running 'rm'.  If you
need to use command because file is insufficient you can add 'warn: false' to this command
task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
172.16.1.31 | CHANGED | rc=0 >>172.16.1.41 | CHANGED | rc=0 >>172.16.1.7 | CHANGED | rc=0 >>

同样的执行命令,在使用command模块时,不会生效。

script

ansible将本机上的脚本文件下发到被控端并运行。

先分发文件,在运行脚本运行完后会删除脚本文件。

ansible all -m script -a '~/script-test.sh'

file

管理文件、管理目录、管理软链接

选项:

path:文件

src:源文件

state:状态

        state=directory 创建目录

        state=file(默认) 更新文件,文件不存在则创建

        state=link 创建连接

        state=touch 创建文件

        state=absent 删除(递归删除)

mode:权限

owner:所有者

        group:所有组

创建文件:

ansible all -m file -a 'path=/opt/wang.txt state=touch'

 创建目录:

ansible all -m file -a 'path=/opt/a/b/c/d state=directory'

 创建软连接:

ansible all -m file -a 'path=/opt/hosts src=/etc/hosts state=link'

删除文件:

ansible all -m file -a 'path=/opt/wang state=absent'

copy

scp方式发送文件到被管理端

选项:

src:源文件

dest:目标文件

backup:目标文件存在,则备份

owner:所有者

group:所有组

传输文件:

ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts backup=yes'

systemd

相当于systemctl命令,管理服务

选项:

name:服务名换

enabled:开机启动

        yes

        no

state:服务状态

        started

        stopped

        reloaded

        restarted

daemon-reload:加载对应的服务管理配置文件

        yes

        no

启动crond服务并开机自启:

ansible all -m systemd -a 'name=crond state=started enabled=yes'

yum

包含yum/apt命令

选项:

name:软件包名,指定过个","分割

state:

        installed/present 安装

        removed/absent 删除

lastest 安装或更新

update_cache:缓存

        yes

        no

安装软件:

ansible all -m yum -a 'name=htop,tree,lrzsz state=installed'

 get_url

下载文件,相当于wget

选项:

url:下载地址

dest:下载目录

ansible all -m get_url -a 'url=https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.13-release1.el7.x86_64.rpm dest=/tmp'

yum_repository

下发yum源

提前写好,copy下发更直接

选项:

name:yum源中的名字 []

description:yum源中的注释 name

baseurl:yum源的下载地址 baseurl

enabled:yum源是否启用

gpgcheck:yum源是否验证

file:yum源文件的名字,自动加repo

下发nginx yum源文件:

ansible web -m yum_repository -a 'name=nginx description=nginx_repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ enabled=yes gpgcheck=no file=nginx'

user

管理用户

选项:

name:用户名

uid:uid

group:用户组

shell:解释器

create_home:是否创建家目录

state:

        present 添加

        absent 删除

创建虚拟用户:

ansible all -m user -a 'name=www-ans uid=2000 shell=/sbin/nologin create_home=no state=present'

创建用户并设置密码:

ansible all -m user -a "name=wem password={{'1' | password_hash('sha512','wang')}} state=present"

password选项只能接收加密过后的密码

{{'1' | password_hash('sha512','wang')}}

1:密码

password_hash:加密插件

sha512:加密算法

wang:随机字符串

mount

mount挂载或修改/etc/fstab实现永久挂载

选项:

fstype:文件系统 xfs ext4 nfs

src:源地址(nfs)

path:挂载点

state:

        absent 卸载并修改fstab

        umounted 卸载不修改fstab

        present 仅修改fstab,不挂在

        mounted 挂载并修改fstab

        remounted 重新挂载

挂载nfs:

ansible web -m mount -a 'src=172.16.1.31:/data/ path=/data/ fstype=nfs state=mounted'

cron

管理定时任务,删除任务时只能删除通过ansible添加的定时任务。

选项:

name:名字(即注释)

minute:分钟

hour:小时

day:日期

month:月

week:周

job:指定的命令或脚本

state:

        present 添加

        absent 删除

ansible all -m cron -a 'name="sync time test" minute=*/2 job="/sbin/ntpdate ntp1.aliyun.com" state=present'

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

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

相关文章

Java并发常见面试题总结(上)

线程 ⭐️什么是线程和进程? 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程 在 Java 中,当我们启动 main 函数时其实就是启动了一…

38.第二阶段x86游戏实战2-HOOK窗口消息机制(解决多开窗口句柄问题)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

【原创分享】详述中间件的前世今生

中间件是一种软件组件,位于应用程序和操作系统之间,通过提供统一的接口和功能来简化开发和管理应用程序、提高应用程序的可靠性和性能。 中间件的前世可以追溯到20世纪80年代的分布式系统和网络技术的发展。在那个时候,随着计算机网络的普及…

vite+vue3+ts使用vue3-draggable-resizable,可拖动、调整大小的模块库,真的太好用了!

前言:公司业务:在很多地方装了路灯,给路灯做了个管理系统,有管理系统肯定就是增,删,查,改,但是这次改好像有点复杂。给路灯下发指令,可以在路灯的大屏放文字,…

想给视频去背景音乐?简单几步搞定

在数字视频编辑和处理中,去除视频中的背景音乐是一个常见的需求。无论是因为背景音乐与视频内容不符,还是出于版权考虑,掌握视频去背景音乐的方法都显得尤为重要。那么,视频怎么去背景音乐呢?本文将详细介绍几种去除视…

C语言串口接收GPS数据

要在C语言中接收GPS数据,需要使用串口通信来与GPS设备进行数据交互。一个简单的串口通信代码主要包含了以下几个部分: 1.标准库头文件 stdio.h:包含输入输出函数,如 printf string.h:包含字符串处理函数&#xff0c…

深度学习:yolov3的使用--建立模型

使用argparse模块来定义和解析命令行参数 创建一个ArgumentParser对象 parser argparse.ArgumentParser() 训练的轮数,每批图像的大小,更新模型参数之前累积梯度的次数,模型定义文件的路径。 parser.add_argument("--epochs", typeint, d…

smuge error

0 Preface/Foreword 1 解决方法 第一步:跳过大文件下载,到时候统一使用快速批处理fast batch git lfs install --skip-smudge 故意敲错指令,会出现git lfs install 的usage: 第二步:clone仓库 下载结果:…

R语言机器学习与临床预测模型79--机器学习总览

R小盐准备介绍R语言机器学习与预测模型的学习笔记 你想要的R语言学习资料都在这里, 快来收藏关注【科研私家菜】 01 机器学习分类 机器学习模型主要分为有监督、无监督和强化学习方法。 监督学习 监督学习是教师向学生提供关于他们在考试中是否表现良好的反馈。其中…

黑马软件测试第二篇_功能测试

软件质量模型 应用场景:提供对于软件产品从测试角度思考的一种思路 定义:实际实现的产品和需求描述是否相一致,相一致程度高说明质量满足需求(好) 如何评判软件的质量? 功能:软件产品是否具备某…

React 中组件通信的几种主要方式

一、父传子&#xff1a; 1. 传递多个属性 父组件可以通过 props 传递多个属性给子组件。 示例 // 子组件 function Son(props) {return (<div>This is Son, {props.name} - Age: {props.age}</div>); }// 父组件 function App() {const name This is App N…

精华帖分享|如何全方位无死角保护你的交易所账号

本文来源于量化小论坛策略分享会板块精华帖&#xff0c;作者为菊座&#xff0c;发布于2024年3月4日。 以下为精华帖正文&#xff1a; 01 背景 起因是这两周保4赚麻了&#xff0c;看到中性群里大佬们的曲线&#xff0c;大家都想加大仓位&#xff0c;于是我在群里提醒了下大家资…

【STM32】SD卡

(一)常用卡的认识 在学习这个内容之前&#xff0c;作为生活小白的我对于SD卡、TF卡、SIM卡毫无了解&#xff0c;晕头转向。 SD卡&#xff1a;Secure Digital Card的英文缩写&#xff0c;直译就是“安全数字卡”。一般用于大一些的电子设备比如&#xff1a;电脑、数码相机、AV…

11月第一篇新作,十一月对我好一点:C++之继承(2)

C之继承&#xff08;2&#xff09; 虚继承 很多⼈说C语法复杂&#xff0c;其实多继承就是⼀个体现。有了多继承&#xff0c;就存在菱形继承&#xff0c;有了菱形继承就有 菱形虚拟继承&#xff0c;底层实现就很复杂&#xff0c;性能也会有⼀些损失&#xff0c;所以最好不要设计…

tiktok批量添加达人怎么弄

在 TikTok 上批量添加达人可以借助一些工具或方法&#xff0c;以下是一些常见的途径&#xff1a; 点我达秘免费体验地址注册 使用达人邀约工具&#xff1a; 功能特点&#xff1a;这类工具专为 TikTok 跨境小店和本土小店提供服务&#xff0c;可以实现多国家、多店铺同时私信和…

重塑重工起重行业未来:网关与云平台携手共创价值新篇章

在重工起重这一传统而关键的工业领域中&#xff0c;技术的每一次革新都意味着生产效率与安全标准的飞跃。随着物联网、大数据、云计算等先进技术的不断渗透&#xff0c;重工起重行业正迎来一场前所未有的智能化变革。其中&#xff0c;网关与云平台的深度融合&#xff0c;正成为…

NPOI 操作详解(操作Excel)

目录 1. 安装 NPOI 2. 使用 NPOI 创建新 Excel 文件 3. 设置列宽和行高 1. 设置列宽 2. 设置行高 3. 同时设置列宽和行高 4. 设置统一的行高 5. 设置统一的列宽 6. 应用统一的行高和列宽 4. 合并单元格 5. 设置单元格样式&#xff08;字体、边框、背景色等&#xf…

CMS getshell

进入前台 漏洞为前台任意用户密码修改和前台用户文件上传然后getshell 1. 弱口令进入前台用户admin123/admin123 2. 进入会员用户后点击内容中心 点击发布文章 存在文件上传&#xff0c;发现后缀和MIME类型都是白名单 但是在原文件的基础上继续添加随意后缀&#xff0c;发现成功…

教你用python实现自动化文本识别

目录 步骤1&#xff1a;安装依赖 安装Tesseract 安装pytesseract和Pillow&#xff08;用于图像处理&#xff09; 扩展功能 实现自动化文本识别&#xff08;Optical Character Recognition, OCR&#xff09;通常使用Python的OCR库&#xff0c;例如Tesseract。Tesseract是一个…

逻辑磁盘管理 附实验:逻辑卷的组成与划分

分区类型&#xff1a; 1、系统引导分区 就是存放系统的引导文件和Linux的内核文件 2、swap分区 交换分区&#xff0c;系统的物理内存不足时&#xff0c;从一些长时间未运行的程序当中释放一部分内存释放出来的保存到swap分区&#xff0c;这些未运行的程序一旦运行还要从swap空…