这一篇博客写的是近几天学到的几个常用的Ansible模块,这些模块可以满足我们日常的一些运维工作。文中出现的srv代表目标主机清单名称。

1.Command模块是在远程主机执行命令,但有一定的限制。
Command:在远程主机执行命令,默认模块,可忽略-m选项

ansible srv -m command -a ‘service vsftpd start’ 
ansible srv -m command -a ‘echo magedu |passwd --stdin wang’ 不成功
此命令不支持 $VARNAME < > | ; & 等,用shell模块实现

2.Shell模块,此模块可以执行所有的shel命令,建议用Shell模块代替Command模块。
Shell:和command相似,用shell执行命令

ansible srv -m shell -a ‘echo magedu |passwd –stdin wang’ 
调用bash执行命令 类似 cat /tmp/stanley.md | awk -F‘|’ ‘{print $1,$2}’ &> /tmp/example.txt 这些复杂命令,即使使用shell也可能会失败
解决办法:写到脚本里,通过copy到远程主机再执行,再把需要的结果拉回执行命令的机器。

3.Script:运行脚本

-a "/PATH/TO/SCRIPT_FILE“
snsible websrvs -m script -a f1.sh

4.Copy:从服务器复制文件到客户端

ansible srv -m copy -a “src=/root/f1.sh dest=/tmp/f2.sh owner=wang mode=600 backup=yes” 
如目标存在,默认覆盖,此处指定先备份

ansible srv -m copy -a “content=‘test content\n’ dest=/tmp/f1.txt” 
利用内容,直接生成目标文件

5.Fetch:从客户端取文件至服务器端,copy相反,目录可先tar

ansible srv -m fetch -a ‘src=/root/a.sh dest=/data/scripts’ 

6.File:设置文件属性

ansible srv -m file -a "path=/root/a.sh owner=wang mode=755“
ansible web -m file -a ‘src=/app/testfile dest=/app/testfile-link 
state=link’
state= absent 缺席,删除    present 在席

7.Hostname:管理主机名

ansible node1 -m hostname -a “name=websrv” 

8.Cron:计划任务

支持时间:minute,hour,day,month,weekday
ansible srv -m cron -a “minute=*/5 job=‘/usr/sbin/ntpdate
172.16.0.1 &>/dev/null’ name=Synctime” 创建任务
ansible srv -m cron -a ‘state=absent name=Synctime’ 删除任务

9.Yum:管理包

ansible srv -m yum -a ‘name=httpd state=latest’ 安装
ansible srv -m yum -a ‘name=httpd state=absent’ 删除

10.Service:管理服务

ansible srv -m service -a 'name=httpd state=stopped'
ansible srv -m service -a 'name=httpd state=started'
ansible srv –m service –a ‘name=httpd state=reloaded’
ansible srv -m service -a 'name=httpd state=restarted'

11.User:管理用户

ansible srv -m user -a 'name=user1 comment=“test user” uid=2048 home=/app/user1 group=root‘
ansible srv -m user -a 'name=sysuser1 system=yes home=/app/sysuser1 ’
ansible srv -m user -a ‘name=user1 state=absent remove=yes‘ 删除用户及家目录等数据

12.Group:管理组

ansible srv -m group -a "name=testgroup system=yes“
ansible srv -m group -a "name=testgroup state=absent" 

13.ansible-galaxy

连接 https://galaxy.ansible.com 下载相应的roles

列出所有已安装的galaxy

ansible-galaxy list

安装galaxy

ansible-galaxy install geerlingguy.redis

删除galaxy

ansible-galaxy remove geerlingguy.redis

ansible-pull
推送命令至远程,效率无限提升,对运维要求较高