安装 Ansible 并配置主机互信及 hosts 信息方案
环境信息
4台主机 rocky9系统
| IP地址 | 主机名 |
|---|---|
| 192.168.31.30 | VPS-k8s-master |
| 192.168.31.31 | VPS-k8s-node01 |
| 192.168.31.32 | VPS-k8s-node02 |
| 192.168.31.33 | VPS-tiaoban |
在VPS-tiaoban上安装ansible将每台主机添加所有hosts信息,并配置互相之间免密登录
一、在VPS - tiaoban上安装Ansible
- 更新系统
在VPS - tiaoban(192.168.31.33)上执行以下命令更新系统软件包:
sudo dnf update -y
- 安装Ansible
添加EPEL软件源,因为Ansible在Rocky Linux 9默认软件源中可能不存在,需要从EPEL获取:
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
安装Ansible:
sudo dnf install -y ansible
二、配置Ansible主机清单
编辑Ansible的主机清单文件,默认路径为 /etc/ansible/hosts,添加如下内容:
[k8s_cluster]
VPS-k8s-master ansible_host=192.168.31.30
VPS-k8s-node01 ansible_host=192.168.31.31
VPS-k8s-node02 ansible_host=192.168.31.32
VPS-tiaoban ansible_host=192.168.31.33
这里定义了一个名为 k8s_cluster 的主机组,包含了所有四台主机,并通过 ansible_host 指定了每台主机对应的IP地址。
三、配置SSH免密登录
- 在VPS - tiaoban上生成SSH密钥对
在VPS - tiaoban上执行以下命令生成SSH密钥对,并将公钥分发给所有主机:
ssh-keygen -t rsa -b 2048 -P '' -f ~/.ssh/id_rsa
#将公钥分发给所有主机
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
- 编写Ansible playbook分发公钥
创建一个名为setup_ssh.yml的Ansible playbook文件,内容如下:
---
- name: Setup SSH key authentication
hosts: k8s_cluster
become: yes
tasks:
- name: Create.ssh directory if not exists
file:
path: ~/.ssh
state: directory
mode: '0700'
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
- name: Copy public key to authorized_keys
authorized_key:
user: "{{ ansible_user }}"
state: present
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
上述playbook首先在每台主机上创建 .ssh 目录(如果不存在),然后将 VPS - tiaoban 上生成的公钥内容添加到每台主机的 authorized_keys 文件中。
执行该playbook:
ansible - playbook setup_ssh.yml
四、使用Ansible添加hosts信息
编写一个Ansible playbook来为每台主机添加完整的 hosts 信息,创建 update_hosts.yml 文件,内容如下:
---
- name: Update /etc/hosts with all hosts information
hosts: k8s_cluster
become: yes
tasks:
- name: Generate hosts content
set_fact:
hosts_content: |
192.168.31.30 VPS-k8s-master
192.168.31.31 VPS-k8s-node01
192.168.31.32 VPS-k8s-node02
192.168.31.33 VPS-tiaoban
- name: Replace /etc/hosts content
lineinfile:
path: /etc/hosts
state: present
line: "{{ item }}"
insertafter: EOF
loop: "{{ hosts_content.split('\n') }}"
when: item!= ''
上述playbook定义了所有主机的 hosts 信息,并将其添加到每台主机的 /etc/hosts 文件末尾。
执行该playbook:
ansible - playbook update_hosts.yml
通过以上步骤,你可以在 VPS - tiaoban 上安装Ansible,并使用它完成每台主机添加所有 hosts 信息以及配置互相之间免密登录。

浙公网安备 33010602011771号