自动化管理软件与Ansible安装
自动化管理软件与Ansible安装
常见的自动化管理软件
常见的自动化管理软件有哪些?
Linux中,常见的配置管理工具有
- puppet
- saltstack
- ansible
Puppet
- puppet是什么
puppet是一种Linux/Unix平台下的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
Puppet是用于大规模集群管理的神器。其本身使用Ruby语言开发,基于C/S架构。在每台机器上部署的客户端每隔一个指定的时间会连接到Master检查资源变化情况,若资源发生变化,将按配置动作进行相应的操作。
- puppet特点
puppet与其他手工操作工具有一个最大的区别是 puppet的配置具有稳定性,因此你可以多次执行puppet,一旦你更新了你的配置文件,puppet就会根据配置文件来更改你的机器配置,通常每30分钟检查一次. puppet会让你的系统状态同配置文件所要求的状态保持一致. 比如你配置文件里面要求ssh服务必须开启. 假如不小心ssh服务被关闭了,那么下一次执行puppet的时候,puppet会发现这个异常,然后会开启 ssh 服务. 以使系统状态和配置文件保持一致.puppet就象一个魔术师,会让你的混乱的系统收敛到puppet配置文件所想要的状态.
- puppet工作流程
puppet既可以在单机上使用,也可以以c/s结构使用.在大规模使用puppet的情况下,通常使用c/s结构.在这种结构中puppet客户端只是指运行puppet的服务器,puppet服务器端是指运行puppetmaster的服务器.
puppet客户端首先会连接到puppet服务器端,并且通过facter工具把客户端的基本配置信息发送给服务器端. 服务器端通过分析客户端的主机名,通过node定义,找到该主机的配置代码,然后编译配置代码,把编译好的配置代码发回客户端,客户端执行代码完成配置.并且把代码执行情况反馈给puppet服务器端.
Saltstack
- 什么是sltstack
SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位。SaltStack提供了一个动态基础设施通信总线用于编排,远程执行、配置管理等等。
-
saltstack特点
- 基于python开发的C/S架构配置管理工具
- 底层使用ZeroMQ消息队列pub/sub方式通信
- 使用SSL证书签发的方式进行认证管理,传输采用AES加密
-
SaltStack有四大功能,分别是:
- 远程执行
- 配置管理/状态管理
- 云管理(cloud)
- 事件驱动SaltStack可以通过远程执行实现批量管理,并且通过描述状态来达到实现某些功能的目的。
-
SaltStack四大运行方式:
- local本地运行
- Master/Minion传统方式
- Syndic分布式
- Salt ssh
Ansible
- 什么是Ansible
Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架。
(1) 连接插件connection plugins:负责和被监控端实现通信;
(2) host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3) 各种模块核心模块、command模块、自定义模块;
(4) 借助于插件完成记录日志邮件等功能;
(5) playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
- Ansible无需代理
Ansible 围绕无代理架构构建。通常而言,Ansible 通过 OpenSSH 或 WinRM 连接它所管理的主机并且运行任务,方法通常是将称为 Ansible 模块的小程序推送至这些主机。这些程序用于将系统置于需要的特定状态。在 Ansible 运行完其任务后,推送的所有模块都会被删除。
Ansible模块官方文档链接:
Index of all Modules — Ansible Documentation
Ansible 不需要批准使用任何特殊代理,然后再部署到受管主机上。由于没有代理,也不需要额外的自定义安全基础架构,
Ansible 具有多个重要的优点:
- 跨平台支持:Ansible 提供Linux、Windows、UNIX和网络设备的无代理支持,适用于物理、虚拟、云和容器环境。
- 人类可读的自动化:Ansible Playbook采用YAML文本文件编写,易于阅读,有助于确保所有人都能理解它们的用途。
- 完美描述应用:可以通过 Ansible Playbook进行每种更改,并描述和记录应用环境的每一个方面。
- 轻松管理版本控制:Ansible Playbook和项目是纯文本。它们可以视作源代码,放在现有版本控制系统中。
- 支持动态清单:可以从外部来源动态更新 Ansible 管理的计算机列表,随时获取所有受管服务器的当前正确列表,不受基础架构或位置的影响。
- 编排可与其他系统轻松集成:能够利用环境中现有的 HP SA、Puppet、Jenkins、红帽卫星和其他系统,并且集成到 Ansible 工作流中。
ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远 程主机通讯的。ansible目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。
安装Ansible
控制节点
Ansible 易于安装。 Ansible 软件只需要安装到要运行它的一个(或多个)控制节点上。由 Ansible管理的主机不需要安装 Ansible。
对控制节点的要求:
- 控制节点应是Linux或UNIX系统。不支持将Windows用作控制节点,但Windows系统可以是受管主机。
- 控制节点需要安装Python3(版本3.5或以上)或Python2(版本2.7或以上)。
如果操作系统是centos8.0,Ansible 2.9可以自动使用 platform-python 软件包,该软件包支持使用Python的系统实用程序。你不需要从 AppStream安装python37或python27软件包。
[root@localhost ~]# yum list installed platform-python
Failed to set locale, defaulting to C.UTF-8
Installed Packages
platform-python.x86_64 3.6.8-47.el8
受管主机
Ansible的一大优点是受管主机不需要安装特殊代理。Ansible控制节点使用标准的网络协议连接受管主机,从而确保系统处于指定的状态。
受管主机可能要满足一些要求,具体取决于控制节点连接它们的方式以及它们要运行的模块。
Linux和UNIX受管主机需要安装有Python2(版本2.6或以上)或Python3(版本3.5或以上),这样才能运行大部分的模块。
对于contos8,可以启用并安装python36应用流(或python27应用流)
yum module install python36
如果受管主机上启用了SELinux,还需要确保安装python3-libselinux软件包,然后才能使用与任何复制、文件或模板功能相关的模块。所以在工作的时候,应当把SELinux功能关闭。
安装Ansible
环境说明
主机名 | IP地址 | 系统 | |
---|---|---|---|
控制节点 | control | 192.168.118.129 | centos8 |
控制节点
#筛选出ansible相关的源并安装
[root@control ~]# dnf list all|grep ansible
Failed to set locale, defaulting to C.UTF-8
ansible-collection-microsoft-sql.noarch 1.2.4-1.el8 appstream
ansible-collection-redhat-rhel_mgmt.noarch 1.1.0-2.el8 appstream
ansible-core.x86_64 2.13.3-1.el8 appstream
ansible-freeipa.noarch 1.8.4-1.el8 appstream
ansible-freeipa-tests.noarch 1.8.4-1.el8 appstream
ansible-pcp.noarch 2.2.5-1.el8 appstream
ansible-test.x86_64 2.13.3-1.el8 appstream
centos-release-ansible-29.noarch 1-2.el8s extras-common
centos-release-ansible-5.noarch 1-1.el8s extras-common
[root@control ~]# dnf -y install centos-release-ansible-29
[root@control ~]# ls /etc/yum.repos.d/
CentOS-SIG-ansible-29.repo CentOS-Stream-Media.repo
CentOS-Stream-AppStream.repo CentOS-Stream-NFV.repo
CentOS-Stream-BaseOS.repo CentOS-Stream-PowerTools.repo
CentOS-Stream-Debuginfo.repo CentOS-Stream-RealTime.repo
CentOS-Stream-Extras-common.repo CentOS-Stream-ResilientStorage.repo
CentOS-Stream-Extras.repo CentOS-Stream-Sources.repo
CentOS-Stream-HighAvailability.repo
#此时有了ansible的包,进行安装
[root@control ~]# dnf -y install ansible
#安装完成后查看版本号
[root@control ~]# ansible --version
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Jun 23 2022, 19:01:59) [GCC 8.5.0 20210514 (Red Hat 8.5.0-13)]
#通过使用setup模块验证localhost上的ansible_python_version
[root@control ~]# ansible -m setup localhost|grep ansible_python_version
"ansible_python_version": "3.6.8",