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

Ansible 自动化介绍

在执行命令前,先明确 Ansible 的 “规则” 和 “目标”,

  • ansible.cfg(操作说明书)

  • inventory(地址簿)的作用

一、初始化服务器环境(准备 “员工电脑”)

#1. 查看当前服务器 IP 信息[root@centos7 ~ 10:08:56]# ip -br a#拖入set-ansible-centos7.sh,以下为.sh内容======================================================================#!/bin/bash​# 使用说明if [ $# -eq 0 ];thenecho "Usage: $0 10-14" && exit 1fi​# 获取主机名domain=lyk.cloudif [ $1 -eq 10 ];thenHOSTNAME=controller.$domainelseHOSTNAME=node$[ $1%10 ].$domainfi​# 设置主机名hostnamectl set-hostname $HOSTNAME​​# 设置网络interface=ens33nmcli connection modify $interface ipv4.method manual ipv4.addresses 10.1.8.$1/24 ipv4.dns 223.5.5.5 +ipv4.dns 223.6.6.6nmcli connection up $interface 2>/dev/null​# 清屏,查看主机名clearhostnameip -br addr show $interfacebash​======================================================================#2. 上传并处理环境配置脚本[root@centos7 ~ 10:09:15]# rz -Erz waiting to receive.​[root@centos7 ~ 10:12:37]# ls -l set-ansible-centos7.sh -rw-r--r-- 1 root root 552 8月  12 10:12 set-ansible-centos7.sh​# 简化脚本使用(创建 “快捷方式”)[root@centos7 ~ 10:12:51]# mv set-ansible-centos7.sh /usr/local/bin/sethost[root@centos7 ~ 10:13:36]# chmod +x /usr/local/bin/sethost ​​-第一行:把脚本移动到系统默认的 “命令目录”(/usr/local/bin),并改名为sethost,以后直接输入sethost就能调用,不用再输完整路径,类似 “把程序放到桌面快捷方式”。-第二行:给脚本添加 “可执行权限”(+x),让系统允许运行这个脚本,否则脚本只是个普通文本,无法执行。​#vm虚拟机克隆# 克隆虚拟机后,分别在每台机器上执行:-首选项D:\AAA云计算\ansible-克隆一台    controller   node1        node2       node3       node4 ​controller:sethost 10  node1:sethost 11  node2:sethost 12  node3:sethost 13  node4:sethost 14  ​​​

二、验证服务器配置(检查 “员工电脑” 是否就绪)

#循环连接 10.1.8.11 到 10.1.8.14 的主机,并执行 hostname 命令查看主机名,验证主机名配置是否正确for host in 10.1.8.{11..14};do ssh $host hostname;done​#将本地的 /etc/hosts 文件批量复制到 10.1.8.11 到 10.1.8.14 的 /tmp 目录下for host in 10.1.8.{11..14};do scp /etc/hosts $host:/tmp/hosts;done

三、配置免密登录(给 “员工” 配钥匙,不用每次敲门)

