您的位置:首页 > 其它

Ansible部署及使用

2014-06-12 10:46 423 查看
一.什么是ansible
什么是ansible?官方的title是“Ansibleis Simple IT Automation”―>简单的自动化IT工具。ansible功能:自动化部署APP;自动化管理配置项;自动化的持续交付;自动化的(AWS)云服务管理。其本质就是在一个台或者几台服务器上,批量的执行命令。 fabric和ansible有什么差别呢?简单来说fabric像是一个工具箱,提供了很多好用的工具,用来在Remote执行命令,而ansible则是提供了一套简单的流程,你要按照它的流程来做,就能轻松完成任务。当然,它们之间也是有共同点的――都是基于paramiko 开发的。paramiko是什么呢?它是一个纯Python实现的ssh协议库。因此fabric和ansible还有一个共同点就是不需要在远程主机上安装client/agent,因为它们是基于ssh来和远程主机通讯的。Ansible的执行过程如下图所示,暖色调带便已经模块化。

二.Ansible的安装
配置好yum,直接yum -yinstall ansible即可。

yum -y install ansible
安装完成后会在/etc 下生成两个文件:ansible的配置文件ansible.cfg和定义被管理节点的hosts.

三.Ansible的具体使用
Ansible Server:10.0.0.122
节点信息:
cat /etc/ansible/hosts

10.0.0.128 #nginx01
10.0.0.129 #nginx02
10.0.0.130 #nginx03
建立Server及各节点的信任关系:
ssh-keygen -t rsa -P '' -f .ssh/id_rsa
ssh-copy-id -i .ssh/id_rsa.pub 10.0.0.128--10.0.0.130
ansible命令的用法:
建立完信任关系后,测试下各节点与Server的连通性:
[root@cobbler ~]# ansible all -m ping #all表示所有节点,-m指定模块 默认为command,ping指定动作
10.0.0.129 | success >> {
"changed": false,
"ping": "pong"
}
10.0.0.130 | success >> {
"changed": false,
"ping": "pong"
}
10.0.0.128 | success >> {
"changed": false,
"ping": "pong"
}
ansible批量执行命令示例:

[root@cobbler ~]# ansible all -a 'uptime' #all所有节点, -a用于指定命令,‘uptime’执行的命令,如果命令有参数一定要用引号;ansible默认使用command模块,所以可以不用指定。
10.0.0.130 | success | rc=0 >>
11:31:50 up  2:01,  1 user,  load average: 0.00, 0.00, 0.00
10.0.0.129 | success | rc=0 >>
11:31:50 up  2:02,  1 user,  load average: 0.00, 0.00, 0.00
10.0.0.128 | success | rc=0 >>
11:31:50 up  2:05,  1 user,  load average: 0.00, 0.00, 0.00

[root@cobbler ~]# ansible-doc -l #查看ansible的所有模块
acl                  Sets and retrieves file ACL information.
add_host             add a host (and alternatively a group) to the ansible-playbo
airbrake_deployment  Notify airbrake about app deployments
apt                  Manages apt-packages

[root@cobbler ~]# ansible-doc yum #查看指定模块的文档
> YUM

Installs, upgrade, removes, and lists packages and groups with the
`yum' package manager.

[root@cobbler ~]# ansible all -m yum -a "name=httpd state=present" #用yum模块给各节点安装httpd。name指定安装包名,state指定动作:安装可以用present和latest,卸载使用absent。
10.0.0.128 | success >> {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"httpd-2.2.15-30.el6.centos.x86_64 providing httpd is already installed"
]
}

10.0.0.130 | success >> {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"httpd-2.2.15-30.el6.centos.x86_64 providing httpd is already installed"
]
}

10.0.0.129 | success >> {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"httpd-2.2.15-30.el6.centos.x86_64 providing httpd is already installed"
]
}
ansible执行shell比较麻烦,建议安装ansible-shell

ansible-shell内置的命令主要有四个:
cd : 切换到指定的组/表达式筛选的机器集合上
list: 显示目前的机器集合,list groups 可以列出所有的组(对我们可能没啥用)
serial:运行时的并发度,默认是20
help: 顾名思义,他能生成简单的模块帮助信息,方便即时查询
yum -y install git
git clone https://github.com/dominis/ansible-shell.git yum -y install python-pip
pip install -e ./ansible-shell
[root@cobbler ~]# ansible-shell
Welcome to the ansible-shell.
Type help or ? to list commands.
root@ (0)[s:2]$ cd 10.0.0.128   #cd到指定host。
root@10.0.0.128 (1)[s:2]$ ls    #list出了10.0.0.128这个主机上/root下的文件
=============== 10.0.0.128          ================
anaconda-ks.cfg
install.log
install.log.syslog
nginx-1.4.7
nginx-1.4.7.tar.gz
nginx_install.sh
其他功能还在摸索中,用到后再做补充。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: