一丶Ansible简介
Ansible 是一个开源的基于 OpenSSH 的自动化配置管理工具。可以用它来配置系统、部署软件和编排更高级的 IT 任务,比如持续部署或零停机更新。Ansible 的主要目标是简单和易用,并且它还高度关注安全性和可靠性。基于这样的目标,Ansible 适用于开发人员、系统管理员、发布工程师、IT 经理,以及介于两者之间的所有人。Ansible 适合管理几乎所有的环境,从拥有少数实例的小型环境到有数千个实例的企业环境 。使用 Ansible 无须在被管理的机器上安装代理,所以不存在如何升级远程守护进程的问题,也不存在由于卸载了守护进程而无法管理系统的问题。
Ansible 的主要功能
管理员可以通过 Ansible 在成百上千台计算机上同时执行指令(任务)。
对于管理员来说,经常需要执行下面的任务:
- 维护现存的比较复杂的服务器时,手动登录的方式很容易遗漏一些操作,或者是执行一些未预期的操作。
- 手动初始化新的服务器耗时耗力!
Ansible 的一些优势
- 可以逐行的执行 shell 命令。
- 不需要另外的客户端工具(linux 一般会自带 ssh 工具)。
- 相同的配置只被执行一次(多次执行同一配置不会出问题)。
Ansible 的工作方式
使用 Ansible 无须在被管理的客户端电脑上安装代理之类的组件。它通过普通的 SSH 进行通信,以便从远程计算机检索信息、发出命令和复制文件。这是 Ansible 简化服务器管理的一种方式。任何公开 SSH 端口的服务器都可以通过 Ansible 进行配置和管理。
Ansible 采用模块化的设计,所以非常容易扩展到各种特定的使用场景。模块可以用任何语言编写,并使用标准 JSON 进行通信。Ansible 的配置文件是用 YAML 格式编写的,因为它使用起来非常简单,并且与主流的标记语言很相似。除了通过命令行工具 Ansible 还可以通过配置脚本(Playbooks)与客户端交互。
二丶安装 Ansible
使用RPM包制作yum源,安装Ansible需要使用的RPM包如下,放在同一目录下/ansible
ansible-2.4.2.0-2.el7.noarch.rpm python-paramiko-2.1.1-4.el7.noarch.rpm
python2-jmespath-0.9.0-3.el7.noarch.rpm python-passlib-1.6.5-2.el7.noarch.rpm
python-httplib2-0.9.2-1.el7.noarch.rpm sshpass-1.06-2.el7.x86_64.rpm
~]$ createrepo /ansible/
生成repodata目录后就可以配置yum配置文件使用yum安装
~]# vim /etc/yum.repos.d/local.repo
[local]
name=local
baseurl="ftp://192.168.1.254/ansible" //本机IP
enabled=1
gpgcheck=0
~]# yum clean all //清除yum缓存
~]# yum repolist
~]# yum -y install ansible
批量部署证书文件
~]# cd /root/.ssh
~]# ssh-keygen -t rsa -b 2048 -N '' -f key //创建一对密钥
~]# ssh-copy-id -i key.pub 主机名称 //`给所有主机部署密钥
三丶Ansible使
主机定义与分组
自定义的ansible文件只在当前路径生效
~]# vim /etc/ansible/ansible.cfg
inventory = /etc/ansible/hosts //指定 inventory 文件位置
host_key_checking = False
~]# vim /etc/ansible/hosts //定义主机分组
[all:vars] //在 inventory 文件中指定 key 的位置
ansible_ssh_private_key_file="/root/.ssh/key"
web //主机名或者IP地址
模块练习
playbook
如果 Ansible 的功能仅仅是能够执行当个的命令和脚本就显得太弱了。Ansible 的 laybook 功能支持把命令以 yaml 的格式写在配置文件中,然后一次性执行配置文件中的所有命令(这一点类似于 chef 中的 cookbook)。
JSON