一、初识ansible
-
1、ansible是新出现的自动化运维工具
ansible是一个配置管理和应用部署工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric、SaltStack )的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。
-
2、ansible在生产环境当中的应用
- 自动化部署应用
- 自动化管理配置
- 自动化持续交付
- 自动化(aws)云服务器管理
-
3、ansible的优点
- (1).ansible糅合了众多老牌运维工具的优点,基本上pubbet和saltstack能实现的功能全部能实现;
- (2).轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
- (3).ansible是一个工具,ansible不需要启动服务,仅仅只是一个工具,可以轻松的实现分布式扩展;
- (4).批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
- (5).ansible是一致性,高可靠性,安全性设计的轻量级自动化工具;
- (6).使用python编写,维护更简单,ruby语法过于复杂;
-
4、ansible特性
- (1)、no agents:不需要在被管控主机上安装任何客户端;
- (2)、no server:无服务器端,使用时直接运行命令即可;
- (3)、modules in any languages:基于模块工作,可使用任意语言开发模块;
- (4)、yaml,not code:使用yaml语言定制剧本playbook;
- (5)、ssh by default:基于SSH工作;
- (6)、strong multi-tier solution:可实现多级指挥
-
5、ansible的基本架构
- 1.连接插件(connectior plugins) 用于连接主机 用来连接被管理端
- 2.核心模块(core modules) 连接主机实现操作, 它依赖于具体的模块来做具体的事情
- 3.自定义模块(custom modules) 根据自己的需求编写具体的模块
- 4.插件(plugins) 完成模块功能的补充
- 5.playbooks(剧本) ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
- 6.host inventory(主机清单)定义ansible需要操作主机的范围
最重要的一点是 ansible是模块化的 它所有的操作都依赖于模块 - 7.架构图
↓
:
- 8.执行流程
↓
:
二、安装ansible
- 1、安装须知
- ansible只是一个进程:不需要添加数据库也不需要启动和运行守护进程它只是一个进程你可以轻松使用它安装在任何一点主机上面(除了windows)ansible管理机不能安装到windows上面,windows只能被管理。这和saltstack是一样的。
- 版本的选择:因为2.0有非常大的改进 一般都会使用2.0以上的版本
- 控制机的要求:因为ansible是python写的 所以需要在安装了python2.6或者2.7以上的python版本才可以安装
- 管理节点的要求:需要安装ssh python版本在2.5以上
- 2、三种安装方式
-
- yum -y install ansible wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo(下载yum源)
-
- pip install ansible
-
- 从github下载
$ git clone git://github.com/ansible/ansible.git --recursive $ cd ./ansible $ make rpm $ sudo rpm -Uvh ./rpm-build/ansible-*.noarch.rpm
-
- 3、查看版本,证明已经安装成功
还可查看出[root@master ~ 19:14:06]# ansible --version ansible 2.7.5 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
配置文件
所在位置:config file = /etc/ansible/ansible.cfg
三、ansible应用
-
1、任务执行模式
ansible系统由控制主机对被管节点的操作方式有两种:ad_hoc
和playbook
- (1)、ad_hoc单命令模式 可以对多台主机执行单个命令
ansible all -a "/bin/echo hello"
- (2)、playbook通过多个tasks的集合完成一类功能如web的安装部署,数据库服务器的批量备份等
-
2、七个命令
安装完ansible后,ansible一共为我们提供了七个指令:ansible、ansible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault 。这里我们只查看usage部分,详细部分可以通过 “指令 -h” 的方式获取。- (1)、ansible
[root@localhost ~]# ansible -h Usage: ansible <host-pattern> [options]
ansible是指令核心部分,其主要用于执行ad-hoc命令,即单条命令。默认后面需要跟主机和选项部分,默认不指定模块时,使用的是command模块。如:
默认使用的模块是可以在[root@master ~ 18:57:10]# ansible 10.0.0.11 -a 'date' 10.0.0.11 | CHANGED | rc=0 >> Mon Jan 21 21:59:50 EST 2019
ansible.cfg
中进行修改的。ansible命令下的参数
部分解释如下↓
(未完待续):参数:
- (2)、ansible-doc
- (3)、ansible-galaxy
- (4)、ansible-lint
- (5)、ansible-playbook
- (6)、ansible-pull
- (7)、ansible-vault
- (1)、ansible
(未完待续)