ansible自动化部署笔记(1)

一、什么是ansible

      ansible是自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。通俗的说就是批量的在远程服务器上执行命令。当然,最主要的是它是基于 paramiko 开发的。这个paramiko是什么呢?它是一个纯Python实现的ssh协议库。因此fabric和ansible还有一个共同点就是不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。

二、ansible的工作机制

 

ansible自动化部署笔记(1)

由上面的图可以看到 Ansible 的组成由 5 个部分组成:

 

  • Ansible :     核心

  • Modules :    包括 Ansible 自带的核心模块及自定义模块

  • Plugins :      完成模块功能的补充,包括连接插件、邮件插件等

  • Playbooks :   剧本;定义 Ansible 多任务配置文件,由Ansible 自动执行

  • Inventory :    定义 Ansible 管理主机的清单

三、安装ansible

环境:rhel7.3

1.安装需要的软件包可以在网上下载

ansible自动化部署笔记(1)

2.安装完成后会在/etc/下生成一个ansible目录,此目录内容如下图所示

ansible自动化部署笔记(1)

其中ansible.cfg是ansible的配置文件

Ansible可同时操作属于一个组的多台主机,组和主机之间的关系通过inventory文件配置,默认文件路径为/etc/ansible/hosts

roles,角色是根据已知的文件结构自动加载某些vars_文件、任务和处理程序的方法。按角色对内容分组还允许与其他用户轻松共享角色。应用场合主要是部署多个服务。

3.简单配置ansible

ansible和各节点需要配置免密登陆,然后配置hosts文件

ansible自动化部署笔记(1)

ansible自动化部署笔记(1)

ansible自动化部署笔记(1)

这里我对server1和server2都做了解析,所以可以直接使用server1,server2

由上图可以看出,ansible初步配置完成

4.ansible的所有模块都可以通过ansible-doc -l查看,共有2080个,每个模块都有其对应的帮助手册,查看帮助手册的命令格式为:ansible-doc  模块名

ansible自动化部署笔记(1)

ansible自动化部署笔记(1)

5.在各个节点(server1、server2)创建用户,并配置/etc/soduers文件

ansible自动化部署笔记(1)

ansible自动化部署笔记(1)

给各个节点创建的用户做免密登陆

ansible自动化部署笔记(1)

测试:使用ansible查看各个节点的主机名

ansible自动化部署笔记(1)

使用ansible给server2部署httpd

第一步:远程安装

ansible自动化部署笔记(1)

第二步:启动http服务

ansible自动化部署笔记(1)

查看server2是否开启httpd

ansible自动化部署笔记(1)

使用ansible给server2添加web测试页

-u表示要使用哪个用户,-b表示拥有root权限,-m表示调用哪个模块,-a表示用此模块执行什么命令

src表示源地址,dest表示目的地址

ansible自动化部署笔记(1)

使用ansible在server2节点上递归创建目录

ansible server2 -u liming -b -m file -a "dest=/tmp/dir1/dir2 state=directory mode=755"

ansible自动化部署笔记(1)

ansible自动化部署笔记(1)

更多模块的使用可以查看帮助手册

使用ansible在server1部署mariadb-server,并创建数据库用户

安装:

ansible自动化部署笔记(1)

启动:

ansible自动化部署笔记(1)

创建数据库用户:

ansible自动化部署笔记(1)

由上图可以看到,缺少MySQL-python模块,所以需要先装这个模块

ansible自动化部署笔记(1)

再次创建数据库用户

ansible自动化部署笔记(1)

测试:

ansible自动化部署笔记(1)