Ansible入门:解锁IT自动化的神

在当今的IT自动化领域,Ansible无疑是一个无法被忽视的重要角色。其便利性和高效性受到了广大开发者和系统管理员的一致好评,成为了配置管理和应用部署的首选工具。然而,对于一些初学者来说,Ansible的概念和架构可能会显得有些复杂和难以理解。因此,我打算通过一系列深入解析Ansible的博文,帮助大家更好地理解和使用这一工具。


ansible 简介

ansible 是什么?

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远

程主机通讯的。ansible目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。


ansible 特点

1.部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;

2.默认使用SSH协议对设备进行管理;

3.有大量常规运维操作模块,可实现日常绝大部分操作;

4.配置简单、功能强大、扩展性强;

5.支持API及自定义模块,可通过Python轻松扩展;

6.通过Playbooks来定制强大的配置、状态管理;

7.轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;

8.提供一个功能强大、操作性强的Web管理界面和REST API接口------AWX平台。

上图为ansible的基本架构,从上图可以了解到其由以下部分组成:

核心:ansible

核心模块(Core Modules):这些都是ansible自带的模块

扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块

插件(Plugins):完成模块功能的补充

剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行

连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件

主机群(Host Inventory):定义ansible管理的主机


安装

1、强烈建议使用yum 进行安装,或者装所有服务器配置为同一版本的python以避免因为python版本而导致的错误。

yum install ansible

2、使用pip3 进行安装。最好将所有服务器安装同一版本的python,以避免版本问题。

#yum install sshpass 有时交互输入密码时自动交互使用。

#pip3 install ansible paramiko PyYAML Jinja2


ansible 程序结构

安装目录如下(yum安装):

配置文件目录:/etc/ansible/

执行文件目录:/usr/bin/

Lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/

Help文档目录:/usr/share/doc/ansible-X.X.X/

Man文档目录:/usr/share/man/man1/

ansible配置文件查找顺序

ansible与我们其他的服务在这一点上有很大不同,这里的配置文件查找是从多个地方找的,顺序如下:

1.检查环境变量ANSIBLE_CONFIG指向的路径文件(export ANSIBLE_CONFIG=/etc/ansible.cfg);

2.~/.ansible.cfg,检查当前目录下的ansible.cfg配置文件;

3./etc/ansible/ansible.cfg检查etc目录的配置文件。


ansible配置文件

ansible的配置文件为

/etc/ansible/ansible.cfg,ansible

有许多参数,下面我们列出一些常见的参数:

inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置

library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以

forks = 5 #并发连接数,默认为5

sudo_user = root #设置默认执行命令的用户

remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全

host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例

timeout = 60 #设置SSH连接的超时时间,单位为秒

log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日志)

使用yum进行安装时,产生的配置文件


敬请关注博主,我们将持续为您带来云计算行业及更多前沿技术的最新信息,助您把握技术动态,领先一步!"

网络豆云计算学堂

讲解云计算,运维,linux,AI前沿科技,计算机技术知识,分享优质内容,从入门到精通。

74篇原创内容

公众号

若您渴望深入了解云计算知识,或希望与云计算、运维、网络等领域的精英们共同交流学习,欢迎您私信博主,博主将为您提供宝贵的免费学习资料,并引荐您加入专业交流群。在这里,您可以与各路大咖切磋技艺,共享行业前沿资讯,一同成长进步。期待您的参与,让我们共同开启云计算领域的探索之旅!

相关推荐
fasewer3 分钟前
第五章 linux实战-挖矿 二
linux·运维·服务器
ac-er88885 分钟前
PHP“===”的意义
开发语言·php
wxin_VXbishe16 分钟前
springboot合肥师范学院实习实训管理系统-计算机毕业设计源码31290
java·spring boot·python·spring·servlet·django·php
楚灵魈29 分钟前
[Linux]从零开始的网站搭建教程
linux·运维·服务器
小小不董31 分钟前
《Linux从小白到高手》理论篇:深入理解Linux的网络管理
linux·运维·服务器·数据库·php·dba
豆豆1 小时前
为什么用PageAdmin CMS建设网站?
服务器·开发语言·前端·php·软件构建
这可就有点麻烦了1 小时前
强化学习笔记之【TD3算法】
linux·笔记·算法·机器学习
DY009J1 小时前
深度探索Kali Linux的精髓与实践应用
linux·运维·服务器
程序员-珍2 小时前
虚拟机ip突然看不了了
linux·网络·网络协议·tcp/ip·centos
NiNg_1_2342 小时前
ThinkPHP5基础入门
php