Ansible批量配置服务器免密登录步骤详解

一、准备工作

192.168.85.138 安装ansible,计划配置到139的免密

192.168.85.139 待配置免密

1. 生成SSH密钥对

在Ansible控制节点生成密钥对,用于后续免密认证:

复制代码
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

全部回车默认,无需设置密码

2. 配置Ansible环境

关闭Host Key检查:修改`/etc/ansible/ansible.cfg` 文件,避免首次连接提示确认:

复制代码
 [defaults]
  host_key_checking = False

3,配置Hosts文件

/etc/ansible/hosts中定义目标主机及连接参数:

复制代码
[web_servers]
192.168.85.139 ansible_ssh_user=root ansible_ssh_pass=123456

ansible_ssh_pass=123456: 这个123456就是139的root的登录密码,按需配置即可

4,写一个免密用的yml文件,ssh_key.yml:

复制代码
- hosts: web_servers
  gather_facts: no
  tasks:
    - name: Deploy SSH public key
      authorized_key:
        user: root
        key: "{{ lookup('file', '~/.ssh/id_rsa.pub')  }}"
        state: present

5,执行这个文件:

复制代码
ansible-playbook  ssh_key.yml

6,检查是否配置成功:

复制代码
ansible web_servers -m ping

如果看到上诉内容即为免密配置成功。

7,为多用户配置免密:

复制代码
- hosts: all
  vars:
    users:
      - name: admin
        key: "{{ lookup('file', '~/.ssh/admin.pub')  }}"
      - name: deploy
        key: "{{ lookup('file', '~/.ssh/deploy.pub')  }}"
  tasks:
    - name: Add SSH keys for multiple users
      authorized_key:
        user: "{{ item.name  }}"
        key: "{{ item.key  }}"
      loop: "{{ users }}"

8,Ansible指定hosts文件

Ansible通过**主机清单(Inventory)**管理目标服务器,其默认路径为/etc/ansible/hosts。但在实际应用中,常需根据项目需求指定不同的hosts文件。以下是2种常用方法及具体操作示例:

1、通过命令行参数-i即时指定(推荐)

适用场景 :临时使用特定主机清单文件,灵活性最高。
操作方法 :在ansibleansible-playbook命令中通过-i参数指定路径。 bashbash

单文件指定:

ansible all -i /path/custom_hosts -m ping

目录指定:(自动合并目录下所有文件)

ansible-playbook -i inventory/prod/ playbook.yml

2,通过ansible.cfg 配置文件指定(改了之后就永久生效了)

ansible.cfg 配置文件中,通过inventory参数指定hosts文件路径。ansible.cfg 文件路径查找顺序为:

  1. 环境变量ANSIBLE_CONFIG指向的配置文件。例如,执行export ANSIBLE_CONFIG=/PATH./ansible.cfg ,则优先使用该路径下的ansible.cfg

  2. 当前目录下的ansible.cfg 配置文件。

  3. 当前用户home目录下的.ansible.cfg 配置文件。

  4. 用软件包管理工具安装Ansible时自动生成的配置文件/etc/ansible/ansible.cfg

ansible.cfg 文件中设置inventory参数示例:

复制代码
[defaults] 
inventory = /path/to/your/hosts_file 
相关推荐
Fcy6483 分钟前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满4 分钟前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠25 分钟前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey90336 分钟前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
学电子她就能回来吗1 小时前
深度学习速成:损失函数与反向传播
人工智能·深度学习·学习·计算机视觉·github
珠海西格电力科技2 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀2 小时前
Linux环境变量
linux·运维·服务器
zzzsde2 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º4 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~4 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化