这一篇博客写的是近几天学到的几个常用的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
推送命令至远程,效率无限提升,对运维要求较高