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

Hi168云平台部署Ansible学习环境

前言

之前发布的文章已经介绍过了在Hi168云平台部署openEuler学习环境,那么既然能部署openEuler了,其他的各类学习环境自然也就可以部署了。

Ansible简介

Ansible 是一个运维自动化工具,可以通过 SSH 协议对远程主机进行管理,对远程主机执行批量操作,包括:文件复制、软件包安装、服务的启动重启等。

Ansible 解决了如何大批量、自动化的实现系统配置、应用部署、命令和服务操作的问题。其脚本具有灵活、可重入的特性,可以极大地减少运维人员的重复劳动,提高了运维效率。

架构

Ansible 与远程主机通过 SSH 协议相连,被管理主机需要配置并启动 SSH 服务,除此之外不需要其他任何软件。

Ansible 可以同时管理 Linux 操作系统的不同发行版本以及 Windows 系统等。

涉及的一些专业术语

Control node:控制节点,安装了 Ansible 服务的主机,主要用来发布任务、调用功能模块,对其他节点进行批量操作。

Managed nodes:受控节点,被 Ansible 服务所管理的主机,是模块命令的被执行对象。

Inventory:主机清单,受控节点列表,可以是 IP 地址、主机名或域名。

Modules:模块,特定功能代码,默认有上千款功能模块。

Task:任务,Ansible 受控节点上将要被执行的操作。

Playbook:剧本,使用 YAML 语言编写的可重复执行的任务列表,也可称之为脚本,通常把常用操作写道剧本文件中,下次可以重复执行一遍。

Roles:角色,用于结构化的组织 Playbook,通过调用角色实现一连串的功能。

组网介绍

Ansible学习环境至少需要部署两台及以上主机,一台作为控制节点,剩下的作为受控节点,受控节点多点呢,就可完成更多的学习项目,这里以一个控制节点,三个受控节点为例。

需要注意的是在Hi168平台上这些节点需要部署在同一个命名空间中。

操作开始

安装openEuler环境可以直接查看上一篇文章,这里就不再赘述了。

使用Hi168云平台搭建openEuler学习环境

创建应用

双击打开桌面图标“我的模板”。

在我的模板中,找到之前已经创建好的openEuler的模板,点击“部署”。

填写好相关信息。

重复上述两个步骤,再创建三个应用。

这时候在桌面上就可以看到创建好的四个应用图标了。

配置受控节点

点击打开名为“ansible-node1”的应用,完成接下来的配置。剩下的“ansible-node2”和“ansible-node3”也是同样的操作方式,这里以“ansible-node1”为例。

修改主机名

双击桌面图标“ansible-node1”。

输入账号密码,登录openEuler操作系统。

执行命令修改主机名,修改完主机名以后需要退出重新登录一下才生效。

hostnamectl set-hostname node1

配置网络

网络由Hi168平台自动下发,不需要进行修改,但是一旦应用重启,IP地址将会改变,因此需要创建一个“服务端口”获得一个固定的vip地址。

点击“服务端口”图标,点击“添加服务”。

按下图,填写好相关信息。

此时,就可以看到VIP地址和外部端口了,可以记录下来,留待后面备用。

关闭SELinux

临时关闭。

setenforce 0

修改配置文件,永久关闭。

vi /etc/selinux/config

# 将 “SELinux” 的值修改为 “disabled”。

关闭防火墙并设置防火墙为开机不启动。

systemctl stop firewalld
systemctl disable firewalld

开启SSH服务,并允许root用户远程登录,openEuler操作系统该功能默认启动,无需操作修改。

以上所有配置均需在 node1~node3 节点操作。关闭防火墙、SELinux的操作可以在制作应用模板的时候就关闭,作为学习环境,等学习到了这两个功能再开启就行。

node2配置修改

Node3配置修改

配置控制节点

修改主机名
hostnamectl set-hostname control

配置网络

和受控节点一样的配置步骤。

修改软件源(可选)

openEuler默认是官方在线源,如果觉得安装软件的速度慢,可以修改为华为云或阿里云的软件源地址。

sed -i "s@http://repo.openeuler.org/openEuler-24.03-LTS-SP1/@https://mirrors.aliyun.com/openeuler/openEuler-24.03-LTS-SP1/@g" /etc/yum.repos.d/openEuler.repo
dnf clean all
dnf makecache
安装Ansible服务
dnf install -y ansible

