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

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.xdnf.cn/news/18706.html

相关文章:

  • 信贷模型域——清收阶段模型(贷后模型)
  • 简述mysql中索引类型有哪些,以及对数据库的性能的影响?
  • QML中的QtObject
  • C# NX二次开发:绘图区控件和指定矢量控件详解
  • vscode--快捷键
  • 【Android 16】Android W 的冻结机制框架层分析
  • QT新建文件或者项目解释:那些模板分别是什么意思?
  • 音视频学习(五十七):RTSP信令交互流程
  • 华为云Stack环境中计算资源,存储资源,网络资源发放前的准备工作(中篇)
  • Spring Boot 结合 Jasypt 实现敏感信息加密(含 Nacos 配置关联思路)
  • Odoo 非标项目型生产行业解决方案:专业、完整、开源
  • 生成式AI的崛起
  • 俄罗斯情报机构推出新型安卓恶意软件,伪装成杀毒软件
  • Fluent Bit系列:字符集转码测试(下)
  • 蛋白质结构信息学大纲
  • Android横竖屏切换的“数据保卫战”:如何优雅地保存和恢复表单数据
  • 深入浅出 Java 多态:从原理到实践的全面解析
  • 程序的“烽火台”:信号的产生与传递
  • 使用 NetworkManager 管理 Wi-Fi 热点
  • 【动态规划】卡特兰数
  • 【leetcode】82. 删除排序链表中的重复元素(二)
  • KubeBlocks for Redis的5种网络模式
  • 计算机大数据技术不会?医院体检数据可视化分析系统Django+Vue全栈方案
  • 第二十二天-TFTLCD驱动原理介绍和配置
  • Vue3使用 DAG 图(AntV X6)
  • Vue 2 中的 v-model和Vue3中的v-model
  • 大数据毕业设计选题推荐-基于大数据的超市销售数据统计分析系统-Hadoop-Spark-数据可视化-BigData
  • 企业在做广告前,需要明确哪些问题?
  • 销售额和营业收入的区别在哪?哪个值应该更大一些?
  • 《零基础入门AI:循环神经网络(Recurrent Neural Networks)(从原理到实现)》