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-6 或 1-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"