安装完成以后,Ansible服务默认已经启动,可以执行 ansible --version 命令查看 Ansible 服务的版本及配置信息。

配置主机hosts文件

使用vim编辑器,编辑/etc/hosts文件。

vim /etc/hosts

写入如下内容,IP地址为三个应用的VIP地址。

10.106.49.158   node1
10.101.241.146  node2
10.100.163.224  node3

配置控制节点和受控节点连接

生成ssh密钥对,所有应答全部回车即可。

ssh-keygen

将公钥拷贝至各个受控节点,需要输入受控节点的密码。

-p 后面指定的端口号,要修改为网络配置步骤中的“外部端口”。

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2163 root@node1 
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2117 root@node2
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2165 root@node3

配置受控主机清单

将受控节点的IP地址写入到主机清单文件中,控制节点就可以基于清单对主机进行管理,还可以在清单中对主机进行分类。

我这里将 node1 和 node2 归类到 [web] 类中,node3 归类到 [db] 类中,以便更加贴近实际的业务情况进行分类,分类名称可以自定义。

使用vim编辑器编辑主机清单配置文件/etc/ansible/hosts

vim /etc/ansible/hosts

写入如下内容,文件里面会有一些实例配置可以删除,也可以保留直接添加到文末就可以。

[web]
node1 ansible_port=2163
node2 ansible_port=2117
[db]
node3 ansible_port=2165

使用ansible-inventory --graph命令查看受控节点的信息。

至此一个满足基本学习条件的Ansible环境就搭建好了。

测试一下

检查所有受控节点能否访问百度,可以看到每个节点都是可以访问百度的。

ansible all -m raw -a "ping -c 1 baidu.com"

在所有的受控节点/root/hello.txt文件中写入"Hello Ansible"。

ansible all -m shell -a "echo 'Hello Ansible' > /root/hello.txt"

警告信息可以暂时忽略不管,这是因为 Ansible 检测到目标主机的 Python 解释器路径为 /usr/bin/python3,但未明确指定解释器路径,因此提示 未来可能因系统环境变化(如安装其他 Python 版本)导致 Ansible 执行失败

检查一下文件文件有没有创建成功。

删除“[web]”组中创建的“hello.txt”文件。

ansible web -m file -a "path=/root/hello.txt state=absent"

查看所有受控主机“/root”目录中的文件,对比发现node1和node2中就没有了hello.txt文件。

ansible all -m shell -a "ls /root/"

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

相关文章:

  • Mysql(继续更新)
  • linux入门三:Linux 编辑器
  • 查看手机在线状态,保障设备安全运行
  • js chrome 插件,下载微博视频
  • 树和图论【详细整理,简单易懂!】(C++实现 蓝桥杯速查)
  • Python | 第十三章 | 多态 | 魔术方法 | 静态方法 | 抽象类
  • c++day7
  • 基于 SpringBoot 的民宿管理平台系统
  • 用PHPExcel 封装的导出方法,支持导出无限列
  • DNS常见问题:什么是主机记录和记录值?(国科云)
  • 【Android】Android 获取当前前台应用包名与自动化控制全流程实践笔记(适配 Android 10+)
  • 网络安全防护技术
  • Python与DeepSeek应用:解锁AI开发新姿势
  • C# 设置Excel中文本的对齐方式、换行、和旋转
  • 【深度学习】Downstream Model:预训练模型的下游应用与微调技术
  • 网络空间安全(54)CSRF
  • 边缘计算盒子是什么?
  • Dify教程01-Dify是什么、应用场景、如何安装
  • 解决python manage.py shell ModuleNotFoundError: No module named xxx
  • OCR之行驶证识别
  • 【MySQL】——详解事务
  • 多账户使用Github的场景,设置 SSH 多账号使用特定 key
  • MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
  • Pytorch查看神经网络结构和参数量
  • MongoDB 新手笔记
  • GitHub优秀项目:数据湖的管理系统LakeFS
  • 42、JavaEE高级主题:WebSocket详解
  • linux入门四:Linux 编译器
  • leetcode_面试题 02.07. 链表相交_java
  • Interactron: Embodied Adaptive Object Detection(训练时进行更新参数) 还没看懂