网站首页 > 技术文章 正文
Ansible 是由 RedHat 赞助的开源免费自动化工具。使用 Ansible,我们可以管理和配置 Linux 和 Windows 系统,而无需安装任何代理。它基本上可以在 SSH 协议上使用,并且可以一次配置数百台服务器。在 Ansible 术语中,安装 Ansible 的系统称为控制主机/节点,而由 Ansible 管理的系统称为托管主机。
在这篇文章中,我们将讨论如何在 Rocky Linux 8 上安装最新版本的 Ansible。
实验准备
- Control Node – 192.168.1.170 – Minimal Rocky Linux 8
- Managed Host 1 – 192.168.1.121 – Ubuntu 20.04 LTS
- Managed Host 2 – 192.168.1.122 – Rocky Linux 8
- sysops user with admin rights
安装 Ansible
1) 更新系统
要更新 rocky linux 8,请运行 dnf 命令
$ sudo dnf update -y
重启系统
$ sudo reboot
2) 配置 EPEL 存储库
Ansible 包及其依赖项在默认的 Rocky Linux 8 包存储库中不可用。因此,要通过 dnf 安装 ansible,我们必须先配置 EPEL 存储库。
$ sudo dnf install -y epel-release
3) 安装 Ansible
$ sudo dnf install ansible -y
查看 Ansible 版本
$ ansible --version
pip 方式安装 Ansible
如果您正在寻找 Ansible 的最新版本,那么请使用 pip 安装 Ansible。
1) 安装所有更新
$ sudo dnf update -y
重启系统
$ reboot
2) 安装 python 3.8 和其他依赖项
$ sudo dnf module -y install python38
$ sudo alternatives --config python
键入 3 并按 enter 键
3) 安装 Ansible
$ sudo pip3 install setuptools-rust wheel
$ sudo pip3 install --upgrade pip
$ sudo python -m pip install ansible
Ansible 安装成功
查看 Ansible 版本
$ ansible --version
验证 Ansible
每当使用 dnf 或 yum 命令安装 Ansible 时,就会自动创建 /etc/ansible/ansible.cfg 文件,当我们使用 pip 安装时,我们必须手动创建其配置文件。
建议为每个项目创建独立的 ansible.cfg,本文中我创建了一个自动化项目。
$ mkdir automation
$ cd automation
创建 ansible.cfg 文件,包含以下内容
$ vi ansible.cfg
[defaults]
inventory = /home/sysops/auotmation/inventory
remote_user = sysops
host_key_checking = False
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
保存并退出文件
在 automation 目录下创建一个 inventory 文件,包含以下内容
$ vi inventory
[prod]
192.168.1.121
[test]
192.168.1.122
保存并关闭文件
在 ansible.cfg 文件中,我已经使用 sysops 作为 remote_user,因此让我们为 sysops 用户创建 ssh 密钥,并在托管主机之间共享它。
$ ssh-keygen
使用 ssh-copy-id 命令共享 SSH 密钥
$ ssh-copy-id sysops@192.168.1.121
$ ssh-copy-id sysops@192.168.1.122
在所有的托管主机上执行以下命令
# echo "sysops ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/sysops
使用 ping 模块验证控制节点到托管主机的连通性
$ cd automation/
$ ansible -i inventory all -m ping
让我们创建一个剧本 (web.yaml) 在托管主机上安装 nginx 和 php
$ vi web.yaml
---
- name: Play to Packages
hosts:
- test
- prod
tasks:
- name: Install php and nginx
package:
name:
- php
- nginx
state: present
保存并关闭文件
使用下面的 ansible-playbook 命令运行剧本
$ ansible-playbook -i inventory web.yaml
很好,以上输出确认 playbook 已经成功执行,它也确认 Ansible 安装正确。
我的开源项目
- course-tencent-cloud(酷瓜云课堂 - gitee 仓库)
- course-tencent-cloud(酷瓜云课堂 - github 仓库)
猜你喜欢
- 2024-12-01 Ansible的原理与配置
- 2024-12-01 Ansible系列教程-playbook详解(三)
- 2024-12-01 prometheus实战之一:用ansible部署
- 2024-12-01 ansible快速入门手册
- 2024-12-01 学习下运维自动化工具ansible
- 2024-12-01 Ansible 批量100台服务器添加 Crontab
- 2024-12-01 利用Ansible自动化工具对多台linuxz主机配置网卡文件
- 2024-12-01 Ansible自动化部署利器的实战运用
- 2024-12-01 Ansible自动化运维
- 2024-12-01 Ansible实战系列二 _ Playbook入门
- 最近发表
-
- count(*)、count1(1)、count(主键)、count(字段) 哪个更快?
- 深入探索 Spring Boot3 中 MyBatis 的 association 标签用法
- js异步操作 Promise fetch API 带来的网络请求变革—仙盟创梦IDE
- HTTP状态码超详细说明_http 状态码有哪些
- 聊聊跨域的原理与解决方法_跨域解决方案及原理
- 告别懵圈!产品新人的接口文档轻松入门指南
- 在Javaweb中实现发送简单邮件_java web发布
- 优化必备基础:Oracle中常见的三种表连接方式
- Oracle常用工具使用 - AWR_oracle工具有哪些
- 搭载USB 3.1接口:msi 微星 发布 990FXA Gaming 游戏主板
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)