[lyk@controller ~ 11:23:06]$ ls .ssh​#1.创建.ssh 目录并设置权限为 700,这是 SSH 要求的安全权限#为什么要权限 700:SSH 协议要求这个目录必须 “私密”,否则会认为不安全,拒绝使用密钥登录[lyk@controller ~ 11:20:39]$ \mkdir -m 700 .ssh​​[lyk@controller ~ 11:23:06]$ ls .ssh#2. 生成 SSH 密钥对(制作 “钥匙和锁”)[lyk@controller ~ 11:23:12]$  ssh-keygen -t rsa -f .ssh/id_rsa -N ''​-生成 RSA 类型的 SSH 密钥对:-t rsa:指定加密算法为 RSA-f .ssh/id_rsa:指定密钥文件路径和名称-N '':设置空密码,避免每次使用密钥时输入密码​#3. 批量分发公钥(给所有 “员工” 装自己的锁)[lyk@controller ~ 11:26:07]$ for host in controller node{1..4}; do    sshpass -p 123 ssh-copy-id lyk@$host; done​​-批量将公钥复制到各主机,实现免密登录:-循环处理 controller 和 node1 到 node4-sshpass -p 123:使用密码 123 自动登录-ssh-copy-id:将本地公钥复制到远程主机的~/.ssh/authorized_keys 文件中​# 验证免密登录[lyk@controller ~ 11:39:40]$ for host in controller node{1..4}; do    ssh lyk@$host hostname; donecontroller.lyk.lyk.cloudnode1.lyk.cloudnode2.lyk.cloudnode3.lyk.cloudnode4.lyk.lyk.cloud​#验证是否可以在远程主机上执行 sudo 命令[lyk@controller ~ 11:40:05]$ for host in controller node{1..4}; do    ssh lyk@$host sudo id ; doneuid=0(root) gid=0(root) 组=0(root)uid=0(root) gid=0(root) 组=0(root)uid=0(root) gid=0(root) 组=0(root)uid=0(root) gid=0(root) 组=0(root)uid=0(root) gid=0(root) 组=0(root)​

四、安装 Ansible(部署 “自动化管理工具”)

控制节点
[lyk@controller ~ 11:48:40]$ sudo yum install -y ansible​作用:在控制节点(controller)上安装 Ansible 软件,相当于 “在自己电脑上装一个能同时指挥所有员工的管理软件”。-y参数:自动回答 “yes”,安装过程中不用手动确认,一键完成。
受管节点
[lyk@node1 ~ 11:26:07]$ yum list python​作用:在受管节点(比如 node1)上查看是否安装了 Python,因为 Ansible 通过 Python 脚本和远程机器通信,相当于 “确认员工电脑上是否装了能接收命令的软件”。实际用途:如果没有 Python,Ansible 无法工作,需要先安装
http://www.xdnf.cn/news/17841.html

相关文章:

  • 如何在idea中导入外来文件
  • 基于大数据的在线教育评估系统 Python+Django+Vue.js
  • C++中template、 implicit 、explicit关键字详解
  • Rust 项目编译故障排查:从 ‘onnxruntime‘ 链接失败到 ‘#![feature]‘ 工具链不兼容错误
  • Rust:构造函数 new() 如何进行错误处理?
  • Xshell远程连接Ubuntu 24.04.2 LTS虚拟机
  • HCIP项目之OSPF综合实验
  • [Robotics_py] 路径规划算法 | 启发式函数 | A*算法
  • Linux系统编程Day13 -- 程序地址空间
  • git config的配置全局或局部仓库的参数: local, global, system
  • MaxKB+合合信息TextIn:通过API实现PDF扫描件的文档审核
  • 如何构建PHP表单页面及验证相关原理(PHP基础)
  • 自动驾驶决策算法 —— 有限状态机 FSM
  • Android 引导式访问(屏幕固定 Screen Pinning)完整指南
  • Fluent Bit 日志合并正则表达式(上)
  • Docker守护进程安全加固在香港VPS环境的操作标准
  • n8n、Workflow实战
  • PyCharm Community 2024.2.3.exe 安装教程(详细步骤,附安装包下载)
  • 2-1〔O҉S҉C҉P҉ ◈ 研记〕❘ 漏洞扫描▸理论基础与NSE脚本
  • 《飞算JavaAI:新一代智能编码引擎,革新Java研发范式》
  • python3.10.6+flask+sqlite开发一个越南留学中国网站的流程与文件组织结构说明
  • 微调入门:为什么微调
  • LeetCode 分割回文串
  • MySQL-单表查询
  • GitHub的简单使用方法----(5)
  • C++联合体的定义
  • 春日花园动画
  • 9. React组件生命周期
  • linux远程部署dify和mac本地部署dify
  • 机器学习—— TF-IDF文本特征提取评估权重 + Jieba 库进行分词(以《红楼梦》为例)