Ansible常用模块应用

系统环境

管理端:外网IP—10.0.0.61 内网IP—172.16.1.61
受控端:外网IP—10.0.0.7 内网IP—172.16.1.7
受控端:外网IP—10.0.0.51 内网IP—172.16.1.51
链接上文:Ansible安装部署

1)command(默认)命令模块

切换至/tmp目录
chdir=/tmp 

若文件不存在,则执行命令A 
creates=文件  命令A

若文件存在,则执行命令B
removes=文件  命令B

如果172.16.1.7这台主机上存在/etc/hosts文件,则执行操作---远程创建/root/1.txt文件
ansible 172.16.1.7 -m command -a "touch /root/1.txt removes=/etc/hosts"

2)copy 将文件从管理端向被控端分发模块

src=被分发的文件
dest=被拷贝到远程主机的目录位置(必须有)
content=文件内容(与src二选一)
force=yes(同名文件默认覆盖)
backup=yes(如果远程主机有同名文件,要备份)
owner=属主(修改属主信息)
group=属组(修改属组信息)
mode=400(修改文件权限为400)

将本地主机的/etc/ansible/hosts文件传输到172.16.1.51的/tmp目录下,如果有重名文件,则强制覆盖。并修改属主和属组为oldboy,文件权限为777。
ansible 172.16.1.51 -m copy -a "src=/etc/ansible/hosts dest=/tmp force=yes owner=oldboy group=oldboy mode=777"

在远程主机172.16.1.7上创建一个/tmp目录下的名为hi.txt的文件,文件内容”HelloWorld"
ansible 172.16.1.7 -m copy -a "content=HelloWorld dest=/tmp/hi.txt"

如果传输的是一个目录,比如 src=/tmp dest=/etc src后面的/tmp表示将整个目录及其子文件一起传输到远程主机
如果是 src=/tmp/ dest=/etc  src后面的/tmp/表示只将目录下的子文件进行传输

3)fetch 将文件从远程主机拉取到本机的模块

命令用法与copy模块相似,注意不要写反即可,此处略。

将IP为172.16.1.7主机上的/root/user.txt文件拉取到本地的目录下,在本地目录下的文件名是172.16.1.7
[root@m01 ansible]# ansible 172.16.1.7 -m fetch -a "src=/tmp/user.txt  dest=/root"
172.16.1.7 | CHANGED => {
    "changed": true, 
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
    "dest": "/root/172.16.1.7/tmp/user.txt", 
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e", 
    "remote_checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
    "remote_md5sum": null
}
[root@m01 ansible]# ll /root/
total 4
drwxr-xr-x  3 root root   17 Aug 12 16:26 172.16.1.7

4)file 设置(远程主机的)文件属性的模块

创建目录
dest=新目录 state=directory

创建普通文件
dest=文件名 state=touch

创建文件软链接
src=源文件 dest=软链接文件 state=link

创建文件硬链接
src=源文件 dest=硬链接文件 state=hard

删除文件或目录
dest=文件(目录)名  state=absent

在51(IP简写)主机上,创建一个/oldboy/oldboy.txt普通文件
ansible 172.16.1.51 -m file -a "dest=/oldboy/oldboy.txt state=touch"

在7主机上,创建一个文件oldboy.txt的软链接文件
ansible 172.16.1.7 -m file -a "src=/oldboy/oldboy.txt dest=/oldboy/oldboy_link.txt state=link"

在7主机上,删除目录/oldboy
ansible 172.16.1.7 -m file -a "dest=/oldboy/  state=absent"

5)yum 安装软件的模块

安装软件
name=软件名  state=installed

卸载软件
name=软件名  state=absent

在51主机上,安装glances软件命令
ansible 172.16.1.51 -m yum -a "name=glances state=installed"	

6)service 管理软件服务启动、运行、开机自启、关闭的模块

启动并开机自启软件服务
name=服务名  state=started  enabled=yes

重启并开机自启软件服务
name=服务名  state=restarted  enabled=yes

关机并取消开机自启服务
name=服务名  state=stopped  enabled=no

在7主机上,启动nfs服务,并设置开机自启动
ansible 172.16.1.7 -m service -a "name=nfs state=started enabled=yes"

7)cron 编辑定时任务的模块

第几分钟,取值范围0-59
minute=分

第几小时,取值范围0-23
hour=时

每月的第几天,取值范围1-31
day=天

每年的第几月,取值范围1-12
month=月

每个礼拜的第几周,取值范围0-6(0是周日)
weekday=name='给该定时任务的注释‘
job='可在Linux命令行中运行的绝对路径格式的命令'

删除由ansible设置好的定时任务(手动crontab -e的无法由此删除)
state=absent

批量注释定时任务
disabled=yes

在51主机上,设置注释为‘time sync’的定时任务,每天凌晨2时自动更新最新同步时间,并取消任何输出信息
ansible 172.16.1.51 -m cron -a "name='time sync' minute=0 hour=2 job='/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1'"

取消之前设置的有注释的定时任务(必须是通过ansible设置的定时任务才能被同样的办法删除)
ansible 172.16.1.7 -m cron -a "name='time sync' state=absent"

8)mount 挂载的模块

src=要挂载的设备或文件
path=指定的挂载点目录
fstype=指定的文件系统类型

立即挂载,且修改/etc/fstab文件,开机自动挂载
state=mounted

不立即挂载,会修改/etc/fstab文件,开机自动挂载
state=present

立即卸载,且删除/etc/fstab文件中的信息,关闭开机自动挂载功能(永久卸载)
state=absent

立即卸载,不删除/etc/fstab文件中的信息(临时卸载)
state=umounted

9)user 创建、删除用户的模块

创建用户
name=用户名
state=present

删除用户
name=用户名
state=absent

uid=数字(指定用户的UID信息)
group=用户组名

如果创建的是虚拟用户,不创建家目录,禁止用户登录
create_home=no
shell=/sbin/nologin
该参数等价于(useradd mysql -M -s /sbin/nologin)
ansible 172.16.1.51 -m user -a "name=mysql create_home=no  shell=/sbin/nologin"

10)shell模块

相较于command模块,它支持管道和重定向

[root@m01 ansible]# ansible web -m shell -a "echo hello world " 
172.16.1.7 | CHANGED | rc=0 >>
hello world
[root@m01 ansible]# ansible web -m shell -a "echo hello world > /root/1.txt" 
172.16.1.7 | CHANGED | rc=0 >>

ps.
1)双引号–对特殊符号进行解析
单引号–所见即所得,不会对特殊符号进行解析

2)ansible剧本编写规范

--两个空格构成一个缩进关系(禁用tab键)
--冒号后用空格和后续内容隔开
--短横线构成列表信息,且每个短横线后要有空格隔开
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值