ansible模块及语法
常用模块详解
模块说明及示例:
1.ping模块ping模块
主要用于判断远程客户端是否在线,用于ping本身服务器,返回值是changed、ping
示例 ansible clu -m ping
2.Ansible command模块是Ansible默认模块
主要用于执行Linux基础命令,可以执行远程服务器命令执行、任务执行等操作。
但command模块不支持变量、重定向、管道符等,这些操作需要用shell模块执行
command模块使用详解:
chdir:执行命令前,切换到目录
creates:当该文件存在时,不执行该步骤
executable:切换shell来执行命令,需要使用命令的绝对路径
free_from:需要执行的脚本,一般使用Ansible的-a参数代替。
removes:当该文件不存在时,不执行该步骤
warn:如果在ansible.cfg中存在告警,如果设定了false,不会告警该行
示例ansible ansible-demo3 -m command -a "ls"
(command执行linux命令有局限性,最好使用shell替代 )
3.Ansible copy模块
主要用于文件或者目录复制,支持文件、目录、权限、用户组功能
copy模块使用详解:
src:Ansible端源文件或者目录,空目录不复制
content:用来替代src,用于将指定文件的内容复制到远程文件内
dest:客户端目标目录或者文件,需要绝对路径
backup:复制之前,先备份远程节点上的原始文件
directory_mode:用于复制目录,新建的文件会被复制,而旧的不会被复制
follow:支持link文件复制
force:覆盖远程主机不一致的内容
group:设定远程主机目录的组名
mode:设定远程主机文件及目录的权限
owner:设定远程主机目录的用户名
示例
ansible clu -m copy -a “src=/root/1.txt dest=/soft/2.txt group=root owner=root mode=755”
4.Ansible yum模块
主要用于软件的安装、升级、卸载,支持rpm软件包的管理
yum模块使用详解:
conf_file:设置远程yum执行时所依赖的yum配置文件
disable_gpg_check:安装软件包之前是否检查gpg key
name:需要安装的软件名称,支持软件组安装
update_cache:安装软件之前更新缓存
enablerepo:指定repo源名称
skip_broken:跳过异常软件节点
state:软件包状态,包括installed、present、latest、absent、removed
present, installed是指安裝套件,而latest指安裝最新的套件,也就是使用 yum mirror 上最新的版本。
absent, removed 没有什么区别
示例ansible clu -m yum -a “name=http state=latest”
5.Ansible user模块
主要用于操作系统用户、组、权限、密码等操作
user模块使用详解:
system:默认创建为普通用户,为yes则创建系统用户
append:添加一个新的组
comment:添加描述信息
createhome:给用户创建家目录
force:强制删除用户
group:创建用户主组
groups:将用户加入组或者附属组添加
home:指定用户的家目录
name:表示状态,是否create、remove、modify
password:指定用户的密码,为加密密码
remove:删除用户
shell:设置用户的shell登录环境
uid:设置用户ID
update_password:修改用户密码
state:用户状态,默认为present,表示新建用户
示例:ansible hadoop -m user -a "name=dba groups=admins,dbagroup append=yes home=/home/dba shell=/bash/shell state=present"
6. setup模块
主要用于获取主机信息,在playbooks里经常会用到的一个参数gather_facts就与该模块相关。setup模块下经常使用的一个参数是filter参数,具体使用示例如下
ansible_all_ipv4_addresses # ipv4的所有地址ansible_all_ipv6_addresses # ipv6的所有地址ansible_date_time # 获取到控制节点时间ansible_default_ipv4 # 默认的ipv4地址ansible_distribution # 系统ansible_distribution_major_version # 系统的大版本ansible_distribution_version # 系统的版本号ansible_domain #系统所在的域ansible_env #系统的环境变量ansible_hostname #系统的主机名ansible_fqdn #系统的全名ansible_machine #系统的架构ansible_memory_mb #系统的内存信息ansible_os_family # 系统的家族ansible_pkg_mgr # 系统的包管理工具ansible_processor_cores #系统的cpu的核数(每颗)ansible_processor_count #系统cpu的颗数ansible_processor_vcpus #系统cpu的总个数=cpu的颗数*CPU的核数ansible_python # 系统上的pythonansible cache -m setup -a 'filter=*processor*' # 用来搜索示例:
ansible 10.212.52.252 -m setup -a 'filter=ansible_*_mb' ansible host1 -m setup -a "filter=ansible_all_ipv4_addresses"
(由于ansible执行剧本执行会去获取主机参数,对执行速度会有影响,可以使用gather_faces去进行预先缓存)
7.file模块
主要用于远程主机上的文件操作,file模块包含如下选项:
force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
group:定义文件/目录的属组
mode:定义文件/目录的权限
owner:定义文件/目录的属主
path:必选项,定义文件/目录的路径
recurse:递归的设置文件的属性,只对目录有效
src:要被链接的源文件的路径,只应用于state=link的情况
dest:被链接到的路径,只应用于state=link的情况
state: :如果目录不存在,创建目录
file:即使文件不存在,也不会被创建
link:创建软链接
hard:创建硬链接
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:删除目录、文件或者取消链接文件
使用示例:
ansible test -m file -a "path=/root/1.txt state=file/directory”
8.cron模块(计划任务)
用于定时执行任务
相关参数:minute分、hour时、day日、month月、weekday周 (计划时间默认为*)
name:必须 任务描述
job:任务。要加引号(statepresent - 创建 adsent - 删除)
示例: ansible all -m cron -a 'minute=* weekday=1,3,5 job="/usr/bin/wall warning" name=test'
9.service模块
用于管理服务
name:服务名称
state:服务执行操作(started、stopped、restarted)
enable:自启动(yes)
runlevel:运行级别
示例:ansible host1 -m service -a "name=nginx state=started enabled=yes"
10.group(管理用户组)
用于创建修改用户组
name:组名称
gid:指定组gid
state:absent不存在 present当前
system:yes/no
示例:ansible host1 -m group -a "name=test_grp state=present"
11.fetch:(文件拉取模块)
用于目标主机上的文件拉取,不能拉取文件夹
dest= # 本地存储拉取文件的目录。例如dest=/data,src=/var/log/messages
fail_on_missing=[yes|no] # 当设置为yes时,如果拉取的源文件不存在,则此任务失败。在2.4以前是默认为no。2.4中默认为yes
flat=[yes|no] # 允许您重写将主机名/路径/文件/文件附加到目的地的默认行为。如果dest以“/”结尾,则将使用源文件的基名称,类似于复制模块。很明显这很方便,如果文件名是唯一的。
src= # 远程主机上的源文件。只能是文件,不支持目录。在未来的版本中可能会支持目录递归拉取
validate_checksum # 获取文件后验证源和目标校验和是否匹配
示例:ansible all -m fetch -a "src=/root/checkport.py dest=/data"
12.mount(挂载服务)
用于批量挂载服
path: /mnt/dvd #挂载的目录(nfs客户端)
src: /dev/sr0 #远端被挂载的目录 (nfs服务端)
fstype: nfs #挂载类型
opts: ro,noauto #自动挂载的参数
state: present (写入自动挂载,但实际没有挂咋,需要重启服务器unmounted #取消临时挂载,但是没有清理自动挂载mounted #写入自动挂载,并且直接挂载了(常用)absent #取消临时挂载,并且清理自动挂载
示例:ansible web01 -m mount -a 'src=172.16.1.31:/data path=/code/wordpress fstype=nfs state=mounted'
13.user:(管理用户模块)
name参数:必须参数,用于指定要操作的用户名称,可以使用别名 user。
group参数:此参数用于指定用户所在的基本组。
gourps参数:此参数用于指定用户所在的附加组。注意,如果说用户已经存在并且已经拥有多个附加组,那么如果想要继续添加新的附加组,需要结合 append 参数使用,否则在默认情况下,当再次使用 groups 参数设置附加组时,用户原来的附加组会被覆盖。
append参数:如果用户原本就存在多个附加组,那么当使用 groups 参数设置附加组时,当前设置会覆盖原来的附加组设置,如果不想覆盖原来的附加组设置,需要结合 append 参数,将 append 设置为 yes,表示追加附加组到现有的附加组设置,append 默认值为 no。
shell参数:此参数用于指定用户的默认 shell。
uid参数:此参数用于指定用户的 uid 号。
expires参数:此参数用于指定用户的过期时间,相当于设置 /etc/shadow 文件中的的第8列,比如,你想要设置用户的过期日期为2018年12月31日,那么你首先要获取到2018年12月31日的 unix 时间戳,使用命令 “date -d 2018-12-31 +%s” 获取到的时间戳为1546185600,所以,当设置 expires=1546185600 时,表示用户的过期时间为2018年12月31日0点0分,设置成功后,查看远程主机的 /etc/shadow 文件,对应用户的第8八列的值将变成17895(表示1970年1月1日到2018年12月31日的天数,unix 时间戳的值会自动转换为天数,我们不用手动的进行换算),目前此参数只支持在 Linux 和 FreeBSD 系统中使用。
comment参数:此参数用于指定用户的注释信息。
state参数:此参数用于指定用户是否存在于远程主机中,可选值有 present、absent,默认值为 present,表示用户需要存在,当设置为 absent 时表示删除用户。
remove参数:当 state 的值设置为 absent 时,表示要删除远程主机中的用户。但是在删除用户时,不会删除用户的家目录等信息,这是因为 remove 参数的默认值为 no,如果设置为yes,在删除用户的同时,会删除用户的家目录。当 state=absent 并且 remove=yes 时,相当于执行 “userdel --remove” 命令。
password参数:此参数用于指定用户的密码。但是这个密码不能是明文的密码,而是一个对明文密码”加密后”的字符串,相当于 /etc/shadow 文件中的密码字段,是一个对明文密码进行哈希后的字符串,你可以在 python 的命令提示符下输入如下命令,生成明文密码对应的加密字符串。
示例:ansible host1 -m user -a "name=test2 state=present groups=test2,test_grp shell=/bin/bash append=yes"
14.repoace(替换模块)
可以根据我们指定的正则表达式替换文件中的字符串,文件中所有被匹配到的字符串都会被替换。
path参数 :必须参数,指定要操作的文件,2.3版本之前,只能使用 dest, destfile, name指定要操作的文件,2.4版本中,仍然可以使用这些参数名,这些参数名作为 path 参数的别名使用。
regexp参数 : 必须参数,指定一个 python 正则表达式,文件中与正则匹配的字符串将会被替换。
replace参数 : 指定最终要替换成的字符串。
backup参数 :是否在修改文件之前对文件进行备份,最好设置为yes。
示例:ansible ansible-demo3 -m replace -a 'path=/testdir/test regexp="ABC" replace=abc’
15.lineinfile
我们可以借助 lineinfile 模块,确保”某一行文本”存在于指定的文件中,或者确保从文件中删除指定的”文本”(即确保指定的文本不存在于文件中),还可以根据正则表达式,替换”某一行文本”
path参数 :必须参数,指定要操作的文件。
line参数 : 使用此参数指定文本内容。
regexp参数 :使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。
state参数:当想要删除对应的文本时,需要将state参数的值设置为absent,absent为缺席之意,表示删除,state的默认值为present。
backrefs参数:默认情况下,当根据正则替换文本时,即使regexp参数中的正则存在分组,在line参数中也不能对正则中的分组进行引用,除非将backrefs参数的值设置为yes。backrefs=yes表示开启后向引用,这样,line参数中就能对regexp参数中的分组进行后向引用了,这样说不太容易明白,可以参考后面的示例命令理解。backrefs=yes除了能够开启后向引用功能,还有另一个作用,默认情况下,当使用正则表达式替换对应行时,如果正则没有匹配到任何的行,那么line对应的内容会被插入到文本的末尾,不过,如果使用了backrefs=yes,情况就不一样了,当使用正则表达式替换对应行时,同时设置了backrefs=yes,那么当正则没有匹配到任何的行时,则不会对文件进行任何操作,相当于保持原文件不变。
insertafter参数:借助insertafter参数可以将文本插入到“指定的行”之后,insertafter参数的值可以设置为EOF或者正则表达式,EOF为End Of File之意,表示插入到文档的末尾,默认情况下insertafter的值为EOF,如果将insertafter的值设置为正则表达式,表示将文本插入到匹配到正则的行之后,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。
insertbefore参数:借助insertbefore参数可以将文本插入到“指定的行”之前,insertbefore参数的值可以设置为BOF或者正则表达式,BOF为Begin Of File之意,表示插入到文档的开头,如果将insertbefore的值设置为正则表达式,表示将文本插入到匹配到正则的行之前,如果正则没有匹配到任何行,则插入到文件末尾,当使用backrefs参数时,此参数会被忽略。
backup参数:是否在修改文件之前对文件进行备份。
create参数 :当要操作的文件并不存在时,是否创建对应的文件。
示例:ansible ansible-demo3 -m lineinfile -a 'path=/testdir/test regexp="^line123" line="test lineinfile" '
16.unarchive 解压模块
批量部署压缩包,并解压
src: /tmp/foo.zip #要解压的包
dest: /usr/local/bin #解压到目标位置
remote_src: (yes #要解压的包在受控 no #要解压的包在控制端)
示例:ansible web03 -m unarchive -a 'src=/package/php.tar.gz dest=/tmp/ remote_src=yes'
17.archive 压缩模块
用于远程压缩文件及文件夹
path: /path/to/foo #要压缩的文件或目录
dest: /path/to/foo.tgz #压缩后的文件
format:bz2, gz, tar, xz, zip #指定打包的类型
示例:ansible web01 -m archive -a 'path=/code dest=/tmp/code.tar.gz'
18.script模块
远程执行目标主机上脚本
脚本路径,必须参数
chdir:在执行脚本之前,先进入到指定目录
creates:当远程主机上的该文件存在时,不执行脚本;反之执行
removes:当远程主机上的该文件不存在时,不执行脚本;反之执行
示例:ansible all -m script -a 'chdir=/opt /opt/test.sh'
19.get_url(下载模块)
url: 文件的下载地址(网址)—必须
url_username: 用于http基本认证的用户名
url_password: 用于http基本认证的密码
validate_certs: 如果否,SSL证书将不会验证。这只应在使用自签名证书的个人控制站点上使用
owner: 指定属主
group: 指定属组
mode: 指定权限
示例:ansible NFS -m get_url -a "url=http://nginx.org/download/nginx-1.12.2.tar.gz dest=/tmp/"ansible模块及语法的更多相关文章
- ansible模块
ansible模块: 模块(Modules),类似于 "任务插件"("task plugins")或"库插件"("library ...
- ansible中yaml语法应用
4.yaml语法应用 ansible的playbook编写是yaml语言编写,掌握yaml语法是编写playbook的必要条件,格式要求和Python相似,具体教程参考如下 yaml语言教程 附上一个 ...
- win10的pycharm中安装ansible模块过程
前面的安装报错信息 ansible模块安装报错:Could not install packages due to an OSError: [Errno 2] No such file or dire ...
- ansible笔记(3):ansible模块的基本使用
ansible笔记():ansible模块的基本使用 在前文的基础上,我们已经知道,当我们使用ansible完成实际任务时,需要依靠ansible的各个模块,比如,我们想要去ping某主机,则需要使用 ...
- 第4天:Ansible模块
Ansible对远程服务器的实际操作实际是通过模块完成的,其工作原理如下: 1)将模块拷贝到远程服务器 2)执行模块定义的操做,完成对服务器的修改 3)在远程服务器中删除模块 需要说明的是,Ansib ...
- ansible模块command、shell、raw、script
简介 环境: ansible端: ip:192.168.100.129 hostname:node1.lansgg.com client端: ip:192.168.100.131 hostname:v ...
- ansible模块之yum、pip、service、corn、user、group
ansible相关模块 yum rpm 和yum 的区别 rpm:全称redhat package manager (红帽包管理器) 不能解决包之间的依赖关系 yum:可以解决依赖关系 yum 源配置 ...
- ansible模块之command、shell、script、file、copy、fetch
前戏 ansible 批量在远程主机上执行命令 openpyxl 操作excel表格 puppet ansible slatstack ansible epel源 第一步: 下载epel源 wget ...
- Ansible 模块命令介绍
copy模块: 目的:把主控端/root目录下的a.sh文件拷贝到到指定节点上 命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/' ...
随机推荐
- Jmeter系类(31) - JSR223(1) | 控件介绍
JSR233 介绍 JSR223控件执行JSR223脚本代码用于创建/更新所需的某些变量 JSR223可以使用其内置的变量,有助于精简脚本,提高开发测试的效率 由于JSR223脚本编译方式基本相同,J ...
- 启动jemeter 报错相关解决方案
1:当启动jemeter时报错"页面文件太小,无法完成操作" 如图: 是说明分配的内容不足,即可调整内存重启即可解决 1):打开:控制面板>系统和安全>系统 2):点击 ...
- AVS 端能力之音频播放模块
功能简介 音频播放 音频流播放 URL文件播放 播放控制 播放 暂停 继续 停止 其它功能(AVS服务器端实现) 支持播放列表 支持上一首下一首切换 支持电台 事件指令集 AudioPlayer 端能 ...
- 计算机网络-4-2-ARP地址解析协议以及IP数据报不可变组成部分
地址解析协议ARP 在实际的应用中,我们会经常遇见这样的一个问题:我们已知一个机器(主机或者路由器的),我们怎么获取相应的硬件地址?,地址解析协议就是用来解决这个问题的. ARP协议的作用: 由上 ...
- 原生JS实现简单留言板功能
原生JS实现简单留言板功能,实现技术:css flex,原生JS. 因为主要是为了练手js,所以其中布局上的一些细节并未做处理. <!DOCTYPE html> <html lang ...
- 利用caffe.proto生成caffe.pb.h
完全按照博文来就好了:http://blog.csdn.net/u012905422/article/details/52794693
- Linux查找运行程序主目录
1.查看程序所在PID netstat -lntup 2.根据PID查找程序所在目录 ll /proc/PID/exe 3.查找程序配置路径 /proc/PID/exe -t
- django3上线部署踩的坑
好久没有用过django写项目了,最近公司开发个官网,一时兴起就拿来练练手,这不用不知道,一用吓一跳啊. 才多久,版本都到3.0了. 踩坑一:运行项目时失败报错,后来查找资料发现, 当你使用djang ...
- 洛谷5024 保卫王国 (动态dp)
qwq非正解. 但是能跑过. 1e5 log方还是很稳的啊 首先,考虑最普通的\(dp\) 令\(dp1[x][0]表示不选这个点,dp1[x][1]表示选这个点的最大最小花费\) 那么 \(dp1[ ...
- ls命令剖析
目录 ls命令剖析 资料翻译 SYNOPSIS 使用方式 DESCRIPTION 说明 参数的说明 -l 参数字符的解释 文件权限的解释 FILES 文件夹 实战演练 ls 命令 ls -l 命令 l ...