ansible使用,常用模块
使用ansible管理其他主机有两种方式:
1.命令行执行ansible ad-hoc命令
2.把要做的动作行为写入一个文件【playbook脚本】,ansible读取脚本自动完成相应的任务。
Ansible ad-hoc是一种通过命令行批量管理的方式
格式:ansible 主机集合,组名 -m 模块名 -a "参数" -k
其他参数: -k使用密码远程、-i指定主机列表文件
注意事项:
执行ansible命令一定要先cd到ansible目录
1.查看主机列表
#cd ~/ansible
#ansible all --list-hosts #查看所有主机 all是ansible自带的已经定义好的特殊组
2.测试远程主机是否能ping通。当需要远程多个主机或者多个组时,中间使用逗号分隔
#ansible node1 -m ping
#ansible node1,webserver -m ping
3.模块就是脚本(多数为Python脚本),多数脚本都支持参数,默认模块为command
#ansible node1 -m command -a "uptime" #查看CPU负载
#ansible node1 -m command -a "uname -r" #查看内核版本
#ansible node1 -a "ip a s" #查看网卡信息
#ansible all -a "date" #查看时间
#####################################################
失败检查:
检查/etc/hosts
检查~/ansible/ansible.cfg
检查~/ansible/hosts
####################################################
command和shell模块的区别,command模块的命令不启动shell,直接通过ssh执行命令,command不支持bash特性,如管道和重定向等功能,所有需要调用shell的功能都无法使用。
不可以使用shell模块执行交互命令,如vim、top等
4.Shell模块
# ansible test -m shell -a "ps aux | wc -l" #进程数量
# ansible test -m shell -a "who" #登陆信息
#ansible test -m shell -a "touch /tmp/a.txt" #使用shell模块创建文件会有Warning警告提示,正常
#####################################################################
注意:ansible使用ssh远程连接被管理主机,退出ssh后所有状态失效。
#ansible test -m shell -a "cd /tmp" #切换目录
#ansible test -m shell -a "touch b.txt" #创建文件(没有指定路径,在家目录创建的文件)
#ansible test -m shell -a "ls /tmp/b.txt" #查看,没有文件和目录
#ansible test -m shell -a “chdir=/tmp touch b.txt” #使用chdir参数切换共作目录
#####################################################################
shell模块支持判断(creates、removes)
creates文件名:文件存在,不执行shell命令。
removes文件名:文件不存在,不执行shell命令。
#ansible test -m shell -a "touch /tmp/b.txt creates=/tmp/b.txt"
# ansible会远程test目标主机,判断目标主机有没有/tmp/b.txt文件,如果有该文件则ansible对应的shell命令不执行,没有则执行shell命令。
假设我有一个xxx.zip压缩包
#ansible test -m shell -a “unzip /root/xxx.zip”
远程test主机,执行unzip命令解压一个压缩包文件
#ansible test -m shell -a “unzip /root/xxx.zip removes=/bin/unzip”
ansible会远程test主机,判断目标主机有没有/bin/unzip程序,如果没有不执行shell命令,有则执行
############################################################################
5.script模块。script模块会把-a后面的脚本拷贝到被管理端主机,在目标主机执行这个脚本。
# vim ~/ansible/test.sh
#!/bin/bash
yum -y install httpd
systemctl start httpd
#ansible test -m script -a ‘./test.sh’ #test主机组
在node1电脑检测,是否安装了httpd软件
#rpm -q httpd
#systemctl status httpd
###############
6.file模块
###############
file模块可以创建文件、目录、链接;修改权限与属性等。
很多ansible模块具有【幂等性】的特征。
幂等性:任意次执行所产生的影响均与一次执行的影响相同。
#state=touch是创建文件,state=directory是创建目录,state=absent代表删除,state=link是创建快捷方式
#ansible test -m file -a “path=/tmp/file.txt state=touch”
# ansible test -m file -a "path=/tmp/mydir state=directory"
#远程test组中所有主机,创建目录,path后面指定要创建的文件或目录的名称
## 验证:到node1主机,使用ls /tmp/看看tmp目录下是否有mydir子目录
# ansible test -m file -a "path=/tmp/file.txt owner=sshd group=adm mode=0777"
#修改文件或目录权限,path后面指定要修改的文件名或目录名称,owner后面指定用户,group后面指定组,mode后面指定要修改的权限(0777中第一个0代表的是无特殊权限,如SUID、SGID等)
## 验证:到node1主机,使用ls -l /tmp/file.txt查看文件的详细信息是否正确
# ansible test -m file -a "path=/tmp/mydir state=absent"
#state=absent代表删除(删除目录)
# ansible test -m file -a "path=/tmp/file.txt state=absent"
# state=absent代表删除(删除文件)
# ansible test -m file -a "src=/etc/hosts path=/tmp/host.txt state=link"
#给/etc/hosts文件创建一个链接文件/tmp/host.txt(src指定源文件,path是软链接文件名)
#相当于执行命令 ln -s /etc/hosts /tmp/host.txt
## 验证:到node1主机使用ls -l /tmp/hosts查看文件是否为软链接
#############
7.copy模块,可以将文件拷贝到远程主机,如果目标主机有同名文件时,通过定义backup=yes则先备份在拷贝。
#############
copy模块可以将文件拷贝到远程主机 (ansible-doc copy)。
# echo AAA > ~/a3.txt
#ansible test -m copy -a "src=~/a3.txt dest=/root/"
#把管理端本机的a3.txt文件,拷贝到test组中所有主机的/root/目录
#src代表源文件,dest代表目标文件
## 验证:到node1主机使用ls /root/a3.txt查看是否有该文件
#echo CCC > ~/a3.txt
#ansible test -m copy -a "src=~/a3.txt dest=/root/ backup=yes"
查看node1#ls
a.txt
a.txt.3600.2020-09-06@17:50:08~
############################
8.fetch模块,fetch模块与copy类似,作用相反,可以将其他主机的文件拷贝到本地。flat=yes拷贝目录
############################
# ansible all -m fetch -a "src=/etc/hostname dest=~/"
#将all所有主机的hostname文件下载到本地家目录
#ls
########################
9.lineinfile|replace模块,在修改单个文件的单行内容时可以使用lineinfile模块,lineinfile会替换一整行,replace可以替换关键词
########################
#ansible test -m lineinfile -a "path=/etc/issue line='hello world'"
#在/etc/issue文件中添加一行内容hello world,默认添加到最后,line后面跟的是需要添加的文件内容
# ansible test -m lineinfile -a "path=/etc/issue line='insert' insertafter='Kernel'"
#将line后面的内容插入到/etc/issue文件中Kernel行的后面
#######################################################
replace可以替换关键字
#######################################################
#ansible test -m replace -a “path=/etc/issue regexp=‘hello’ replace=ni hao”
将node1主机中/etc/issue文件全文所有的hello替换为ni hao
#regexp后面是需要替换的旧内容;replace后面是需要替换的新内容
########
10.user模块,可以实现linux系统账户管理
########
#ansible test -m user -a "name=tuser1"
#ansible test -m user -a "name=tuser2 uid=1010 group=adm groups=daemon,root home=/home/tuser2"
#name是用户名,uid指定用户ID号,group指定用户属于哪个基本组
#groups指定用户属于哪些附加组,home指定用户的家目录
#ansible test -m user -a "name=tuser1 password={{'abc'| password_hash('sha512')}}"
#修改账户密码,用户名是tuser1,密码是abc,密码经过sha512加密
# ansible test -m user -a "name=tuser1 state=absent"
#删除账户tuser1,state=absent代表删除账户的意思,name指定要删除的用户名是什么
#账户的家目录不会被删除,相当于执行userdel tuser1
# ansible test -m user -a "name=tuser2 state=absent remove=true"
#删除tuser2账户同时删除家目录、邮箱,相当于执行userdel -r tuser2
################################
11.yum_repository模块,使用yum_repository可以创建或修改yum源配置文件(/etc/yum.repo.d/文件)
################################
#ansible test -m yum_repository -a "name=myyum description=hello baseurl=ftp://192.168.4.254/centos gpgcheck=no"
#新建一个yum源配置文件/etc/yum.repos.d/myyum.repo
yum源文件名为myyum,该文件的内容如下:
[myyum]
name= hello
baseurl= ftp://192.168.4.254/centos
gpgcheck= 0
#ansible test -m yum_repository -a "name=myyum description=test baseurl=ftp://192.168.4.254/centos gpgcheck=yes gpgkey=…"
#修改yum源文件内容
# ansible test -m yum_repository -a "name=myyum state=absent"
#删除yum源文件myyum
################################
12.yum模块,使用yum模块可以安装、卸载、升级软件包,state: present(安装)|absent(卸载)|latest(升级)。
################################
#ansible test -m yum -a "name=unzip state=present"
#安装unzip软件包,state默认为present,也可以不写
# ansible test -m yum -a "name=unzip state=latest"
#升级unzip软件包,软件名称可以是*,代表升级所有软件包
# ansible test -m yum -a "name=unzip state=absent"
#调用yum模块,卸载unzip软件包,state=absent代表卸载软件
############################
13.service模块,(ansible-doc service)。service为服务管理模块(启动、关闭、重启服务等)state:started|stopped|restarted,enabled:yes设置开机启动。
############################
# ansible test -m yum -a "name=httpd"
#调用yum模块,安装httpd软件包
# ansible test -m service -a "name=httpd state=started"
#调用service模块,启动httpd服务
# ansible test -m service -a "name=httpd state=stopped"
#调用service模块,关闭httpd服务
# ansible test -m service -a "name=httpd state=restarted"
#调用service模块,重启httpd服务
# ansible test -m service -a "name=httpd enabled=yes"
#调用service模块,设置httpd服务开机自启
############################
14.逻辑卷相关模块(ansible-doc lvg、ansible-doc lvol)
############################
做实验之前需要给对应的虚拟机添加额外磁盘,并创建磁盘2个分区
可以使用parted或fdisk命令给磁盘创建分区
这里的磁盘名称仅供参考,不要照抄!
lvg模块:创建、删除卷组(VG),修改卷组大小,state:present(创建)|absent(删除)。
# ansible test -m yum -a "name=lvm2"
#安装lvm2软件包,安装了lvm2软件后,才有pvcreate、vgcreate、lvcreate等命令
# ansible test -m lvg -a "vg=myvg pvs=/dev/sdb1"
#创建名称为myvg的卷组,该卷组由/dev/sdb1组成
#注意:这里的磁盘名称要根据实际情况填写
# ansible test -m lvg -a "vg=myvg pvs=/dev/sdb1,/dev/sdb2"
#修改卷组大小,往卷组中添加一个设备/dev/sdb2
lvol模块:创建、删除逻辑卷(LV),修改逻辑卷大小,state:present(创建)|absent(删除)。
# ansible test -m lvol -a "lv=mylv vg=myvg size=2G"
#使用myvg这个卷组创建一个名称为mylv的逻辑卷,大小为2G
# ansible test -m lvol -a "lv=mylv vg=myvg size=4G"
#修改LV逻辑卷大小
# ansible test -m lvol -a "lv=mylv vg=myvg state=absent force=yes"
#删除逻辑卷,force=yes是强制删除
# ansible test -m lvg -a "vg=myvg state=absent"
#删除卷组myvg

