Hi168云平台部署Ansible学习环境

发布于:2025-04-10 ⋅ 阅读:(42) ⋅ 点赞:(0)

前言

之前发布的文章已经介绍过了在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/"


网站公告

今日签到

点亮在社区的每一天
去签到