常用模块详解

模块说明及示例:

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 # 系统上的python
ansible 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(下载模块)

用于将文件或软件从http、https或ftp下载到本地节点上
dest: 指定将文件下载的绝对路径—必须
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模块及语法的更多相关文章

  1. ansible模块

    ansible模块: 模块(Modules),类似于 "任务插件"("task plugins")或"库插件"("library ...

  2. ansible中yaml语法应用

    4.yaml语法应用 ansible的playbook编写是yaml语言编写,掌握yaml语法是编写playbook的必要条件,格式要求和Python相似,具体教程参考如下 yaml语言教程 附上一个 ...

  3. win10的pycharm中安装ansible模块过程

    前面的安装报错信息 ansible模块安装报错:Could not install packages due to an OSError: [Errno 2] No such file or dire ...

  4. ansible笔记(3):ansible模块的基本使用

    ansible笔记():ansible模块的基本使用 在前文的基础上,我们已经知道,当我们使用ansible完成实际任务时,需要依靠ansible的各个模块,比如,我们想要去ping某主机,则需要使用 ...

  5. 第4天:Ansible模块

    Ansible对远程服务器的实际操作实际是通过模块完成的,其工作原理如下: 1)将模块拷贝到远程服务器 2)执行模块定义的操做,完成对服务器的修改 3)在远程服务器中删除模块 需要说明的是,Ansib ...

  6. ansible模块command、shell、raw、script

    简介 环境: ansible端: ip:192.168.100.129 hostname:node1.lansgg.com client端: ip:192.168.100.131 hostname:v ...

  7. ansible模块之yum、pip、service、corn、user、group

    ansible相关模块 yum rpm 和yum 的区别 rpm:全称redhat package manager (红帽包管理器) 不能解决包之间的依赖关系 yum:可以解决依赖关系 yum 源配置 ...

  8. ansible模块之command、shell、script、file、copy、fetch

    前戏 ansible 批量在远程主机上执行命令 openpyxl 操作excel表格 puppet ansible slatstack ansible epel源 第一步: 下载epel源 wget ...

  9. Ansible 模块命令介绍

    copy模块: 目的:把主控端/root目录下的a.sh文件拷贝到到指定节点上 命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/' ...

随机推荐

  1. Shell系列(16)- 环境变量配置文件简介及source命令

    变量类型 用户自定义变量(本地变量) 环境变量 预定义变量 位置参数变量 source命令 [root@localhost ~]# source 配置文件 或 [root@localhost ~]# ...

  2. 使用Jmeter做接口测试(学生信息的6个接口)

    使用Jmeter做接口测试,案例中涉及到接口有:获取学生信息.登录.添加学生信息.学生金币充值.获取所有学生信息.文件上传. 一.获取学生信息(get请求) 服务器名称或IP:输入被请求服务器的名称或 ...

  3. Python语句,表达式的区别?

    参考了网上的文章,说 表达式的结果是值,对象 比如1+2, 是表达式 具体根据运算符不同有算术,逻辑,比较等等类型的表达式 语句是控制程序走向,不产生值 例如if/else等 参考: https:// ...

  4. P4258-[WC2016]挑战NPC【带花树】

    正题 题目链接:https://www.luogu.com.cn/problem/P4258 题目大意 给出\(n\)个球,\(m\)个篮筐,每个球都可以被放入一些特定的篮筐,每个球都要放,要求球的个 ...

  5. 高级测试必备技能,Jenkins

    Jenkins安装 前言 Jenkins是一个广泛用于持续构建的可视化web工具,就是各种项目的的"自动化"编译.打包.分发部署,将以前编译.打包.上传.部署到Tomcat中的过程 ...

  6. 初探计算机网络之HTTPS请求

    ​ HTTPS自诞生以来,我们总是对它充满着很多的疑问,HTTPS到底是啥?HTTPS多出来的S指的是什么?HTTPS安全可靠吗?访问一个HTTPS的网站的流程等等,带着这些疑问,我们一起来揭开HTT ...

  7. List接口常用实现类对比

    相同点 都实现了List接口 储存了有序 可重复的数据 不同点 ArrayList 线程不安全 但是效率高 底层使用 Object[] elementData 实现 LinkedList 底层使用双向 ...

  8. Markdown语法熟悉

    ==(1)标题== # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 ==(2)字体== **加粗** *斜体* ***斜体加粗*** ...

  9. 题解 [AGC017C] Snuke and Spells

    题目传送门 Description 有 \(n\) 个球排在一起,每个球有颜色 \(a_i\),若当前有 \(k\) 个球,则会将所有 \(a_i=k\) 的球删掉.有 \(m\) 次查询,每次将 \ ...

  10. poj1248 (线性筛欧拉函数)(原根)

    强烈鸣谢wddwjlss 题目大意:给出一个奇素数,求出他的原根的个数,多组数据. 这里先介绍一些基本性质 阶 设\((a,m)=1\),满足\(a^r \equiv 1 \pmod m\)的最小正整 ...