ansible使用,常用模块的更多相关文章
- ansible中常用模块详解
ansible中常用的模块详解: file模块 ansible内置的可以查看模块用法的命令如下: [root@docker5 ~]# ansible-doc -s file - name: Sets ...
- ansible api常用模块与参数
###ansibleAPI 常用模块 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括 ...
- Ansible之常用模块(一)
ansible之所以功能强大,不是ansible本身,是因为它有众多的模块,前文我们介绍了ansible的基础介绍,系列命令的用法以及选项的说明,通过前文的学习我们知道了ansible是基于pytho ...
- ansible API 常用模块
常用模块 用于读取yaml,json格式的文件 from ansible.parsing.dataloader import DataLoader #用于管理变量的类,包括主机,组,扩展等变量 fro ...
- ansible 四常用模块
常用模块 Ansible默认提供了很多模块来供我们使用.在Linux中,我们可以通过 ansible-doc -l 命令查看到当前Ansible支持哪些模块,通过 ansible-doc -s [模块 ...
- ansible 003 常用模块
常用模块 file 模块 管理被控端文件 回显为绿色则,未变更,符合要求 黄色则改变 红色则报错 因为默认值为file,那么文件不存在,报错 改为touch则创建 将state改为directory变 ...
- Ansible Playbooks 常用模块
官网链接:https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html ansible python module ...
- ansible小结常用模块
根据官方的分类,将模块按功能分类为:云模块.命令模块.数据库模块.文件模块.资产模块.消息模块.监控模块.网络模块.通知模块.包管理模块.源码控制模块.系统模块.单元模块.web设施模块.window ...
- Ansible之常用模块(二)
1.hostname:此模块的主要作用是管理远端节点主机名 模块帮助: root@localhost ~]# ansible-doc -s hostname - name: Manage hostna ...
- Ansible之常用模块介绍
环境 ansible HOST-PATTERN -m MOD_NAME -a MOD_ARGS -C -f forks ssh-keygen -t rsa -P "" ssh-co ...
随机推荐
- C#设计模式之21-策略模式
策略模式(Stragety Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/427 访问. 策略模式属于 ...
- 基于小程序云Serverless开发微信小程序
本文主要以使用小程序云Serverless服务开发一个记事本微信小程序为例介绍如何使用小程序云Serverless开发微信小程序.记事本小程序的开发涉及到云函数调用.云数据库存储.图片存储等功能,较好 ...
- win10 + Ubuntu 20.04 LTS 双系统 引导界面美化
版权声明:本文为CSDN博主「ZChen1996」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/ZChen1 ...
- SG 函数学习
\(Mex\) 运算 \(mex(S)\) 为不属于集合 \(S\) 的最小非负整数,即: \[mex(S)=\min \limits_{x \in \mathbb{N},x \not\in S} \ ...
- 【算法•日更•第三十五期】FF算法优化:EK算法
▎写在前面 FF算法传送门 之前我们已经学过了FF算法(全称Ford-Fulkerson算法)来找最大流,但是这种算法仍有诸多不对的地方. 其实这种算法存在着严重的效率的问题,请看下面的图: 以这个图 ...
- three.js 制作逻辑转体游戏(下)
上一篇已经对绕非定轴转动有所了解,这篇郭先生继续说一说逻辑转体游戏的制作,这部分我们同样会遇到一些小问题,首先是根据数据渲染陷阱和目标区域,然后是对可以转动的判定,最后是获胜的判定. 1. 根据数据渲 ...
- Python开发的入门教程(一)-数据类型、变量
介绍 Python第一门课程,是Python开发的入门教程,将介绍Python语言的特点和适用范围,Python基本的数据类型,条件判断和循环,函数,以及Python特有的切片和列表生成式. Pyth ...
- 第5篇 Scrum冲刺博客
1.站立式会议 1.1 会议图片 1.2 项目进展 成员 昨日任务 今日计划完成任务 陈忠明 歌曲信息的上传/下载包 歌曲批量下载压缩包 吴茂平 完善评论系统 新消息提醒功能设计 黄海钊 修改代码规范 ...
- Improved robustness of reinforcement learning policies upon conversion to spiking neuronal network platforms applied to Atari Breakout game
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:1903.11012v3 [cs.LG] 19 Aug 2019 Neural Networks, 25 November 2 ...
- 吊打 Tomcat ,Undertow 性能很炸!!
在 Java Web 容器的世界里,Tomcat 和 Jetty 是大名鼎鼎的.用的最多的开源项目,也是大众熟知的. 今天再介绍另外一款能和 Tomcat 媲美的神器:Undertow,据说性能方面还 ...