抽空研究下自动运维神器 ,ansible ,基于SSH的管理,不需要agent
- 核心:ansible
- 核心模块(Core Modules):这些都是ansible自带的模块?
- 扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
- 插件(Plugins):完成模块功能的补充
- 剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
- 连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
- 主机群(Host Inventory):定义ansible管理的主机
原理图
安装完ansible后,发现ansible一共为我们提供了七个指令:ansible、ansible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault 。这里我们只查看usage部分,详细部分可以通过 “指令 -h” 的方式获取。
实验机的centos python有些问题,即便是更新了EPEL 用的还是2.4.0的,用github的30M一直下不来,换成ubuntu继续试验,不过实验结束之后发现centos yum不支持python 2.7 而ansible又需要这个库,所以免费的软件后期维护成本比较大
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
ansible all -m shell -a "hostname" --ask-pass -i /etc/ansible/hosts
新的2台服务器没有key
第一次链接的时候会提示
ubuntu 的编辑器有些怪,让我先修一下
sudo apt-get remove vim-common sudo apt-get install vim
sudo vi /etc/ansible/ansible.cfg
#ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no
sudo vi /etc/ansible/ansible.cfg
host key 检查改为false
居然拒绝了
我先生成个key
ssh-keygen
ssh-copy-id [email protected]
ansible 192.168.209.146 -a ‘uptime‘
可以看到受控机器的启动时间
ansible -m ping all
可以看到2台机器都已经可以ping通了
在/etc/ansible/hosts中把2台服务器合并到一个lab组中
一组相似的 hostname , 可简写如下:
[webservers] www[01:50].example.com
数字的简写模式中,01:50 也可写为 1:50,意义相同.你还可以定义字母范围的简写模式:
[databases] db-[a:f].example.com
ansible lab -m command -a ls
同时可以列目录了
ansible有Patterns的规则
如
ansible <pattern_goes_here> -m <module_name> -a <arguments>
换成命令
ansible webservers -m service -a "name=httpd state=restarted"
可以同时对一个组执行某些服务的启动
具体的看官方文档。。。。
http://docs.ansible.com/ansible/latest/intro_patterns.html
相对来说ansible 管理起来还是比较简单,应用搭建过程不超过6个小时,大部分的维护命令需要写在playbook里面,我就不一一具体介绍了
http://docs.ansible.com/ansible/latest/playbooks.html
原文地址:http://blog.51cto.com/433266/2091386