1、Ansible copy模块 Ansible copy模块主要用于文件或者目录拷贝,支持文件、目录、权限、用户组功能,

src                Ansible端源文件或者目录,空文件夹不拷贝;
content            用来替代src,用于将指定文件的内容,拷贝到远程文件内;
dest                客户端目标目录或者文件,需要绝对路径;
backup            拷贝之前,先备份远程节点上的原始文件;
directory_mode    用于拷贝文件夹,新建的文件会被拷贝,而老旧的不会被拷贝;
follow            支持link文件拷贝;
force            覆盖远程主机不一致的内容;
group            设定远程主机文件夹的组名;
mode            指定远程主机文件及文件及的权限;
owner            设定远程主机文件夹的用户名。

1)Ansible copy模块操作,src表示源文件,dest表示目标目录或者文件,owner指定拥有者

ansible -k all -m copy  -a  'src=if.sh  dest=/tmp/  mode=755  owner=root'

2)Ansible copy模块操作,content文件内容,dest目标文件,owner指定拥有者

ansible -k all -m copy  -a  'content="Hello World"  dest=/tmp/if.sh  mode=755  owner=root'

3)Ansible copy模块操作,content文件内容,dest目标文件,owner指定拥有者,backup=yes开启备份

ansible -k all -m copy  -a  'content="Hello World"  dest=/tmp/jf.sh backup=yes mode=755  owner=root'

2、Ansible yum模块 Ansible yum模块主要用于软件的安装、升级、卸载

conf_file                        设定远程yum执行时所依赖的yum配置文件
disable_gpg_check                安装软件包之前是否坚持gpg  key;
name                        需要安装的软件名称,支持软件组安装;
update_cache                    安装软件前更新缓存;
enablerepo                    指定repo源名称;
skip_broken                      跳过异常软件节点;
state                            软件包状态,包括:installed、present、latest、absent、removed。

1)Ansible yum模块操作,name表示需安装的软件名称,state表示状态,常见state= installed表示安装软件

ansible  all  -k  -m  yum  -a  "name=sysstat,screen  state=installed"

2)Ansible yum模块操作,name表示需安装的软件名称,state表示状态,常见state= absent表示安装软件

ansible  all  -k  -m  yum  -a  "name=sysstat  state=absent"

3)Ansible yum模块操作,name表示需安装的软件名称,state表示状态,常见state= installed,表示安装软件,disable_gpg_check=no不检查key

ansible  192.168.0.112  -k  -m  yum  -a  "name=sysstat,screen  state=installed disable_gpg_check=no"

3、ansible file 模块

Ansible file模块主要用于对文件的创建、删除、修改、权限、属性的维护和管理

src                    Ansible端源文件或者目录;
follow                支持link文件拷贝;
force                覆盖远程主机不一致的内容;
group                设定远程主机文件夹的组名;
mode                指定远程主机文件及文件及的权限;
owner                设定远程主机文件夹的用户名;
path                    目标路径,也可以用dest,name代替;
state                    状态包括:file、link、directory、hard、touch、absent;
attributes                文件或者目录特殊属性。

1)Ansible file模块操作,path表示目录的名称和路径, state=directory表示创建目录

ansible  -k  192.168.* -m  file  -a  "path=/tmp/`date +%F`  state=directory  mode=755"

2)Ansible file模块操作,path表示目录的名称和路径, state=touch表示创建文件

ansible  -k  192.168.* -m  file  -a  "path=/tmp/`date +%F`  state=touch  mode=755"

4、Ansible user模块Ansible user模块主要用于操作系统用户、组、权限、密码等操作

system                          默认创建为普通用户,为yes则创建系统用户;
append                            添加一个新的组;
comment                         新增描述信息;
createhome                         给用户创建家目录;
force                            用于删除强制删除用户;
group                            创建用户主组;
groups                            将用户加入组或者附属组添加;
home                            指定用户的家目录;
name                            表示状态,是否create、remove、modify;
password                            指定用户的密码,此处为加密密码;
remove                            删除用户;
shell                                设置用户的shell登录环境;
uid                                设置用户id;
update_password                     修改用户密码;
state                               用户状态,默认为present表示新建用户

1)Ansible user模块操作,name表示用户名称,home表示其家目录

ansible  all  -m   user   -a   "name=nihao   home=/tmp/"

2)Ansible user模块操作,name表示用户名称,home表示其家目录

ansible  all  -m   user   -a   "name=nihao   home=/tmp/ shell=/sbin/nologin"

3)Ansible user模块操作,name表示用户名称,state=absent表示删除用户

ansible all -m user -a "name=nihao state=absent force=yes"

5、Ansible cron模块主要用于添加、删除、更新操作系统Crontab任务计划

