文章目录

  • ansible自动化运维的特点、基础架构、环境部署与基本语法
  • 1.背景
  • 2.自动化运维平台
  • 3.ansible的特点
  • 4.ansible的基础架构
  • 5.环境部署
  • 6.基本语法


ansible自动化运维的特点、基础架构、环境部署与基本语法

1.背景

随着国家不断大力推广科技事业,信息化企业不仅仅重视自动产品的研发,同样开始重视产品后期的运行维护操作,自动化运维的概念在当前社会进步的过程中诞生了。自动化运维就是利用运维工具来代替传统的运维人员手工操作的模式,更加智能高效的进行日常维护工作。自动化运维工具可以是运维人员从简单而重复的工作中解脱出来,专注于故障处理和自身能力的提升。

2.自动化运维平台

本文介绍的是基于python实现的ansible自动化运维管理工具,由Paramiko和PyYAML两个关键模块构建,可用于实现自动化部署应用、配置、排版task(持续交付,无宕机更新等)。ansible操作简单,学习曲线平滑,是一个适合新手学习的自动化运维工具。

3.ansible的特点

3.1去中心化,可同时执行多台机器

3.2上手简单,学习曲线平滑

3.3安全,无需安装客户端,基于ssh通信,进行密钥认证后直接进行无交互式操作

3.4配置简单,功能强大,扩展性强

3.5支持APL及自定义模块,可通过Python轻松扩展

3.6通过Playbooks来定制强大的配置,状态管理

3.7幂等性,即使一次性操作重复多次,结果也相同

4.ansible的基础架构

4.1Ansible:ansible的核心程序

4.2Host Inventory:主机库存,记录了每一个由ansible管理的主机信息,包括主机地址,ssh端口。账号密码等。可通过file加载,也可用过CMDB加载。

4.3Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,剧本用来定义哪些主机需要调用哪些模块来完成的功能

4.4Core Models:自定义模块,ansibl执行任何管理任务都不是由ansible自己完成的,而是由核心模块完成;ansible管理主机前,先调用core modules中的模块,然后申明管理的Host Inventory中的主机,就可以完成管理主机

4.5Connect Plugins:连接插件,通过Paramkio模块,提供主机ssh连接,实现Ansible和Host通信

下面通过实战来更加形象地描述自动化运维的过程。

5.环境部署

首先需进行环境部署,这里需要准备两台虚拟机(管理节点与被管理节点),这里管理节点我选用centos7,被管理节点选用centos6(也可以克隆多一台centos7),当然,管理节点可有多台,这里先以一台为例进行实战。

5.1为了使过程更加直观,我们将两台虚拟机分别更改主机名,管理节点改为ansible_manager,被管理节点改为ansible_nodel。具体操作命令为

[root@localhost ~]# hostnamectl set-hostname ansible_manager   #centos7
[root@localhost ~]# hostname ansible_nodel   #centos6

注意,这里只是临时改名,永久改名需要到配置文件进行更改。

5.2在管理节点安装ansible

[root@ansible_manager ~]# -y install ansible

5.3为了方便后面管理节点对被管理节点进行无交互式操作,需在此进行密钥认证,密钥认证只需在管理节点进行操作

生成密钥

[root@ansible_manager ~]# ssh-keygen

过程会出现密钥文件保存路径与输入密码,这里直接回车,设置为默认值即可

将密钥分发给被管理节点

[root@ansible_manager ~]# ssh-copy-id root@192.168.40.138  #被管理节点IP地址

密钥分给被管理节点时需要输入被管理节点登陆密码,以保证登陆的安全性

5.4在管理节点的配置文件中的主机&主机组定义文件中添加被管理节点IP。若同时管理多个主机,可以对他们进行一定的分组,在后面的自动化部署可省去一些繁琐的操作

[root@ansible_manager ~]# vim /etc/ansible/hosts

 
 44 [ansible_test]
 45 192.168.40.138

到此位置,环境部署工作便完成了,可使用ping模块来测试被管理主机存活

[root@ansible_manager ~]# ansible 192.168.40.138 -m ping
192.168.40.138 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

结果如上即为环境部署成功

6.基本语法

可以使用ansible-doc查看模块用法,ansible的语法为:

ansible [主机IP或主机组名称] COMMAND ——执行单项任务

为了执行多项任务,一般先将任务以yaml格式写成playbook,再进行执行:

ansible-playbook*.yml ——执行剧本

谢谢你的浏览!