文章目录
- Linux安装Ansible
- 一、安装ansible
- 二、配置管理节点和远程主机的连接
- 使用ssh-keygen生成密钥
- 复制SSH密钥到远程主机
- 验证SSH配置
- 三、主机清单配置文件
- 四、Ansible的配置文件
Linux安装Ansible
在Linux上安装Ansible可以通过以下步骤完成:
一、安装ansible
先安装epel源再安装Ansible,因为Redhat/Centos Linux上,Ansible放在epel源里面
[root@localhost ~]# yum install -y epel-release
[root@localhost ~]# yum install -y ansible
二、配置管理节点和远程主机的连接
就是配置管理节点
到远程主机
SSH无密钥连接(没密码就可以连接对方的电脑)
使用ssh-keygen生成密钥
ssh-keygen是一个用于生成和管理SSH公钥/私钥对的命令行工具。它通过使用非对称加密算法来生成一对密钥,其中私钥必须保密保存,而公钥可以分发给其他人或用于身份验证。
以下是ssh-keygen命令的输出信息和其含义:
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
# 生成公钥/私钥对,使用的是RSA算法
Enter file in which to save the key (/root/.ssh/id_rsa):
# 提示输入要保存密钥的文件名和路径,默认是/root/.ssh/id_rsa
Created directory '/root/.ssh'.
# 创建目录'/root/.ssh'用于保存密钥
Enter passphrase (empty for no passphrase):
# 提示输入一个口令短语(可选),如果不想设置口令短语,则可以直接按回车跳过
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
# 密钥已成功生成,私钥被保存在/root/.ssh/id_rsa文件中,
# 公钥被保存在/root/.ssh/id_rsa.pub文件中
The key fingerprint is:
SHA256:ck5EKvjzvdXyOsHbs4cXgi9i4GTtEMRfDOHIyhaEf/M root@localhost.localdomain
# 显示了公钥的指纹,用于标识该公钥
The key's randomart image is:
+---[RSA 2048]----+
| ... ++ |
| .o .o= o |
| ..o.+.o. |
| o.++.. |
| *..=S. . |
| . o=*E +.. . |
| +.+o o=.o . |
| . +o+o= o |
| ....+o= |
+----[SHA256]-----+
# 显示了密钥的随机艺术图像,用于提供一种可视化的密钥指纹表示方式
复制SSH密钥到远程主机
要将本地主机上的SSH密钥复制到远程主机上,可以使用ssh-copy-id命令。
ssh-copy-id user@remote_host
# 在上面的命令中
# user是远程主机的用户名
# remote_host是远程主机的IP地址或主机名。
当运行该命令时,系统会提示您输入远程主机的密码。
输入远程主机的密码后,ssh-copy-id命令会将本地主机的SSH公钥添加到远程主机的.ssh/authorized_keys文件中。这个文件包含了允许SSH连接到远程主机的公钥。
验证SSH配置
现在,您可以使用SSH连接到远程主机,而无需输入密码。系统会自动使用本地主机上的私钥进行身份验证,如果验证成功,则会打开SSH会话
ssh user@remote_host
三、主机清单配置文件
在Ansible中,/etc/ansible/hosts文件是默认的主机清单文件,用于定义要管理的主机列表和主机组。下面是/etc/ansible/hosts文件的配置详解:
定义主机组
在/etc/ansible/hosts中,可以通过方括号[ ]
来定义主机组(主机组可以定义多个)。主机组可以是单个主机的别名,也可以包含多个主机的列表。
例如:定义个 test1主机组,其中包含两个主机:
[root@localhost ~]# vi /etc/ansible/hosts
# 添加如下内容
[test1]
192.168.200.20
192.168.200.30
可以通过以下步骤测试/etc/ansible/hosts文件是否配置正确:
使用ansible命令测试主机连接:
ansible example -m ping
# 上面的命令将测试名为example的主机是否可以连接成功。
# 如果返回pong,则表示连接成功;
# 如果返回失败,则说明连接失败,请检查/etc/ansible/hosts文件中的主机名或IP地址是否正确
测试连接
[root@localhost ~]# ansible test1 -m ping
192.168.200.30 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.168.200.20 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
# 连接成功
四、Ansible的配置文件
安装tree命令树来查看ansible的组成
[root@localhost ~]# yum install -y tree
[root@localhost ~]# tree /etc/ansible/
/etc/ansible/
├── ansible.cfg # 配置文件
├── hosts # 主机清单配置文件
└── roles # 角色目录
ansible.cfg
/etc/ansible/ansible.cfg
是 Ansible 的配置文件,该文件包含全局配置选项,可以用来修改 Ansible 的行为。下面是一些常用的选项:
-
[default]
:基本信息设定 -
inventory
:指定 Ansible 的主机清单文件,默认为/etc/ansible/hosts
。 -
library = /usr/share/ansible
:指向存放Ansible模块的目录,支持多个目录方式,只要用冒号【:】隔开就可以 -
remote_user
:指定远程主机连接时使用的 SSH 用户名。 -
private_key_file
:指定连接远程主机时使用的 SSH 私钥文件路径。 -
host_key_checking
:指定是否检查远程主机的 SSH 主机密钥,如果设置为False
,则不检查,这在第一次连接时非常有用。 -
sudo_user
:指定在远程主机上使用 sudo 命令时使用的用户 -
timeout
:指定连接远程主机的超时时间,单位为秒 -
log_path
:指定 Ansible 日志文件的路径。
除了以上常用选项,
/etc/ansible/ansible.cfg
还包含许多其他选项,可以根据需要进行修改。
需要注意的是,/etc/ansible/ansible.cfg
是全局配置文件,会影响所有的 Ansible 操作。