Ansible入门
Posted python运维技术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible入门相关的知识,希望对你有一定的参考价值。
现在做运维的估计都对ansible不陌生了,如果还没有使用过的,我建议尽快尝试下这个技术,入门非常简单,一旦你运用熟练,将大大减轻运维工作的压力,ansible只需要在主控端安装,客户端无需做任何操作即可对被控端进行批量操作,这也是相对于saltstack的一个优点,saltstack除了在主控端安装外,客户机要安装客户端,其它不多说了,如果有兴趣的可以百度,这种文章已经满大街都是了,回到正题,今天这篇我们还是主要来介绍介绍ansible如果在运维中的应用,本来我刚开始打算用一篇来完成对ansible的介绍,在实际写的过程中才发现,如果只用一篇来写,那篇幅就会非非常的长,为了让大家阅读起来不那么痛苦,我最后决定分三篇来写完,三篇分别介绍ansible的常用模块,然后讲解playbook配置,最后介绍ansible的api,这篇是开头篇,所以暂不涉及python的编码工作,学习起来也比较轻松,废话不多说了,我们接下来开始我们的正题:
首先,我们安装ansible
#yum install ansible
然后输入个Y,就完成了,就是这么简单。
安装完,我们说下基本的配置,运行命令:
#cd /etc/ansible/
#ll
总用量 20
-rw-r--r-- 1 root root 8625 10月 11 02:41 ansible.cfg
-rw-r--r-- 1 root root 979 3月 1 23:13 hosts
drwxr-xr-x 2 root root 4096 10月 11 02:41 roles
我们看到有2个文件和1个目录,,其它先不用管,我们先只看hosts文件,用vi打开,除[webservers],[dbservers]这两行外,其它全部注释掉,这二行的作用的定义主机组,主机组名下可以写成员主机的IP(或域名),我们可以把的客户机的IP放到[webservers]主机组下,这样,定义主机和组的规则就算完成了,接下来进入我们模块学习部分。
不得不说ansible的模块真是丰富,基本上我们日常运维用到功能全部都有了,运行命令
#ansible-doc -l
可以看到全部的模块名称,对模块的使用还是要看业务场景,比如你如果没有在aws上机器,那么像ec2你也不会用到,所以今天我们就只会对日常运维最常用的模块做说明,剩余的模块可以根据自己的业务用到了,再去学习了解,我们在讲模块前,会先给出每个模块的应用场景,方便大家快速上手使用:
场景1:需要在客户机上执行命令,可以用command模块,命令如下:
#ansible webservers -m command -a 'uptime'
其中webservers是主机组名称,在该主机组名称下的所有主机都会运行uptime命令,-m后是模块名称,-a 后是模块参数,后续命令都基本一个模子,不再赘述。
场景2:需要执行客户机上的脚本,可以用shell模块,命令如下:
#ansible webservers -m shell -a '/root/run.sh'
场景三:脚步在主控端,但需要在客户机上执行,可以用script模块,命令如下:
#ansible webservers -m shell -a '/root/local.sh'
请注意,你主控端/root/下必须有local.sh脚本。
场景四:文件发布,这种需求很多,比如日常的配置文件更新,程序版本发布等,基本都会用到,可以用copy模块:
#ansible webservers -m copy -a 'dest=/root/ src=/root/xl2pdf'
注意我这里xl2pdf是个目录。
场景5:想在客户机上安装软件,可以用yum模块,这个用的还是挺多的,比如用ansible去链接低版本的centos时,就乎出现”ansible requires a json module, none found! “的错误,需要远程机安装samplejson包。
ansible webservers -m raw -a 'yum -y install python-simplejson'
raw是什么鸟?莫急,我们看看帮助文档怎么说:#ansible-doc raw
> RAW
Executes a low-down and dirty SSH command, not going through the
module subsystem............
第一句就说明了问题,raw模块是靠底层ssh的通讯,不依靠python的模块,所以如果碰到低版本的系统,如果command和shell模块无法使用,可以先用这条命令安装完需要的包。
场景6:重启客户机服务,可以用service模块:
#ansible webserves -m service -a "name=vsftpd state=restarted"
对服务操作有started,stopped,restarted,reloaded四个参数。
以上主要的模块就说完了,还有ping模块,setup模块(获取远程主机信息),cron模块等大家可以按以上模块使用的思路去参考运行,不知道怎么使用的,就看看帮助文档,这篇就到这里了,下篇我们开始聊聊如何将这些模块组合起来满足更复杂的业务操作,这就要用到我们的playbook了,先不多说,我们下篇见。
以上是关于Ansible入门的主要内容,如果未能解决你的问题,请参考以下文章