ansible常用模块详解

常用模块介绍:

模块作用模块参数示例
ping测试现有的SSH参数是否能连通远程服务器$ ansible test -m ping
commandcommand是Ansible的默认模块,可以不指定模块名称直接运行Linux 命令,也可以通过-m参数指定command 模块,不支持管道。chdir:在执行指令之前,先切换到该指定的目录,类似cd /your/path&&command
executable:切换shell来执行命令
$ ansible test -a 'hostname'
$ ansible test -m command -a 'hostname'
raw官方文档的说法raw模块相当于使用SSH执行Linux命令,支持管道。$ ansible test -m raw -a 'cat /etc/passwd |wc -l'
shellshell模块可以执行远程服务器上的shell脚本文件,同样支持管道,脚本需要绝对路径。$ ansible test -m shell -a '/home/devops/test.sh'
scriptscript模块可在远程服务器执行本地的脚本,相当于scp+shell组合。执行完会在远程服务器上删除脚本文件$ ansible test -m script -a '/test.sh'
filefile模块主要用于对远程服务器上的文件(包括链接和目录) 进行操作, 包括修改文件的权限、修改文件的所有者、创建文件、删除文件等。force:需要在两种情况下强制创建软链接
1.源文件不存在但之后会建立的情况下
2.目标软连接已经存在,需要取消之前的软链接,然后创建洗的软连接,有两个选项:yes/no
group:定义文件/目标的属组
mode:定义文件/目录的权限
owenr:定义文件/目录的属主
path:必选项,定义文件/目录的路径
recurse:递归的设置文件的属性,只对目录有效
src:要被链接的源文件的路径,只应用于state=link的情况
dest:被链接到的路径,只应用于state=link的情况
state的取值有directory、file、link、hard、touch、absent:
directory:如果文件不存在,创建目录
file:即使文件不存在,也不会被创建
link:创建软连接
hard:创建硬链接
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:删除目录、文件或者取消链接文件
创建/temp/filetest
ansible test -m file -a 'path=/temp/filetest state=touch'
修改filetest权限
ansible test -m file -a 'path=/temp/filetest state=touch mode="u=rw,g=r,o=r"''
修改filetest属主和权限
ansible test -m file -a "path=/temp/filetest owner=root group=root mode=0644" -become'
copycopy模块将本地文件/目录拷贝到远程服务器,类似scp命令。但比scp更强大,在拷贝文件的同时,也可以设置文件在远程服务器的权限和所有者。src:要复制到远程主机的文件地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,将递归复制。在这种情况下,如果路径使用"/“结尾,则只复制目录里的内容,如果没有使用”/"来结尾,则将包含目录在内的整个内容全部复制,类似于rsync
dest:文件复制目的地,必须绝对路径,如果源文件是目录,dest指向的也必须是目录
force: 默认取值为yes,表示目标主机包含该文件,但内容不同时会强制覆盖,如果该选项设置为no, 则只有当目标主机的目标位置不存在于该文件时,才会进行复制
backup:默认取值为no,如果为取值为yes,在覆盖之前将原文件进行备份
directory_mode:递归设定目录权限,默认为系统默认权限
others:所有file模块里的选项都可以在这里使用
#拷贝文件到远程服务器
ansible test -m copy -a "src=test.sh dest=/temp/test.sh"
#拷贝文件到远程服务器,如果远程服务器已经存在,则备份文件
ansible test -m copy -a "src=test.sh dest=/temp/test.sh backup=yes force=yes "
#拷贝文件到远程服务器,并修改文件的所有者和权限
ansible test -m copy -a "src=test. sh dest=/temp/test. sh owner=root group= root mode=644 force=yes" - become
user/groupuser模块请求的是useradd,userdel,usermod三个指令,goup模块请求的是groupadd,groupdel,groupmod三个指令。name:需要操作的用户名(或群组名)
comment:用户的详细描述
createhome:创建用户时,是否创建家目录,默认为yes
Dhome:指定用户的家目录,需要与createhome选项配合使用
groups:指定用户的属组
uid:设置用户的uid
Dgid:设置群组的gid
password:设置用户的密码
state:是创建用户(或群组)还是删除用户(或群组),取值包括present和absent
expires:用户的过期时间
shell:指定用户的shell环境。
#创建用户
ansible test -m user -a 'name=lucius uid=1329 group=root'-become
#删除用户
ansible test -m user -a 'name=lucius state=absent' -become
#创建群组
ansible test -m group -a "name=root state=present gid=l234" -become
#删除群组
ansible test -m group -a "name=root state=absent" -become
aptapt模块用来在Debian/Ubuntu系统中安装软件、删除软件。name:软件包的名称
state:软件包的状态,可以取值为latest,absent,present和build-dep,默认为present
autoremove:默认取值为no,如果取值为yes,将会移除不需要的软件包
force:强制安装或删除软件包
update_cache:作用与apt-get update相同
deb: deb文件的路径。
安装软件包
ansible test -m apt -a "name=git state=present" -become
卸载软件包
ansible test -m apt -a "name=git state=absent" -become
更新源
ansible test -m apt -a "update_cache=yes" -become
get_url下载数据到本地类似于curl命令。get_url比curl命令更灵活,可控制数据所有者、权限、检查下载数据的checksum等。url:必选,文件的下载地址
dest:必选,文件保存的绝对路径
mode:文件权限mode
others:所有file模块里的选项都可以在这里使用
checksum: 文件校验码
headers:传递给下载服务器的HTTP Headers
backup: 如本地存在同名文件,备份文件
timeout: 下载超时时间
下载文件到远程服务器
ansible test -m get_url -a 'url=http://localhost:8000/data.tar.gz dest=/temp/test.tar.gz'<br>下载文件到远程服务器, 并修改文件的权限<br>ansible test -m get_url -a 'url=http://localhost:8000/data.tar.gz dest=/temp/test.tar.gz mode=0777'
下载文件到远程服务器,并且检查文件的md5校验是否与控制端给出的md5校验相同
ansible test -m get_url -a 'url=http://localhost:8000/data.tar.gz dest=/temp/test.tar.gz checksum=md5:8b9f04bda6520871c898bc6a056deb9d
unarchiveunarchive 模块用于解压文件,类似于tar 命令。默认unarchive将本地的压缩包拷贝到远程服务器,然后进行解压。remote_src:该选项可以取值为yes或no,用来表示解压的文件存在远程服务器中,还是存在本地所在的服务器中。默认取值为n o,表示在解压文件之前,先将控制节点上的文件复制到远程主机中,然后再进行解压
src:指定压缩文件的路径,该选项的取值取决于remote_src的取值,如果remotesrc取值为yes,则src指定的是远程服务器中压缩包的地址,如果remote_src 取值为no,则src 指向的是本地中的路径
dest:该选项指定的是远程服务器上的绝对路径,表示压缩文件解压的路径
list_files:默认情况下该选项取值为no,如果该选项取值为yes,也会解压文件,并且在ansible 的返回值中列出压缩包里的文件
exclude:解压文件时排除exclude选项指定的文件或目录列表
keep_newer:默认取值为False,如果该选项取值为True ,那么当目标地址中存在同名的文件,并且文件比压缩包中的文件更新时,不进行覆盖
owner:文件或目录解压以后的所有者
grop:文件或目录解压以后所属的群组
mode:文件或目录解压以后的权限
解压本地文件
ansible test -m unarchive -a "src=test.tar.gz dest=/temp/test list_files=yes"
解压远程文件
ansible test -m unarchive -a "src=/temp/test.tar.gz dest=/temp remote_src=yes"
gitgit模块在远程服务器执行git相关的操作。该模块一般应用于需要源码安装时,从源码托管网站下载,然后执行命令源码安装。需要注意,该模块依赖于git,因此,在使用该模块前应该先安装git。repo:远程git库的地址,可以是一个git协议、ssh协议或http协议的git库地址
dest:必选选项,git库clone到本地服务器以后保存的绝对路径
version:克隆远程git库的版本,取值可以为HEAD 、分支的名称、tag的名称,也可以是一个commit的hash 值
force: 默认取值为no,当该选项取值为yes时,如果本地的git 库有修改,将会抛弃本地的修改
accept_hostkey:当该选项取值为yes时,如果git库的服务器不在know_hosts中,则添加到know_hosts中,key_file 指定克隆远程git库地址时使用的私钥。
将requests克隆到/temp/requests目录下
ansible test -m git -a "repo=https://github.com/kennethreitz/requests.git dest=/temp/requests version=HEAD"
从源码安装requests
ansible test -a "python setup.py install chdir=/temp/requests" -become
验证requests 是否安装成功
ansible test -a "python -c 'import requests'"
statstat模块用于获取远程服务器上的文件信息,其作用类似于Linux下的stat命令。stat模块可以获取atime、ctime、mtime、checksum、size、uid、gid等信息。path:必选,用来指定文件/目录路径。获取文件的相信信息
ansible test -m stat -a "path=/etc/passwd"
croncron是管理Linux下计划任务的模块。backup:取值为yes 或no,默认为no,表示修改之前先做备份
state:取值为present或absent,用来确认该任务计划是创建还是删除
name: 该任务的描述
job: 添加或删除任务,主要取决于state的取值
user:操作哪一个用户的crontab
cron_file:如果指定该选项,则用该文件替换远程主机上cron.d目录下的用户任务计划
month weekday day minute hour:取值与cronta b 类似,例如,对于minute 的取值范围0~59,也可以选择"“表示每分钟运行,或者”/5"表示每5分钟运行。
增加一个crontab 任务
$ ansible test -m cron -a 'backup=yes name="test cron" minute=*/2 hour=* job="ls /temp >/dev/null"
进入服务器,查看新增的crontab任务
$ crontab -1
serviceservice 模块的作用类似于Linux下的service命令,用来启动、停止、重启服务。name:服务的名称,该选项为必选项
state:可以取值为started 、stopped 、restarted 和reloaded。其中,started和stoped是幕等的,也就是说,如果服务已经启动了,执行started不会执行任何操作
sleep:重启的过程中,先停止服务然后sleep几秒再启动
pattern:定义一个模式,Ansible 首先通过sta阳s 命令查看服务的状态,以此判断服务是否在运行,如果通过sta tus 查看服务状态时没有响应,Ansible会尝试匹配ps 命令的输出,当匹配到相应模式时,认为服务已经启动,否则认为服务没有启动
enabled:取值为yes或no,用来设置服务是否开机启动。
安装Apache,默认情况下,Apache安装完成以后就会启动
ansible test -m apt -a "name=apache2 state=present " -become
停止Apache
ansible test -m service -a "name=apache2 state=stopped"
重启Apache
ansible test -m service -a "name=apache2 state=restarted"
sysctl该模块的作用与Linux下的sysctl命令相似,用于控制Linux的内核参数。name:需要设置的参数
value:需要设置的值
sysctl_file: sysctl.conf文件的绝对路径,默认路径是/etc/sysctl.conf
reload:该选项可以取值为yes或no,默认为yes,用于表示设置完成以后是否需要执行sysctl -p操作。
设置overcommit_memory参数的值为l
ansible test -m sysctl -a "name=vrn.overcommit_memory value=l" -become
mount在远程服务器上挂载磁盘,当进行挂盘操作时,如果挂载点指定的路径不存在,将创建该路径。name:挂载点的路径
state:可以取值为present, absent, mounted, unmounted,其中,mounted 与unmounted用来处理磁盘的挂载和卸载, 并且会正确配置fstab 文件, preset与absent只会设置fstab文件,不会去操作磁盘
fstype:指定文件系统类型,当state取值为present 或mounted 时,该选项为必填选项
src:挂载的设备
挂载/dev/vga盘到/mnt/temp目录
ansible test -m mout -a "name=/mnt/temp src=/dev/vga fstype=ext4 state=mounted"
synchronizesynchronize 模块是对rsync命令的封装,以便对常见的rsync任务进行处理。我们也可以使用command 模块调用rsync命令执行相应的操作。rsync是一个比较复杂的命令,相对来说,使用synchronize简单些。src:需要同步到远程服务器的文件或目录
dest:远程服务器保存数据的路径
archive:默认取值为yes ,相当于同时开启recursive、links、perms、times、owner、group、-D等选项
compress:默认为yes,表示在文件同步过程中是否启用压缩
delete:默认为no,当取值为yes时,表示删除dest中存在而src中不存在的文件。
同步本地目录到远程服务器
ansible test -m synchronize -a "src=test dest=/temp"
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值