name                          任务计划名称;
cron_file                     替换客户端该用户的任务计划的文件;
minute                        分( 0-59 ,* ,*/2 );
hour                          时( 0-23 ,* ,*/2 );
day                           日( 1-31 ,* ,*/2 );
month                         月( 1-12 ,* ,*/2 );
weekday                       周( 0-61-7 ,* );
job                           任何计划执行的命令,state要等于present;
backup                        是否备份之前的任务计划;
user                          新建任务计划的用户;
state                         指定任务计划present、absent。

1)Ansible cron模块操作,基于cron模块,创建crontab任务计划

ansible    all  -m  cron  -a  "minute=0  hour=0  day=*  month=*  weekday=* name='Ntpdate server for sync time'   job='/usr/sbin/ntpdate 139.224.227.121'"

2)Ansible cron模块操作,基于cron模块,备份crontab任务计划,backup=yes表示开启备份,备份文件存放于客户端/tmp/

ansible    all  -m  cron  -a  "minute=0  hour=0  day=*  month=*  weekday=* name='Ntpdate server for sync time'  backup=yes job='/usr/sbin/ntpdate  pool.ntp.org'"

3)Ansible cron模块操作,基于cron模块,删除crontab任务计划

ansible  -k  all  -m  cron  -a  "name='Ntpdate server for sync time'  state=absent"

6、Ansible synchronize模块主要用于目录、文件同步,基于Rsync命令同步目录,

compress                        开启压缩,默认为开启;
archive                         是否采用归档模式同步,保证源和目标文件属性一致;
checksum                        是否效验;
dirs                            以非递归的方式传输目录;
links                           同步链接文件;
recursive                       是否递归yes/no;
rsync_opts                      使用rsync 的参数;
copy_links                      同步的时候是否复制连接;
delete                          删除源中没有而目标存在的文件;
src                          源目录及文件;
dest                    目标目录及文件;
dest_port                       目标接受的端口;
rsync_path                      服务的路径,指定 rsync 命令来在远程服务器上运行;
rsync_timeout                   指定rsync操作的IP超时时间;
set_remote_user                 设置远程用户名;
--exclude=.log                  忽略同步.log结尾的文件;
mode                        同步的模式,rsync同步的方式PUSH、PULL,默认都是推送push。

1)Ansible synchronize模块操作,src源目录、dest目标目录

ansible  -k  all -m synchronize  -a 'src=/tmp/ dest=/tmp/'

2)Ansible synchronize模块操作,src源目录、dest目标目录、compress=yes开启压缩、delete=yes数据一致、rsync_opts同步参数、--exclude排除文件

ansible  -k  all  -m synchronize  -a 'src=/tmp/ dest=/tmp/ compress=yes delete=yes rsync_opts=--no-motd,--exclude=.txt'

7、nsible shell模块主要用于远程客户端上执行各种Shell命令或者运行脚本,远程执行命令通过/bin/sh环境来执行,支持比command更多的指令

Chdir                    执行命令前,切换到目录;
Creates                    当该文件存在时,则不执行该步骤;
Executable                换用shell环境执行命令;
Free_form                需要执行的脚本;
Removes                    当该文件不存在时,则不执行该步骤;
Warn                    如果在ansible.cfg中存在告警,如果设定了False,不会警告此行。

1)Ansible shell模块操作,-m shell指定模块为shell,远程执行Shell脚本,远程执行脚本也可采用script模块。并把执行结果追加至客户端服务器/tmp/var.log文件

ansible -k all -m shell -a "/bin/sh /tmp/if.sh >>/tmp/var.log"

2)Ansible shell模块操作,远程执行创建目录命令,执行之前切换在/tmp目录,屏蔽警告信息

ansible -k all -m shell -a "mkdir -p `date +%F` chdir=/tmp/ state=directory warn=no"

3)Ansible shell模块操作,-m shell指定模块为shell,远程客户端查看http进程是否启动

ansible all -m shell -a "ps -ef|grep httpd "

4)Ansible shell模块操作,-m shell指定模块为shell,远程客户端查看crontab任务计划

ansible all -m  shell -a "crontab -l "

8、Ansible service模块主要用于远程客户端各种服务管理,包括启动、停止、重启、重新加载等

enabled                是否开启启动服务;
name                服务名称;
runlevel                服务启动级别;
arguments            服务命令行参数传递;
state                    服务操作状态,状态包括started, stopped, restarted, reloaded

1)Ansible service模块操作,远程重启httpd服务

ansible -k all  -m  service  -a  "name=httpd  state=restarted"

2)Ansible service模块操作,远程重启网卡服务,指定参数ens33

ansible  -k   all  -m  service  -a  "name=network   args=ens33  state=restarted"

3)Ansible service模块操作,远程开机启动nfs服务

ansible -k all  -m  service  -a  "name=nfs  enabled=yes  runlevel=3,5"