安装 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

  1. 更新系统
    VPS - tiaoban192.168.31.33)上执行以下命令更新系统软件包:
sudo dnf update -y
  1. 安装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免密登录

  1. 在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
  1. 编写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 信息以及配置互相之间免密登录。

posted @ 2025-06-20 22:56  弗拉宾教头  阅读(75)  评论(0)    收藏  举报