当前位置: 首页 > news >正文

Ansible自动化运维介绍与安装

Ansible 的介绍与安装

一、自动化与 Linux 系统管理(为什么要学习自动化运维)

大多数系统管理和基础架构管理任务依赖于通过图形界面或命令行手动执行。系统管理员通常依赖检查清单、文档或记忆中的流程来执行标准任务,这种方式容易出错,例如遗漏步骤或执行错误操作,并且对执行结果的验证通常有限。

自动化可以有效避免手动管理带来的问题。作为系统管理员,我们可以利用自动化工具确保系统快速、准确地完成部署与配置,自动执行日常重复性任务,从而节省时间,专注于更重要的运维工作。

二、什么是 Ansible?

Ansible 是一款基于 Python 开发的自动化运维工具,集成了众多运维工具的优良特性,支持批量系统配置、程序部署和运行命令等功能。

Ansible 是一个开源的自动化平台,它既是一种简洁的自动化语言,能够通过 Ansible Playbook 清晰描述 IT 应用架构,也是一个运行这些剧本的自动化引擎。其功能强大,可用于应用部署、配置管理、工作流自动化及网络自动化,甚至协调整个应用生命周期。

Ansible 采用无代理架构,通常通过 OpenSSH 或 WinRM 连接被管理主机,并通过推送小型模块程序来执行任务,使系统达到预期状态。任务完成后,这些模块会自动删除。

Ansible 基于 paramiko 开发,以模块化方式工作,本身不具备批量部署能力,实际部署功能由其所运行的模块提供。它无需在远程主机安装客户端(代理),直接通过 SSH 进行通信。目前,Ansible 已被红帽(Red Hat)官方收购。

三、Ansible 的优点

  1. 跨平台支持:支持 Linux、Windows、Unix 及网络设备,无代理管理,适用于物理机、虚拟机、云环境和容器。
  2. 人类可读的自动化:Playbook 采用 YAML 格式编写,易于阅读和理解。
  3. 完美描述应用:可通过 Playbook 完成每一次变更,清晰记录应用环境的各个方面。
  4. 易于版本控制:Playbook 和项目文件为纯文本,可纳入现有版本控制系统(如 Git)进行管理。
  5. 支持动态清单:可从外部来源动态更新管理主机列表,实时获取准确清单,不受基础架构或位置的影响。
  6. 强大的编排与集成能力:可与现有系统(如 HP SA、Puppet、Jenkins、红帽卫星等)轻松集成,并且集成到您的ansible工作中。

四、Ansible 的管理方式

Ansible 是一个模型驱动的配置管理工具,支持多节点发布和远程任务执行。默认使用 SSH 进行远程连接,无需在被管节点安装额外软件,并支持多种编程语言扩展。

Ansible 管理系统由控制主机和一组被管节点组成。控制主机通过 SSH 直接管理被管节点,并通过资源清单(inventory)对主机进行分组管理。

五、Ansible 系统架构

在这里插入图片描述

控制主机通过 Host Inventory(主机清单)识别和管理网络中的主机。

这就需要一个Host Inventory(主机清单),用于记录ansible可以控制网络中的哪些主机。另外,要配置和管理这些主机,可以采用两种方式,一种是单一的命令实现,另外一种也可以使用palybook实现。单一的命令模式是采用不同的模块进行管理,一个模块类似于一些管理的命令,如top,ls,ping等等,适用于临时性的操作任务。如果需要执行一些例行性或经常性的操作,则需要采用playbook的方式,playbook类似于一个脚本,将多个模块按一定的逻辑关系进行组合,然后执行。ansible还支持一些插件,如邮件、日志等,在和远程主机通信时,也会采用类似的连接插件,这里使用则是SSH协议的插件进行通信。
Ansible 的核心组成包括:

  • Core Modules:自带模块
  • Custom Modules:用户自定义扩展模块
  • Plugins:支持日志、邮件等扩展功能
  • Playbooks:剧本,YAML 格式任务定义文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能
  • Connection Plugins:ansible基于连接插件连接到各个主机上,默认使用 SSH 连接主机
  • Host Inventory:记录Ansible管理主机的信息(如 IP、端口、密码等)

六、Ansible 任务执行模式

Ansible 支持两种任务执行模式:

  • ad-hoc 模式(点对点模式):使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话shell。(快速执行单条命令,适合临时操作)
  • playbook 模式(剧本模式):是Ansible主要管理方式,也是Ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。(通过组合多个任务完成复杂操作,是 Ansible 的核心管理方式)

七、Ansible 工作流程

在这里插入图片描述

