Ansible(二)Ansible常用模块举例

文件类型的模块:
(推)复制文件到远程主机上(管理主机 -- 被管理主机上)

dest            --- 指定复制的数据保存的路径信息
src             --- 指定将本地什么数据信息进行复制
mode            --- 在数据被复制之后,修改文件权限属性信息
mode=0644 644
mode=u+x g+x o+x 
owner           --- 设置文件属主信息
group           --- 设置文件属组信息
backup          --- 对文件进行备份
remote_src              --- 指定使用源信息是什么
如果参数设置为no     表示src路径数据信息从管理主机进行获取
如果参数设置为yes    表示src路径数据信息从被管理主机进行获取
content                 --- 批量在远程主机直接创建文件,并在在文件中写入简单的信息
新版ansible可以识别换行符号  \n

例子:
1、基本远程复制操作

ansible test -m copy -a "src=/etc/hosts dest=/tmp/hosts_bak"

2、复制文件,并修改文件权限属性信息(属主 属组 权限)

ansible test -m copy -a "src=/root/test.txt dest=/tmp/test_bak01 mode=0444 owner=user group=group" 

3、开启复制备份功能(自动备份)

ansible test -m copy -a "src=/root/test.txt dest=/tmp/test.txt mode=0644 owner=user group=group backup=yes"

4、复制备份功能(手动备份) , 可以方便的进行还原操作

ansible test -m copy -a "src=/tmp/test.txt dest=/tmp/test.txt_bak mode=0644 owner=user group=group remote_src=yes"

还原操作

ansible test -m copy -a "src=/tmp/test.txt_bak dest=/tmp/test.txt mode=0644 owner=user group=group remote_src=yes"

5、在远程主机创建文件,并生成指定内容信息

ansible test -m copy -a 'content="test123\ntest321\n" dest=/tmp/rsync.password mode=600'

fetch – Fetches a file from remote nodes (拉)
复制文件从远程主机到本地管理主机上

          src   --- 指定将远程主机上的什么数据信息进行拉取
          dest  --- 指定将远程主机上的数据信息拉取保存到本地什么路径中

1、将远程主机数据拉取到管理主机上

ansible 192.168.10.134 -m fetch -a "src=/tmp/test.txt dest=/root/"

file – Sets attributes of files
设置文件属性信息/进行文件 目录 链接文件创建

path     --- 指定要修改属性信息的数据信息
指定要创建数据的路径信息   
参数别名: dest, name
mode     --- 表示修改文件权限信息
owner    --- 修改数据属主信息
group    --- 修改数据属组信息
recurse  --- 实现修改目录权限属性信息时,进行递归修改
state    --- 实现在远程主机上批量创建数据信息
file     --- 默认用于检测文件是否存在
touch    --- 用于创建普通文件
directory    --- 用于创建目录文件
link         --- 创建软链接
hard         --- 创建硬链接
absent       --- 删除数据信息
src          --- 指定创建链接文件的源文件信息

1、修改远程主机文件权限属性信息

ansible test -m file -a "dest=/tmp/hosts_bak mode=0400 owner=user group=group"

2、修改远程主机目录信息进行递归修改

ansible 172.16.1.31 -m file -a "dest=/tmp/test_dir mode=0400 owner=user group=group  recurse=yes"

3、创建空文件 空目录
创建文件:

ansible 192.168.10.134 -m file -a "dest=/tmp/file-01 state=touch"

创建目录:

ansible 192.168.10.134 -m file -a "dest=/tmp/dir-01 state=directory"

4、删除文件:

ansible 192.168.10.134 -m file -a "dest=/tmp/file-01 state=absent"

5、删除目录(默认递归删除)

ansible 192.168.10.134 -m file -a "dest=/tmp/dir-01 state=absent"

yum模块

name    --- 指定下载软件的名称信息
state   --- 指定是否下载 卸载
installed present latest   --- 下载安装
absent removed             --- 软件卸载

1、下载安装软件/卸载软件

ansible 192.168.10.134 -m yum -a  "name=htop state=installed"
ansible 172.168.10.134 -m yum -a  "name=htop state=removed"

service模块

管理服务启动/停止/重启 ; 管理服务是否开机自动运行或关闭
name    --- 定于服务名称
enabled --- 控制服务是否开机自启动
state   --- 服务启动状态
reloaded       平滑重启
restarted      重启
started        启动      
stopped        停止

1、控制管理服务启动

ansible 192.168.10.134 -m service -a "name=nfs state=started"
ansible 192.168.10.134 -m service -a "name=nfs state=stopped"
ansible 192.168.10.134 -m service -a "name=nfs state=started enabled=yes"

cron模块

批量设置定时任务              
时间信息参数:
minute    分 0-59, *, */2
hour      时 0-23, *, */2
day       日 1-31, *, */2
month     月 1-12, *, */2 
weekday   周 0-6 for Sunday-Saturday, *,             
任务信息定义:
job       定义执行的定时任务信息
name      定义定时任务的注释信息, 注释信息相同的定时任务不会重复设置            
扩展参数信息:
state     定义相应定时任务是否删除
absent   表示删除
present  表示创建
disabled  定义相应定时任务是否注释
yes      注释定时任务
no       取消注释

