ansible生产常用十大模块总结
注:-a参数后的命令用单引号,单引号,单引号;双引号有可能会出问题,特别是在user模块;
模块一:测试目标主机是否在线:ping模块
主机如果在线,则回复pong
测试主机是否在线[root@localhost~]#ansibleerp-mping192.168.10.6|SUCCESS= { changed :false, ping : pong 192.168.10.7|SUCCESS= { changed :false, ping : pong }
模块二:command模块和shell
作用:用于在各被管理节点运行指定的命令
shell和command的区别:shell模块可以特殊字符,而command是不支持
显示各节点的日期[root@localhost~]#ansibleerp-mcommand-a date 192.168.10.6|SUCCESS|rc=0 TueFeb709:20:35CST2017192.168.10.7|SUCCESS|rc=0 TueFeb709:20:35CST2017删除各节点的/tmp/test目录[root@localhost~]#ansibleerp-mcommand-a mkdir/tmp/test 192.168.10.10|SUCCESS|rc=0 [root@localhost~]#ansibleerp-mshell-a rm-rf/tmp/test 192.168.10.6|SUCCESS|rc=0 192.168.10.10|SUCCESS|rc=0
模块三:user模块:管理用户的模块
模块参数详解:
name:指定用户名
password:设定用户密码,password参数需要接受md5加密后的值
state:用户状态,默认为present
present:表示添加用户
absent:表示删除用户
update_password:修改用户密码
always:新密码和旧密码不同时进行修改
on_create:为新创建的用户指定密码
createhome:创建家目录
yes:默认项,即创建用户默认是有家目录的
no:创建用户时不创建家目录
remove:
yes:删除用户家目录,需要指定此参数
no:默认项,删除用户时默认不删除用户的家目录
system:
yes:默认创建为普通用户,而非系统用户
如果不指定默认生成的选项有:
home:创建家目录
shell:创建默认的shell为/bin/bash
system:默认创建为普通用户,而非系统用户,指定是用yes
查看帮助[root@localhost~]#ansible-doc-suseruser模块中的password是需要经过md5加密的[root@localhost~]#echo123456|opensslpasswd-1-stdin$1$Q0WiDLXN$agpzPdHVa6.LbdMLsUXqI/增加一个用户[root@localhost~]#ansibleerp-muser-a name=liuwei1system=yespassword=$1$Q0WiDLXN$agpzPdHVa6.LbdMLsUXqI/state=present 192.168.10.10|SUCCESS= { changed :true, comment : , createhome :true, group :496, home : /home/liuwei1 , name : liuwei1 , password : NOT_LOGGING_PASSWORD , shell : /bin/bash , state : present , system :true, uid :496192.168.10.6|SUCCESS= { changed :true, comment : , createhome :true, group :496, home : /home/liuwei1 , name : liuwei1 , password : NOT_LOGGING_PASSWORD , shell : /bin/bash , state : present , system :true, uid :496删除一个用户[root@localhost~]#ansibleerp-muser-a name=liuweiremove=yesstate=absent 192.168.10.10|SUCCESS= { changed :true, force :false, name : liuwei , remove :true, state : absent 192.168.10.6|SUCCESS= { changed :true, force :false, name : liuwei , remove :true, state : absent 更新用户的密码[root@localhost~]#echo654321|opensslpasswd-1-stdin$1$pfBO1D1D$UfxpHN4OlUbT8dWLe8te7.[root@localhost~]#ansibleerp-muser-a name=liuwei1update_password=alwayspassword=$1$pfBO1D1D$UfxpHN4OlUbT8dWLe8te7. 192.168.10.10|SUCCESS= { append :false, changed :true, comment : , group :496, home : /home/liuwei1 , move_home :false, name : liuwei1 , password : NOT_LOGGING_PASSWORD , shell : /bin/bash , state : present , uid :496192.168.10.6|SUCCESS= { append :false, changed :true, comment : , group :496, home : /home/liuwei1 , move_home :false, name : liuwei1 , password : NOT_LOGGING_PASSWORD , shell : /bin/bash , state : present , uid :496}
模块四:任务计划模块:cron
获取帮助:ansibe-doc -s cron
模块参数详解:
state:
present:创建任务
absent:删除任务
backup:对远程主机上的原任务计划内容修改之前做备份
job:要执行的任务
name:该任务的描述(必须项)
user:以哪个用户的身份运行
minute:分钟(0-59,*,*/2,……),不写默认为*
hour:小时(0-23,*,*/2,……),不写默认为*
day:日(1-31,*,*/2,……),不写默认为*
month:月(1-12,*,*/2,……),不写默认为*
weekday:周(0-7,*,……),不写默认为*
每隔10分钟同步一下时间[root@localhost~]#ansibleweb-mcron-a name= synctimefromntpserver minute=*/10job= /usr/sbin/ntpdate3.cn.pool.ntp.org
模块五:远程复制备份模块:copy
获取帮助:ansible-doc -s copy
模块参数详解:
src:指定源文件路径,可以是相对路径,也可以是绝对路径,可以是目录(并非是必须的,可以使用content,直接生成文件内容)
dest=:指定目标文件路径,只能是绝对路径,如果src是目录,此项必须是目录
owner:指定属主
group:指定属组
mode:指定权限,可以以数字指定比如0644
content:代替src,直接往dest文件中写内容,可以引用变量,也可以直接使用inventory中的主机变量
backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no
force:
yes:默认项,如果目标主机包含该文件,但内容不同,则强制覆盖
no:则只有当目标主机的目标位置不存在该文件时,才复制
directory_mode:递归的设定目录的权限,默认为系统默认权限
复制本地文件到远程主机并对原文件进行备份[root@localhosttmp]#ansibleerp-mcopy-a src=/tmp/abc.txtdest=/tmp/backup=yes 192.168.10.10|SUCCESS= { backup_file : /tmp/abc.txt.2017-02-07@10:55:31~ , changed :true, checksum : 13520f9e1a6f0b2ca9557d85825616c3680b4edc , dest : /tmp/abc.txt , gid :0, group : root , md5sum : baae19d280afe4e2df1799daa37bebba , mode : 0644 , owner : root , size :18, src : /root/.ansible/tmp/ansible-tmp-1486436129.98-98537282809491/source , state : file , uid :0192.168.10.6|SUCCESS= { backup_file : /tmp/abc.txt.2017-02-07@10:55:31~ , changed :true, checksum : 13520f9e1a6f0b2ca9557d85825616c3680b4edc , dest : /tmp/abc.txt , gid :0, group : root , md5sum : baae19d280afe4e2df1799daa37bebba , mode : 0644 , owner : root , size :18, src : /root/.ansible/tmp/ansible-tmp-1486436130.19-187127825454744/source , state : file , uid :0向远程主机的文件中写内容,会把原内容覆盖掉[root@localhosttmp]#ansibleerp-mcopy-a content= \nMyageis26 dest=/tmp/abc.txt 192.168.10.6|SUCCESS= { changed :true, checksum : e1cbbec8927a295a767fa44e91dea6eeafa5a4f4 , dest : /tmp/abc.txt , gid :0, group : root , md5sum : 55ec30ce5102aa8716b75ab5e98163a7 , mode : 0644 , owner : root , size :13, src : /root/.ansible/tmp/ansible-tmp-1486436336.05-254449966786008/source , state : file , uid :0192.168.10.10|SUCCESS= { changed :true, checksum : e1cbbec8927a295a767fa44e91dea6eeafa5a4f4 , dest : /tmp/abc.txt , gid :0, group : root , md5sum : 55ec30ce5102aa8716b75ab5e98163a7 , mode : 0644 , owner : root , size :13, src : /root/.ansible/tmp/ansible-tmp-1486436348.0-188270058505341/source , state : file , uid :0}
模块六:对远程文件管理的模块:file
获取帮助:ansible-doc -s file
模块参数详解:
owner:修改属主
group:修改属组
mode:修改权限
path=:要修改文件的路径
recurse:递归的设置文件的属性,只对目录有效
yes:表示使用递归设置
state:
touch:创建一个新的空文件
directory:创建一个新的目录,当目录存在时不会进行修改
link:创建软连接,结果src一起使用此选项才生效
hard:创建硬连接
absent:删除文件,目录,软连接
src:当state=link时,要被连接文件的源路径
新建一个文件[root@localhosttmp]#ansibleerp-mfile-a path=/tmp/liuwei.txtstate=touch 192.168.10.10|SUCCESS= { changed :true, dest : /tmp/liuwei.txt , gid :0, group : root , mode : 0644 , owner : root , size :0, state : file , uid :0192.168.10.6|SUCCESS= { changed :true, dest : /tmp/liuwei.txt , gid :0, group : root , mode : 0644 , owner : root , size :0, state : file , uid :0新建一个目录[root@localhosttmp]#ansibleerp-mfile-a path=/tmp/liuweistate=directory 192.168.10.10|SUCCESS= { changed :true, gid :0, group : root , mode : 0755 , owner : root , path : /tmp/liuwei , size :4096, state : directory , uid :0192.168.10.6|SUCCESS= { changed :true, gid :0, group : root , mode : 0755 , owner : root , path : /tmp/liuwei , size :4096, state : directory , uid :0删除文件或者目录[root@localhosttmp]#ansibleerp-mfile-a path=/tmp/liuwei.txtstate=absent 192.168.10.10|SUCCESS= { changed :true, path : /tmp/liuwei.txt , state : absent 192.168.10.6|SUCCESS= { changed :true, path : /tmp/liuwei.txt , state : absent 递归设置文件的属主或者属组[root@localhosttmp]#ansibleerp-mfile-a path=/tmp/liuweiowner=rootgroup=rootrecurse=yes 192.168.10.10|SUCCESS= { changed :true, gid :0, group : root , mode : 0755 , owner : root , path : /tmp/liuwei , size :4096, state : directory , uid :0192.168.10.6|SUCCESS= { changed :true, gid :0, group : root , mode : 0755 , owner : root , path : /tmp/liuwei , size :4096, state : directory , uid :0为文件设置软连接[root@localhosttmp]#ansibleerp-mfile-a src=/tmp/liuweistate=linkpath=/tmp/liuzhengwei 192.168.10.6|SUCCESS= { changed :true, dest : /tmp/liuzhengwei , gid :0, group : root , mode : 0777 , owner : root , size :11, src : /tmp/liuwei , state : link , uid :0192.168.10.10|SUCCESS= { changed :true, dest : /tmp/liuzhengwei , gid :0, group : root , mode : 0777 , owner : root , size :11, src : /tmp/liuwei , state : link , uid :0}
模块七:在远程主机执行本地脚本:script
[root@localhosttmp]#ansibleerp-mscript-a /tmp/a.sh 192.168.10.10|SUCCESS= { changed :true, rc :0, stderr : , stdout : TueFeb711:26:41CST2017\r\n , stdout_lines :[ TueFeb711:26:41CST2017 ]192.168.10.6|SUCCESS= { changed :true, rc :0, stderr : , stdout : TueFeb711:26:52CST2017\r\n , stdout_lines :[ TueFeb711:26:52CST2017 ]}
模块八:收集远程主机的信息:setup
收集可用的facts,收集每个节点的相关信息:架构信息,IP,时间,域名,网卡,MAC,主机名,CPU等信息。
这些收集的信息,可以作为变量。
[root@localhosttmp]#ansibleerp-msetup
模块九:安装模块:yum
模块参数详解:
name:表示要安装软件包的名字,默认最新的程序包,指明要安装的程序包,可以带上版本号
state:表示是安装还卸载
present:默认的,表示为安装
lastest:安装为最新的版本
absent:表示删除
模块十:服务模块:service
模块参数详解:
enabled:表示设置服务开机是否启动,取值为true或者false;enabled=yes
name=:表示要控制哪一个服务
state:
started:表示现在就启动此服务
stopped:表示现在关闭此服务
restarted:表示重启此服务
sleep:如果执行了restarted,在stop和start之间沉睡几秒
runlevel:定义在哪些级别可以自启动
arguments:表示向命令行传递的参数
[root@localhosttmp]#ansibleerp-mservice-a enabled=onname=httpdstate=started
模块十一:文件编辑模块:lineinfile
模块参数详解:
path:指定要修改的配置文件
regexp:匹配要修改的内容
line:要增加或者修改的内容
state:
absent:表示删除,当匹配到时进行删除
present:表示增加,当匹配到时进行修改,当没有匹配到时在最后增加一行,默认为此项
backrefs:
no:表示如果没有匹配到,则增加line;如果匹配成功,则替换line;
yes:表示如果没有匹配到,则不变line;如果匹配成功,则替换line;
backup:
no:表示如果没有匹配到,则增加line;如果匹配成功,则替换line;不备份原文件
yes:表示如果没有匹配到,则增加line;如果匹配成功,则替换line;备份原文件
insertafter:
在匹配到的行之后添加一行
insertbefore:
在匹配到的行之前添加一行
修改nginx.conf测试:[root@nfs-serverplaybook]#catmodify_nginx.yml-hosts:192.168.2.111tasks:-name: 修改配置文件 lineinfile:dest: /etc/nginx/conf.d/default.conf regexp: listen80; line: listen8000; #backup:yesbackrefs:yesnotify:-reloadnginxhandlers:-name:reloadnginxservice:name=nginxstate=reloaded
注:经测试,当不添加backerfs: yes参数时,匹配到后也会进行替换,但当匹配到的内容不存在时,会在最后增加一行;所以当不增加backerfs参数时,要确定匹配到的内容存在;
替换存在的行:
#ansibleoms-mlineinfile-a path=/etc/sudoersregexp= SYSTEM,SOFTWARE line= STAPLES_ADMINALL=(ROOT)NOPASSWD:NETWORKING,LOCATE,STORAGE,DELEGATING,DRIVERS,SYSTEM,SOFTWARE,SERVICES,PROCESSES,FILE backrefs=no
匹配到的行后增加一行:
#ansibleoms-mlineinfile-a dest=/etc/sudoersinsertafter= Cmnd_AliasSYSTEM=/usr/sbin/reboot,/usr/sbin/halt,/usr/bin/ansible,/usr/bin/ssh line= Cmnd_AliasFILE=/bin/mkdir,/bin/touch,/usr/bin/vim
删除匹配到的行:
#ansibleoms-mlineinfile-a path=/etc/sudoersstate=absentregexp= PROCESSES,FILE
但我想说,我做了一个善良的平凡女子,并且一直在爱,