八、Ansible 部署步骤

  1. 安装 RHEL 9 虚拟机,配置 IP 信息。

  2. 配置本地 yum 源:

    mount /dev/cdrom /mnt
    vim /etc/yum.repos.d/server.repo
    

    写入以下内容:

    [aa]
    name=aa1
    baseurl=file:///mnt/BaseOS
    enabled=1
    gpgcheck=0[bb]
    name=bb1
    baseurl=file:///mnt/AppStream
    enabled=1
    gpgcheck=0
    
  3. 安装虚拟化软件包组:

    yum group install "Virtualization Client" "Virtualization Hypervisor" "Virtualization Tools" -y
    
  4. 重启并启用 libvirtd 服务:

    systemctl restart libvirtd
    systemctl enable libvirtd
    
  5. 上传 RHEL 9.2 镜像至虚拟机。

  6. 使用 virt-manager虚拟监视器 安装系统。

  7. 克隆 5 台主机,共 6 台,IP 规划如下:

    192.168.122.100 master.example.com
    192.168.122.10 node1.example.com
    192.168.122.20 node2.example.com
    192.168.122.30 node3.example.com
    192.168.122.40 node4.example.com
    192.168.122.50 node5.example.com
    
  8. 所有主机需删除网卡配置文件中的 UUID。

  9. 所有主机编辑 /etc/hosts,添加如下内容:

    192.168.122.1 ansible.example.com ansible
    192.168.122.100 master.example.com master
    192.168.122.10 node1.example.com node1
    192.168.122.20 node2.example.com node2
    192.168.122.30 node3.example.com node3
    192.168.122.40 node4.example.com node4
    192.168.122.50 node5.example.com node5
    
  10. 配置 master 主机的 SSH 免密登录(root 和 student 用户均需配置)使用su - student进入student用户:

    ssh-keygen
    for i in node{1..5}; do ssh-copy-id -i ~/.ssh/id_rsa.pub root@$i; done
    for i in node{1..5}; do ssh-copy-id -i ~/.ssh/id_rsa.pub student@$i; done
    
  11. 在宿主机(ansible)中配置 HTTP 本地 yum 仓库,安装 httpd,上传包文件至 /var/www/html/,重启 httpd,关闭防火墙和 SELinux。

  12. 在 master 主机中配置 yum 仓库:

    vim /etc/yum.repos.d/server.repo
    

    写入以下内容:

    [aa]
    name=aa1
    baseurl=http://ansible.example.com/rhel9/BaseOS
    enabled=1
    gpgcheck=0[cc]
    name=cc1
    baseurl=http://ansible.example.com/rhel9/AppStream
    enabled=1
    gpgcheck=0[dd]
    name=dd1
    baseurl=http://ansible.example.com/ansible-automation-platform
    enabled=1
    gpgcheck=0
    

    测试安装:yum -y install vim

  13. 为 student 用户配置提权:

    echo "student ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/student
    for i in node{1..5}; do scp /etc/sudoers.d/student root@$i:/etc/sudoers.d/; done
    
  14. 安装 Ansible(使用 student 用户):

    su - student
    sudo yum -y install ansible-core ansible-navigator
    
  15. 配置 Ansible:

    • 创建 ansible 目录:mkdir /home/student/ansible

    • 创建主机清单 inventory:

      [test01]
      node1[test02]
      node2[web]
      node3
      node4[test05]
      node5[webtest:children]
      web
      
    • 创建 roles 和 collections 目录:mkdir roles collections

    • 生成并修改 ansible.cfg:

      ansible-config init --disabled > ansible.cfg
      vim ansible.cfg
      

      修改为以下内容(注意将 alice 替换为 student):

      [defaults]
      inventory = /home/student/ansible/inventory
      remote_user = student
      roles_path = /home/student/ansible/roles
      host_key_checking = False
      collections_path = /home/student/ansible/collections[privilege_escalation]
      become = True
      become_ask_pass = False
      become_method = sudo
      become_user = root
      
    • 测试连接:ansible all -m ping成功如图
      在这里插入图片描述

http://www.dtcms.com/a/349678.html

相关文章:

  • 国内代理 IP 的类型:住宅 IP、机房 IP、移动 4G/5G IP 区别
  • 愿景娱乐:践行“流量向善”以公益行动赋能“她”未来
  • RAG(知识库ChatPDF)
  • 开源大模型天花板?DeepSeek-V3 6710亿参数MoE架构深度拆解
  • 无障碍辅助模块|Highcharts引领可访问数据可视化的交流
  • 部分CSS笔试题讲解
  • Python JSON 全方位解析:序列化、反序列化与实战技巧
  • pytest+requests+Python3.7+yaml+Allure+Jenkins+docker实现接口自动化测试
  • k8sday17安全机制
  • flask Celery入门:轻松实现异步任务处理
  • 前端通过node本地转译rtsp流,配合hls实现浏览
  • 【SQL】深入理解MySQL存储过程:从入门到实战
  • CUDA 工具包 13.0 正式发布:开启新一代 GPU 计算的基石!
  • 使用EasyExcel根据模板导出文件
  • QtExcel/QXlsx
  • 深入浅出 Java 多态:从原理到实践的全面解析
  • 【RAGFlow代码详解-5】配置系统
  • 基于深度学习的翻拍照片去摩尔纹在线系统设计与实现
  • UE5 HoudiniPivotPainter1.0使用
  • NFC 滤波网络设计考虑
  • 车载通信架构---通过CANoe做 SOME/IP 模拟的配置例如
  • 库存指标怎么算?一文讲清3大库存分析指标
  • 大数据治理域——离线数据开发
  • 小白成长之路-k8s部署项目(二)
  • Legion Y7000P IRX9 DriveList
  • 【数据可视化-100】使用 Pyecharts 绘制人口迁徙图:步骤与数据组织形式
  • 程序设计---状态机
  • KVM 虚拟化技术与部署
  • ZKmall开源商城多端兼容实践:鸿蒙、iOS、安卓全平台适配的技术路径
  • 朴素贝叶斯学习笔记