如何在 Ubuntu 22 04 上安装和配置 Ansible 自动化平台

ops/2024/11/28 20:58:03/

如何在 Ubuntu 22.04 上安装和配置 Ansible 自动化平台

简介

Ansible 是一个开源项目,并在 Github 上收获了 63k 的 star 。它是一个极其简单的 IT 自动化平台,使您的应用程序和系统更易于部署和维护。使用 SSH,以接近简单英语的语言实现从代码部署到网络配置再到云管理的一切自动化,无需在远程系统上安装代理。

image.png

接下来,我将一步一步教大家如何进行安装和部署!!

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

https://img-blog.csdnimg.cn/img_convert/4c16271f125adea69da6ed9e7b2a4226.png

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

https://img-blog.csdnimg.cn/img_convert/414570cd3da48d4cc4bf51489992000b.png

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器Win+R 打开运行窗口,输入 powershell 后点击确定。

https://img-blog.csdnimg.cn/img_convert/c8afbeb764459a37a8451dd2ed8eeff1.png

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器

https://img-blog.csdnimg.cn/img_convert/ea5814f1d1068ca9fa2bb94631cfbdf1.png

  • 到此为止,我们的云服务器就远程连接上了。

开始部署

1.更新系统

首先,确保你的系统是最新的,运行以下命令:

sudo apt update
sudo apt upgrade -y

2.安装Ansible

Ansible在Ubuntu的默认仓库中可用,但版本通常较旧。推荐从Ansible PPA安装以获取最新版本。

添加Ansible PPA:

sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible

安装Ansible:

sudo apt install ansible -y

验证安装:

ansible --version

你应该看到类似这样的输出,显示安装的Ansible版本:

ansible [core 2.16.6]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/bin/ansible
python version = 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] (/usr/bin/python3)
jinja version = 3.0.3
libyaml = True

3.基本配置

Ansible的默认配置文件位于/etc/ansible/ansible.cfg。你可以编辑这个文件来设置全局选项。

不过,为了避免权限问题,通常更容易在用户主目录下创建一个本地配置目录。

创建本地配置目录:

mkdir -p ~/ansible/config

禁用默认配置文件并启用我们的自定义配置文件:

ansible-config init -t all --disabled > ansible.cfg

创建和编辑配置文件:

nano ~/ansible/config/ansible.cfg

在**[defaults]**后添加以下配置设置:

inventory = ~/ansible/config/hosts
remote_user = your-username
host_key_checking = False

your-username替换为你的实际Ubuntu用户名。

4.创建库存文件

库存文件定义了Ansible将管理的主机。

创建库存文件:

nano ~/ansible/config/hosts

添加你管理节点的IP地址或主机名。例如:

[webservers]
192.168.1.10
192.168.1.11[dbservers]
192.168.1.20

5.测试连接

Ansible使用SSH与被管理节点通信。确保你可以无需密码提示即可SSH到这些节点。推荐的方法设置SSH密钥。

生成SSH密钥对(如果尚未完成):

ssh-keygen -t rsa -b 2048

将SSH密钥复制到被管理节点:

ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]

username替换为被管理节点上的用户名。

测试Ansible连接:

ansible all -m ping

你应该看到表示成功的输出:

192.168.1.10 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"
}
192.168.1.11 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"
}
192.168.1.20 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"
}

6.创建Nginx安装剧本

Ansible剧本是定义在被管理节点上执行任务的YAML文件。在这个剧本中,我们将更新系统,安装Nginx,并在firewall中放行HTTPHTTPS端口。

创建剧本文件:

nano ~/ansible/config/playbook.yml

添加以下内容到剧本:

---
- name: Update and upgrade apt packageshosts: allbecome: yestasks:- name: Update apt cacheapt:update_cache: yes    - name: Installing Nginxapt:name: nginxstate: latest    - name: Starting Nginx Serviceservice:name: nginxstate: startedenabled: yes  # Enabling Nginx service if not available    - name: Allow all access to tcp port 80community.general.ufw:rule: allowport: '80'proto: tcp    - name: Allow all access to tcp port 443community.general.ufw:rule: allowport: '443'proto: tcp

7.运行剧本

执行剧本以更新和升级所有被管理节点上的软件包。

ansible-playbook ~/ansible/config/playbook.yml

你应该看到表示成功的输出:

