1. ansible是做什么的
ansible是自动化运维工具,利用ansible可以在一台堡垒机上,同时向多个远程机器发送指令、拷贝文件、安装文件、或是修改用户。
如果你的应用有很多实例,原本要上一台一台服务器查看文件或执行命令,现在一条指标就可以,执行结果在本地堡垒机就可以看到。


2. ansible如何通过压缩包安装
ansible官方介绍的安装方法有很多种,基本都需要联网安装,便这个链接中也提到了使用压缩包通过本地的powershell安装,不过没讲得很具体。不过他里面提供了压缩包文件。下面具体讲下安装:

tar -xvf ansible-2.1.0.0.tar.gz
cd ansible-2.1.0.0
python setup.py install

ps: 安装过程中,会需要访问一些系统目录,我们需要有相应的权限,比如/etc/ansible 及/usr/local/python27/lib/python2.7/site-packages/easy-install.pth



3. ansible使用前的配置


ansible主要有两个配置文件需要我们设置:ansible.cfg和hosts,默认位置是/ect/ansible, 实际安装时候发现机器有已经有人已经安装过了,但没有ansible.cfg在/ect/ansible这个目录下,光有hosts文件。直接开始使用自己装的ansible时,使用的是他已存在的hosts文件,为了不影响别人使用。需要重新配置。


事实上ansible.cfg配置文件的读取顺序为:


(1) 从环境变量ANSIBLE_CONFIG中查找


(2)从当前(执行ansible命令的)目录下查找


(3)查找~/.ansible.cfg


(4)最后是/ect/ansible目录下查找


配置了ansible.cfg后,我们可以修改里面的配置来指标hosts文件的位置(inventory=这个配置项),这里面还有几个重要配置可能需要修改:


remote_user= (一般我们运营用serviceop用户)


scp_if_ssh=


配置了hosts文件的位置,我们开始配置hosts内容:


我自己的内容如下:


[saas]
30.17.XXX.XX
30.17.XXX.XX

[papc-gs]
30.17.104.XX
30.17.104.XX
30.17.105.XX

可以将远程的机器列表进行分组,比如上面按系统分了两个组saas及papc-gs-dmz。



4. ansible使用


我自己的机器运行示例:


[serviceop@cnsz040095 bin]$ ./ansible saas -m command -a "ls"
30.17.XXX.XX | SUCCESS | rc=0 >>
id_rsa.pub
Macchiato
Macchiato.tar.gz

30.17.XXX.XX | SUCCESS | rc=0 >>
id_rsa.pub
Macchiato
Macchiato.tar.gz

5. 其它使用示例

ansible <pattern_hosts> -m <module_name> -a <arguments>
1.远程命令模块
command      //远程执行shell命令
scripts           //scp + shell
shell             //执行远程主机的shell脚本
eg:
ansible saas -m command -a "ls"
2.copy模块
ansible papc-gs-dmz -m copy -a "src=  dest=  owner=  group= mode= "
3.stat模块
4.get_url
5.yum模块
ansible papc-gs-dmz -m yum -a "name=    state= "
ansible papc-gs-dmz -m apt -a "name=    state= "
6.cron
ansible papc-gs-dmz -m cron -a "name='check dirs' hour='5.2'  job='ls -alh > /dev/null'"
7.mount
ansible papc-gs-dmz -m mount -a "name=/mnt src=/dev/sdb fstype=ext4 opts=ro state=present"
8.service
ansible papc-gs-dmz -m service -a "name=httpd state=stopped"
9.sysctl
10.user
ansible papc-gs-dmz -m user -a "name=dayuan comment='dayuanhello'"            //添加用户
ansible papc-gs-dmz -m user -a "name=dayuan state=absent removes=yes"       //删除用户