一、Ansible
1、简介:
ansible 是一款基于 Python 开发的自动化运维工具,它使用清单、SSH 连接、剧本和模块,具有批量系统配置、批量程序部署、批量运行命令等功能。
① Inventory(清单):Ansible 的主机清单(Inventory)定义了要管理的主机和主机组的文件,清单可以包含主机的名称、IP 地址、连接方式、组织结构等信息。
② SSH 连接:Ansible 默认使用 SSH 协议来与目标主机进行通信。在执行任务之前,Ansible 服务器通过 SSH 私钥或用户名/密码来进行身份验证,建立 SSH 连接到目标主机。
③ Playbooks(剧本):Ansible 的核心配置是 Playbooks(剧本),Playbooks 是用 YAML 格式编写的文件,其中包含了一系列任务(tasks)和角色(roles)的定义。任务是要在目标主机上执行的操作,而角色是一个任务的集合,用于组织和复用配置。
④ 模块:Ansible 使用模块(modules)来执行任务,模块是 Ansible 的工具,它们提供了执行特定操作的功能。
2、ansible 部署
(1) 环境准备:
ansible 服务器:192.168.198.128
ansible 客户机:192.168.198.130 - 133
(2) ansible 服务器:
① 域名解析:
② 安装 ansible
yum install -y ansible
rpm -qc ansible:查看 ansible 配置文件
3、ansible 免密登录
在 Ansible 中,SSH (Secure Shell) 是默认的远程连接协议,用于与目标主机建立安全的通信渠道。
① ssh-keygen:生成密钥
ls .ssh/ :存放密钥文件
ssh-copy-id + 目的主机 ip 地址:发送密钥实现免密登录
实现免密登录:
二、ansible 基础
1、ansible 测试连通性
(1) 定义主机清单:
vim /etc/ansible/hosts(此时只定义了三台 ansible 客户机)
(2) 测试连通性:
ansible localhost -m ping
● "localhost" 表示目标主机,这里指的是本地主机;
● "-m ping" 表示要执行的 Ansible 模块是 "ping" 模块。"ping" 模块通常用于测试与目标主机的连接是否正常。如果连接正常,它将返回 "pong"。
简洁输出:-o
-o 参数用于将 Ansible 输出设置为可读性更好的 "oneline" 模式,输出将以单行格式显示,内容更加紧凑。
(3) know_hosts
① ansible 服务器与 host2 并没有进行免密登录,因此测试连通性失败
② ansible host2 -m ping -u root -k -o
● "-u root" 指定了连接到目标主机时使用的用户名 "root",表示 Ansible 将使用 "root" 用户身份连接到 "host2" 主机。
● "-k" 提示 Ansible 在连接到目标主机时,要求输入密码。
③ 去掉 yes/no 询问(去掉"是否继续连接"的询问)
vim /etc/ssh/ssh_config
StrictHostKeyChecking no
systemctl restart sshd
(4) 主机清单无主机名时,测试连通性
只有在 ansible 服务器的主机清单中记录了主机名,才能测试连通性。
(5) ping 与 -m ping 的区别:
● Ping 命令通常用于测试主机之间的网络连通性,它通过发送 ICMP Echo 请求消息到目标主机并等待回复来检测主机是否在线;
● -m ping" 是 Ansible 命令中的一个选项,用于执行 Ansible 的 "ping" 模块。这个模块是用于测试 Ansible 是否能够与远程主机建立连接。