PLAY [Update and upgrade apt packages] *****************************************************************************TASK [Gathering Facts] *********************************************************************************************
ok: [192.168.1.10]
ok: [192.168.1.11]
ok: [192.168.1.20]TASK [Update apt cache] ********************************************************************************************
changed: [192.168.1.10]
changed: [192.168.1.11]
changed: [192.168.1.20]TASK [Installing Nginx] ********************************************************************************************
changed: [192.168.1.10]
changed: [192.168.1.11]
changed: [192.168.1.20]TASK [Starting Nginx Service] **************************************************************************************
ok: [192.168.1.10]
ok: [192.168.1.11]
ok: [192.168.1.10]TASK [Allow all access to tcp port 80] *****************************************************************************
changed: [192.168.1.10]
changed: [192.168.1.11]
changed: [192.168.1.20]TASK [Allow all access to tcp port 443] ****************************************************************************
changed: [192.168.1.10]
changed: [192.168.1.11]
changed: [192.168.1.20]PLAY RECAP *********************************************************************************************************
192.168.1.10               : ok=6    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
192.168.1.11               : ok=6    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
192.168.1.20               : ok=6    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site


http://www.ppmy.cn/ops/137470.html

相关文章

C#中面试的常见问题003

1.委托的定义 定义委托 委托可以被视为一个指向方法的引用。你可以定义一个委托类型&#xff0c;该类型指定了方法的签名&#xff08;即方法的参数列表和返回类型&#xff09;。以下是定义委托的基本语法&#xff1a; public delegate int Comparison<T>(T x, T y); …

【数据结构】二叉树(2)

目录 1. 二叉树的遍历 前序遍历 中序遍历 后序遍历 2. 计算二叉树中的节点个数 3. 计算二叉树中叶子节点个数 4. 计算二叉树的深度 5. 计算二叉树第k层节点个数 6. 二叉树基础练习 7. 二叉树的创建 8. 二叉树的销毁 9. 层序遍历 10. 判断二叉树是否为完全二叉树 1…

Linux 命令之 `man` 命令详解

在Linux系统中&#xff0c;man&#xff08;manual的缩写&#xff09;命令是一个非常重要的工具&#xff0c;用于查看命令的手册页&#xff08;manual pages&#xff09;。这些手册页包含了关于命令的详细描述、选项、用法示例和相关信息。本文将详细介绍man命令的使用方法和一些…

ts解决vite unplugin-auto-import/vite

vite-env.d.ts加入即可 /* eslint-disable */ /* prettier-ignore */ // ts-nocheck // noinspection JSUnusedGlobalSymbols // Generated by unplugin-auto-import export { } declare global {const EffectScope: typeof import(vue)[EffectScope]const acceptHMRUpdate: t…

Linux iptables 命令详解

简介 iptables 是一个在 Linux 中的管理防火墙规则的命令行工具&#xff0c;它作为 Linux 内核的 netfilter 框架的一部分运行&#xff0c;以控制传入和传出的网络流量。 与 firewalld 相比 iptables 是基于规则的&#xff0c;每个规则必须独立定义&#xff0c;firewalld 是基…

【Threejs进阶教程-着色器篇】9.顶点着色器入门

【Threejs进阶教程-着色器篇】9.顶点着色器入门 本系列教程第一篇地址&#xff0c;建议按顺序学习认识顶点着色器varying介绍顶点着色器与片元着色器分别的作用Threejs在Shader中的内置变量各种矩阵gl_Position 尝试使用顶点着色器增加分段数增强效果 制作平面鼓包效果鼓包效果…

笔记本外接4k显示器只有30Hz刷新率

方法 注意显示器设置里有一个调节帧率的选项是可以选60帧的&#xff0c;如果不能修改 通过按钮找到显示-USBC优先级&#xff0c;选择高分辨率&#xff0c;之后在显示器设置中应该出现60Hz的选项&#xff0c;更改选项则切换至60Hz 原因是USBC线缆存在高分辨率和高数据传输两种模…

Vue-TreeSelect组件最下级隐藏No sub-options

问题&#xff1a;最下级没有数据的话&#xff0c;去除No sub-options信息 为什么没下级&#xff0c;会展示这个&#xff1f; 整个树形结构数据都是由后端构造好返回给前端的。默认子类没数据的话&#xff0c;children是一个空数组。也就是因为这最下级的空数组&#xff0c;导致…