Ansible概述及安装
概述
Ansible是一个开源配置管理工具,可以使用它来自动化任务,部署应用程序实现IT基础架构。Ansible可以用来自动化日常任务,比如,服务器的初始化配置、安全基线配置、更新和打补丁系统,安装软件包等。Ansible架构相对比较简单,仅需通过SSH连接客户机执行任务
架构图如下:
Ansible使用过程中会用到一些概念术语
Ansible的与节点有关的重要术语包括控制节点,受管节点,清单和主机文件:
控制节点(Control node):指安装了Ansible的主机,也叫Ansible服务器端,管理机。 Ansible控制节点主要用于发布运行任务,执行控制命令。Ansible的程序都安装在控制节点上,控制节点需要安装Python和Ansible所需的各种依赖库。注意:目前Ansible还不能安装在Windows下。
受控节点(Managed nodes):也叫客户机,就是想用Ansible执行任务的客户服务器。
清单(Inventory):受控节点的列表,就是所有要管理的主机列表。
host文件:清单列表通常保存在一个名为host文件中。在host文件中,可以使用IP地址或者主机名来表示具体的管理主机和认证信息,并可以根据主机的用户进行分组。缺省文件:/etc/ansible/hosts,可以通过-i指定自定义的host文件。
模块(Modules):模块是Ansible执行特定任务的代码块。比如:添加用户,上传文件和对客户机执行ping操作等。Ansible现在默认自带450多个模块,,Ansible Galaxy公共存储库则包含大约1600个模块。
任务(Task):是Ansible客户机上执行的操作。可以使用ad-hoc单行命令执行一个任务。
剧本(Playbook):是利用YAML标记语言编写的可重复执行的任务的列表,playbook实现任务的更便捷的读写和贡献。比如,在Github上有大量的Ansible playbooks共享,你要你有一双善于发现的眼睛你就能找到大量的宝藏。
角色(roles):角色是Ansible 1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。
安装
版本选择
可以在github上选择最新得稳定版本
安装前置要求
**管理主机:**需要安装python2.6版本或以上,python3以下(避免兼容问题)
**托管节点(其他主机):**需要具备ssh以及sftp或scp中得一种
安装方式
-
从源码安装
从项目的checkout中可以很容易运行Ansible,Ansible的运行不要求root权限,也不依赖于其他软件,不要求运行后台进程,也不需要设置数据库.因此我们社区的许多用户一直使用Ansible的开发版本,这样可以利用最新的功能特性,也方便对项目做贡献.因为不需要安装任何东西,跟进Ansible的开发版相对于其他开源项目要容易很多
$ git clone git://github.com/ansible/ansible.git --recursive #将项目源码拷到本地主机 $ cd ./ansible $ source ./hacking/env-setup #使用bash安装 ##更新版本方法 ##更新ansible版本时,不只要更新git的源码树,也要更新git中指向Ansible自身模块的 “submodules” (不是同一种模块) $ git pull --rebase $ git submodule update --init --recursive #然后再次运行env-setup脚本启动即可
-
通过yum的方式安装(red-hat类型的linux主机)
可以之间使用yum命令安装(在线方式)
$ sudo yum install ansible
也可以尝试自己创建rpm包(支持离线安装)
##需要先安装rpm-build, make, python2-devel $ git clone git://github.com/ansible/ansible.git $ cd ./ansible $ make rpm $ sudo rpm -Uvh ~/rpmbuild/ansible-*.noarch.rpm
-
通过apt的方式安装(ubuntu)
$ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible $ sudo apt-get update $ sudo apt-get install ansible ##也可从源码checkout中创建 Debian/Ubuntu 软件包,执行: $ make deb
-
通过python的pip进行安装
sudo pip install ansible #需要先安装pip