1、每天两点执行一个jio本

ansible 192.168.10.134 -m cron -a "minute=20 hour=*/2 day=* month=* weekday=* job='/bin/sh /server/scripts/test.sh &>/dev/null'"

2、定时任务设置name名称信息效果

ansible 192.168.10.134 -m cron -a "name='test02-cron' minute=20 hour=*/2 day=* month=* weekday=* job='/bin/sh /server/scripts/test.sh &>/dev/null'"

定时任务设置名称效果总结

  1. 没有任务名称 定时任务相同, 会在相应任务上添加名称注释信息
  2. 任务名称相同 定时任务相同, 不会重复创建定时任务
  3. 任务名称相同 定时任务不同, 会对原有名称定时任务进行修改
    3、删除指定定时任务
ansible 192.168.10.134 -m cron -a "name='oldboy02-cron' state=absent"

4、注释指定定时任务

ansible 192.168.10.134 -m cron -a "name='test01-cron' job='/bin/sh /server/scripts/test.sh &>/dev/null' disabled=yes"

mount
控制设备信息进行挂载和卸载

path    --- 定义挂载点信息
src     --- 要被挂载的设备信息
fstype  --- 指定挂载的文件系统类型
state   --- 指定挂载操作方式(挂载 卸载)
mounted(推荐使用自动修改fstab文件信息) present 挂载
unmounted absent(推荐使用自动删除fstab文件信息) 卸载

1、对设备进行挂载和卸载

ansible 192.168.10.134 -m mount -a "src=192.168.10.134:/data path=/mnt fstype=nfs state=mounted"
ansible 172.16.1.31 -m mount -a "path=/mnt state=absent"

例子

利用ansible模块完成nfs服务部署操作

一: 设置主机清单
vim /etc/ansible/hosts
[nfs:children]
nfsserver
nfsclients
    
[nfsserver]
172.16.1.31
[nfsclients]
172.16.1.7

二: 安装软件程序
ansible nfs -m yum -a "name=rpcbind,nfs-utils state=installed"
三: 编辑配置文件
a 在管理机上编辑好nfs配置文件
b 将配置文件传输到相应主机上
ansible nfsserver -m copy -a "src=/etc/ansible/nfs-server/exports dest=/etc/"
四: 创建存储目录. 并进行授权
ansible nfsserver -m file -a "path=/data01 state=directory owner=nfsnobody group=nfsnobody"    
五: 启动服务程序
ansible nfsserver -m service -a "name='rpcbind.socket' name='nfs' state=started enabled=yes"
六: 进行挂载操作
ansible nfsclients -m mount -a "src=172.16.1.31:/data01 path=/mnt fstype=nfs state=mounted" 

补充setup模块查看被管理机系统信息

ansible 192.168.10.134 -m setup

可添加参数进行过滤所需信息

ansible 192.168.10.134 -m setup -a "filter=ansible_all_ipv4_addresses"
ansible_all_ipv4_addresses:仅显示ipv4的信息。
ansible_devices:仅显示磁盘设备信息。
ansible_distribution:显示是什么系统,例:centos,suse等。
ansible_distribution_major_version:显示是系统主版本。
ansible_distribution_version:仅显示系统版本。
ansible_machine:显示系统类型,例:32位,还是64位。
ansible_eth0:仅显示eth0的信息。
ansible_hostname:仅显示主机名。
ansible_kernel:仅显示内核版本。
ansible_lvm:显示lvm相关信息。
ansible_memtotal_mb:显示系统总内存。
ansible_memfree_mb:显示可用系统内存。
ansible_memory_mb:详细显示内存情况。
ansible_swaptotal_mb:显示总的swap内存。
ansible_swapfree_mb:显示swap内存的可用内存。
ansible_mounts:显示系统磁盘挂载情况。
ansible_processor:显示cpu个数(具体显示每个cpu的型号)。
ansible_processor_vcpus:显示cpu个数(只显示总的个数)。

所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!

添加新评论

  公告

我把那梦再给接上,看看后边啥情况。
--- updated on

  关于博主

你有你的诗和远方,我有我的腿和裤裆。没有洁癖的处女座不是一个好的处女座,想在乱世中寻找一个安静的角落静静地做一些分享,不断学习,很喜欢《士兵突击里》的军事、外语双学士,光电硕士,空军少校-吴哲的口头禅:平常心。但在生活中大都做不到......

  近期评论

  分类目录

只有脚踏实地的人,才能够说:路,就在我的脚下。

无论你选择做什么,追求完美的程度决定你成就的高度。

这个世界最脆弱的是生命,身体健康,很重要。

上帝说:你要什么便取什么,但是要付出相当的代价。

现在站在什么地方不重要,重要的是你往什么方向移动。