在CentOS 7中安装与配置【Ansible】的详细指南

🐇明明跟你说过:个人主页

🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

[1、Centos 7.9简介](#1、Centos 7.9简介)

2、Ansible简介

二、安装Ansible

1、服务器准备

2、添加yun源

3、安装Ansible

三、配置Ansible

1、配置Ansible主机清单

[2、配置 SSH 免密登录](#2、配置 SSH 免密登录)

[3、配置 Ansible 配置文件(可选)](#3、配置 Ansible 配置文件(可选))

[4、测试 Ansible 配置](#4、测试 Ansible 配置)

[5、使用 Ansible 执行任务](#5、使用 Ansible 执行任务)

四、常用命令

[1、ansible --- 执行单条命令](#1、ansible — 执行单条命令)

[2、ansible-playbook --- 执行剧本](#2、ansible-playbook — 执行剧本)

[3、ansible-galaxy --- 管理 Ansible 角色](#3、ansible-galaxy — 管理 Ansible 角色)

[4、ansible-inventory --- 查看库存文件](#4、ansible-inventory — 查看库存文件)

[5、ansible-vault --- 加密敏感数据](#5、ansible-vault — 加密敏感数据)

[6、ansible-doc --- 查看模块文档](#6、ansible-doc — 查看模块文档)


一、引言

1、Centos 7.9简介

CentOS 7.9 是基于 Red Hat Enterprise Linux (RHEL) 7.9 源代码构建的稳定、可靠的企业级 Linux 发行版,提供了最新的安全更新和性能改进,适用于服务器和桌面环境。它支持广泛的硬件平台,并集成了多种网络服务和虚拟化技术,如 KVM 和 Docker,适合用于部署 Web 服务器、数据库和其他企业应用。通过 yum 包管理器和 systemd 系统和服务管理器,CentOS 7.9 提供了简便的软件包管理和系统配置体验,是构建和管理稳定 IT 基础设施的理想选择。

2、Ansible简介

Ansible 是一个简单而强大的自动化工具,用于配置管理、应用部署和任务编排,它通过 SSH 连接远程主机,默认使用基于 YAML 的易读 playbook 来定义自动化任务,无需在客户端安装额外的代理软件,支持广泛的模块和插件以扩展功能,适用于大规模 IT 基础设施的自动化操作。

二、安装Ansible

1、服务器准备

这里准备了三台服务器,一台作为control节点,两台作为node节点

2、添加yun源

在三台机器上分别执行

复制代码
wget -O /etc/yum.repos.d/CentOs-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

3、安装Ansible

只在control节点执行

复制代码
[root@control ~]# sudo yum install -y ansible

版本检查

复制代码
[root@control ~]# ansible --version

三、配置Ansible

1、配置Ansible主机清单

Ansible 需要配置目标主机的清单,默认情况下,Ansible 会使用 /etc/ansible/hosts 作为清单文件。

编辑该文件,定义被管理的节点(目标主机)。

复制代码
[root@control ~]# vim /etc/ansible/hosts

在该文件中,添加类似以下内容来配置目标主机(你可以根据实际情况修改主机名或 IP 地址):

复制代码
[test]
192.168.40.101
192.168.40.102
  • test 是主机组的名称,可以根据实际需要进行命名。
  • 在每个组下,列出被管理的主机或 IP 地址。

2、配置 SSH 免密登录

Ansible 与目标主机通过 SSH 协议进行通信。为了避免每次操作时输入密码,通常配置 SSH 免密登录。

在控制节点上,使用 ssh-keygen 生成 SSH 公私钥对:

一路回车即可

复制代码
[root@control ~]# ssh-keygen -t rsa -b 2048

然后,将生成的公钥复制到目标主机:

复制代码
[root@control ~]# ssh-copy-id root@192.168.40.101

[root@control ~]# ssh-copy-id root@192.168.40.102

完成后,测试免密登录是否成功:

复制代码
[root@control ~]# ssh 192.168.40.101
[root@control ~]# ssh 192.168.40.102

如果能够成功登录并无需输入密码,则 SSH 免密登录配置成功。

3、配置 Ansible 配置文件(可选)

Ansible 的配置文件 /etc/ansible/ansible.cfg 是可选的,可以根据需要进行定制化配置。常见的配置项包括:

  • **inventory:**指定清单文件的路径。
  • **remote_user:**指定默认的远程用户。
  • **become:**是否启用 sudo 提权。

例如,编辑配置文件来设置默认的远程用户:

复制代码
[root@control ~]# vim /etc/ansible/ansible.cfg

添加如下内容

复制代码
[defaults]
inventory = /etc/ansible/hosts
remote_user = root
become = yes
become_method = sudo

4、测试 Ansible 配置

安装和配置完成后,可以运行一个简单的命令来测试 Ansible 是否能够正确与目标主机通信。

运行 ping 模块,检查目标主机的连接:

复制代码
[root@control ~]# ansible all -m ping

如果一切配置正确,应该返回类似以下的输出:

5、使用 Ansible 执行任务

使用 Ansible 可以执行简单的命令,比如在所有目标主机上查看系统时间:

复制代码
[root@control ~]# ansible all -m command -a "date"

四、常用命令

1、ansible --- 执行单条命令

用于在单个主机或一组主机上执行简单的命令或任务。

复制代码
ansible <host-pattern> -m <module> -a "<module-args>"
  • **<host-pattern>:**目标主机或主机组。
  • **-m <module>:**指定 Ansible 模块(如 ping、shell、copy 等)。
  • **-a "<module-args>":**传递给模块的参数。

示例:

Ping 主机:

复制代码
ansible all -m ping
  • 该命令会在所有目标主机上执行 ping 测试,确保它们可以正常访问。

执行命令:

复制代码
ansible web_servers -m shell -a "uptime"
  • 在 web_servers 主机组上的所有主机执行 uptime 命令。

2、ansible-playbook --- 执行剧本

用于执行定义好的 剧本(Playbook),剧本是由一组任务组成的 YAML 文件。

复制代码
ansible-playbook <playbook.yml>
  • **<playbook.yml>:**指定要执行的 Playbook 文件。

示例:

执行 Playbook:

复制代码
ansible-playbook site.yml
  • 这会执行 site.yml 文件中定义的所有任务。

指定变量文件:

复制代码
ansible-playbook -i inventory.ini site.yml --extra-vars "@vars.json"

3、ansible-galaxy --- 管理 Ansible 角色

用于管理 Ansible 角色和集合。可以用来从 Ansible Galaxy 下载角色、创建新角色等。

复制代码
ansible-galaxy <command> <role-name>

常用子命令:

安装角色:

复制代码
ansible-galaxy install <role-name>

创建角色:

复制代码
ansible-galaxy init <role-name>

4、ansible-inventory --- 查看库存文件

用于查看 Ansible 的库存文件(即目标主机列表),或动态生成目标主机清单。

复制代码
ansible-inventory --list

查看 JSON 格式的库存:

复制代码
ansible-inventory -i inventory.ini --list

查看主机组列表:

复制代码
ansible-inventory -i inventory.ini --host <hostname>

5、ansible-vault --- 加密敏感数据

用于加密、解密文件或变量,常用于保护敏感信息(如密码、密钥等)。

复制代码
ansible-vault <command> <file>

常用子命令:

  • 创建加密文件:

    ansible-vault create

  • 编辑加密文件:

    ansible-vault edit

  • 加密现有文件:

    ansible-vault encrypt

  • 解密文件:

    ansible-vault decrypt

  • 查看加密文件内容:

    ansible-vault view

6、ansible-doc --- 查看模块文档

用于查看 Ansible 模块的文档,获取模块的使用说明和参数。

复制代码
ansible-doc <module-name>

示例:

  • 查看 copy 模块的文档:

    ansible-doc copy

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!

相关推荐
2301_777998347 小时前
Linux线程同步与互斥(三):信号量与环形队列实现生产者消费者模型
linux·c语言·c++
瞬间&永恒~7 小时前
【MySQL】 InnoDB 锁等待排查与并发压测实验
运维·数据库·mysql
江湖有缘8 小时前
Docker实战 | 使用Docker部署Donetick任务与家务管理应用
运维·docker·容器
实心儿儿8 小时前
Linux —— 应用层协议HTTP
linux·网络·http
流星白龙8 小时前
【Docker】4.NameSpace空间隔离实战
java·运维·docker
有续技术9 小时前
哈斯 (Haas) 机床 IP、端口号配置内容总结
运维·服务器
小张同学a.9 小时前
LAMP架构2
linux·运维·网络·架构·负载均衡
千河殇 多想和她9 小时前
如何在Reaonix中使用CodeGraph以及CodeGraph效果实测经验分享
linux·运维·ubuntu
VortMall9 小时前
出海引流运维双升级|VortMall微服务商城系统v1.3.12 升级更新
运维·微服务·facebook
心念枕惊9 小时前
新写了个直播录制工具,可录制抖音快手斗鱼直播
运维·服务器·数据库