Ansible - 简介和应用自动化基础实践

installAnsible简介和应用自动化基础实践

一.引入:

1.1  如官方定义,Ansible is The simplest way to automate apps and IT infrastructure.  它的设计灵感来自于作者Michael DeHanan喜欢的一本书《安德的游戏》中的一个通信工具Ansible,这个工具可以远程实时地指挥相距数光年的舰队作战。 由此,我们就可以猜想到作为自动化工具的Ansible功能的特点:远程管理批量的设备以实现应用或IT基础设施自动化。

https://docs.ansible.com/

 

1.2 安装

在CentOS执行如下指令安装最新版本的Ansible

$ sudo yum install epel-release

$ sudo yum install ansible

 

二.简介

2.1 做什么

应用自动化:应用环境安装,应用部署

配置管理:通过inventory管理运维的主机,端口,和组;通过和配置管理数据库的交互实现动态inventory和配置管理数据库更新

Note. 配置管理的活动包括配置项、工作空间管理、版本控制、变更控制、状态报告、配置审计

持续交互:在devops的部署和运维环节帮助实现每个sprint的持续交付

管理批量主机/网络/云:通过相应模块和插件管理远程主机,网络和云上的资源

2.2 特点

Agentless,无需在远程主机安装任何代理

Free and Open Source Software,Ansible是一个很受欢迎的开源项目,github有很多的扩展模块和插件等资源

Extensible,可通过编程接口开发模块和插件

Integrating into Existing DevOps Workflows,可通过获取CMDB的数据动态生成inventory;通过git,subversion获取代码将开发和部署连接起来;通过API扩展开发能调用ansible指令和剧本的服务,结合UI实现应用部署的自动调用和可视化管理.

2.3 如何工作

主要基于SSH登录和操作远程设备,通过ansible指令调用模块和插件批量管理inventory中的主机。

 

三.架构

 

Ansible - 简介和应用自动化基础实践

图 1

3.1 Inventory

Inventory配置了需要使用anshible管理的主机的组和列表,inventory默认存储在/etc/ansible/hosts,如下配置了两个组localhosts和azurehosts,分别增加了两台主机

[localhosts]

host1 ansible_ssh_host = 192.168.0.1

[azurehosts]

host2 ansible_ssh_host = **.**.**.**

 

要确保ansible主机能登录到远程主机,需要再本机生成ssh-key,然后copy到远程主机以实现ssh登录

ssh-keygen

#需提供登录用户的密码

ssh-copy-id -i .ssh/id_rsa.pub root@192.168.153.129

#测试登录

ssh root@192.168.153.129

 

3.2 Modules

Ansible基于对具体功能的模块的调用来对远程设备进行操作,如下指令,Ansible调用ping模块去检查和远程所有主机的连接状况

$ ansible -m ping all

常用模块可分为以下几类

3.2.1 System

file: 操作系统级别模块, 文件传输,拷贝,删除

yum: 安装,管理软件

command:向远程主机发送linux命令,

shell: 执行批量指令

 

3.2.2 Third party(Cloud)

第三方平台,如azure系列模块

azure_rm_deployment: 部署虚拟机

azure_rm_machines: 管理(开机,关机,检查状态 )azure虚拟机

 

3.2.3 Virtualazation

docker: 用于管理docker

 

3.2.4 Networking

通过调用网络层管理软件的指令,实现网络基本配置(IP,SubNet,Port),网络互连等

bigip_command(F5),bigip_divice_dns(F5), netconf_config(Netconf)

 

3.2.5 System Application

git,subversion,appache2_module

 

3.3 API(Application Programming Interface)

Ansible使用Python开发,应用程序编程接口支持Python,PHP等语言进行plugin,module的开发,可以开发调用Ansible指令的服务,开发作为模块补充功能(Email,look_up)的plugin。

 

3.4 Plugin

Plugin 是模块功能的补充,模块一遍偏向于公用的系统操作的功能,而Plugin偏向于具体运维业务的功能,如查询,邮件通知等.

 

3.5 Networking

Ansible的管理对象包括大部分的网络节点,Ansible网络层面的模块帮助用户实现网络基础配置,网络互连等自动化管理

 

3.6 CMDB(Configuration Management Database)

Ansible对于远程对象的管理,是基于inventory中的主机和组的配置,inventory我们可以指定特定文件,而不是用默认文件,也可以从配置管理数据库中实时地获取有效的配置更新到ansible主机.

 

3.6 Cloud

Cloud平台如azure可以在azure portal管理云上的服务和虚拟机,Ansible通过azure系列模块,便可方便的管理虚拟机,服务,接口等.

https://docs.ansible.com/ansible/guide_azure.html

 

3.7 Playbooks

我们可以执行一条ad-hoc的ansible指令完成一个操作,如下,向azurehosts这个组的主机复制了一个文件夹.

ansible azurehosts -m copy -a "src=http://www.likecs.com/etc/hosts dest=http://www.likecs.com/tmp/hosts"

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssfjs.html