自动化运维工具 Ansible,让你告别996?!
声明式:通过配置信息来明确描述配置对象的状态,并管理这个状态。 抽象化:不需要根据配置对象所在的环境细微差别而分开编写配置信息。 幂等性:无论执行多少次都能得到相同结果的特性。
sudo pip install ansible
ansible --version
一、Ansible基本架构
上图为 Ansible 的基本架构,从上图可以了解到其由以下部分组成:
核心:Ansible Inventory:用于定义 Ansible 进行远程控制的对象服务器列表 Playbooks:提前将构建信息定义在 playbook 中,在执行构建时,通过指定 playbook 文件,可以开始执行一系列操作 Modules:Ansible 的模块化工作方式,通过这些模块实现各种功能 插件(Plugins):完成模块功能的补充
二、Ansible工作原理
以上是从网上找到的两张ansible工作原理图,两张图基本都是在架构图的基本上进行的拓展。从上面的图上可以了解到:
1、管理端支持local 、ssh、zeromq 三种方式连接被管理端,默认使用基于ssh的连接---这部分对应基本架构图中的连接模块;
2、可以按应用类型等方式进行Host Inventory(主机群)分类,管理节点通过各类模块实现相应的操作---单个模块,单条命令的批量执行,我们可以称之为ad-hoc;
3、管理节点可以通过playbooks 实现多个task的集合实现一类功能,如web服务的安装部署、数据库服务器的批量备份等。playbooks我们可以简单的理解为,系统通过组合多条ad-hoc操作的配置文件 。
三、ansible的七个命令
安装完 Ansible后,发现ansible一共为我们提供了七个指令:ansible、ansible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault 。这里我们只查看usage部分,详细部分可以通过 “指令 -h” 的方式获取。
1、ansible
# ansible -hUsage: ansible [options]
# ansible 192.168.0.102 -a 'date'192.168.0.102 | success | rc=0 >>Tue May 12 22:57:24 CST 2015
2、ansible-doc
ansible-doc -h
Usage: ansible-doc [options] [module...]
该指令用于查看模块信息,常用参数有两个-l 和 -s ,具体如下:
列出所有已安装的模块
# ansible-doc -l
查看具体某模块的用法,这里如查看command模块
# ansible-doc -s command
3、ansible-galaxy
ansible-galaxy -h
Usage: ansible-galaxy [init|info|install|list|remove] [--help] [options] ...
[root@localhost ~]# ansible-galaxy install aeriscloud.docker- downloading role 'docker', owned by aeriscloud- downloading role from https://github.com/AerisCloud/ansible-docker/archive/v1.0.0.tar.gz- extracting aeriscloud.docker to /etc/ansible/roles/aeriscloud.docker- aeriscloud.docker was installed successfully
4、ansible-lint
ansible-lint是对playbook的语法进行检查的一个工具。用法是ansible-lint playbook.yml 。
5、ansible-playbook
该指令是使用最多的指令,其通过读取playbook 文件后,执行相应的动作,这个后面会做为一个重点来讲。
6、ansible-pull
7、ansible-vault
ansible-vault主要应用于配置文件中含有敏感信息,又不希望他能被人看到,vault可以帮你加密/解密这个配置文件,属高级用法。
主要对于playbooks里比如涉及到配置密码或其他变量时,可以通过该指令加密,这样我们通过cat看到的会是一个密码串类的文件,编辑的时候需要输入事先设定的密码才能打开。这种playbook文件在执行时,需要加上 --ask-vault-pass
参数,同样需要输入密码后才能正常执行。
ansible 上手虽并不复杂,在日常工作中能大大提升工作效率,是运维日常工作中的好帮手。对于 ansible 的 modules 模块还有很多地方待深入探究,砥砺前行,不负韶华,愿运维在未来之路能走得更远。