一、准备工作
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_serversgather_facts: notasks:- name: Deploy SSH public keyauthorized_key:user: rootkey: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"state: present
5,执行这个文件:
ansible-playbook ssh_key.yml
6,检查是否配置成功:
ansible web_servers -m ping
如果看到上诉内容即为免密配置成功。
7,为多用户配置免密:
- hosts: allvars:users:- name: adminkey: "{{ lookup('file', '~/.ssh/admin.pub') }}"- name: deploykey: "{{ lookup('file', '~/.ssh/deploy.pub') }}"tasks:- name: Add SSH keys for multiple usersauthorized_key:user: "{{ item.name }}"key: "{{ item.key }}"loop: "{{ users }}"
8,Ansible指定hosts文件
Ansible通过**主机清单(Inventory)**管理目标服务器,其默认路径为/etc/ansible/hosts
。但在实际应用中,常需根据项目需求指定不同的hosts文件。以下是2种常用方法及具体操作示例:
1、通过命令行参数-i
即时指定(推荐)
适用场景:临时使用特定主机清单文件,灵活性最高。
操作方法:在ansible
或ansible-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
文件路径查找顺序为:
-
环境变量
ANSIBLE_CONFIG
指向的配置文件。例如,执行export ANSIBLE_CONFIG=/PATH./ansible.cfg
,则优先使用该路径下的ansible.cfg
。 -
当前目录下的
ansible.cfg
配置文件。 -
当前用户home目录下的
.ansible.cfg
配置文件。 -
用软件包管理工具安装Ansible时自动生成的配置文件
/etc/ansible/ansible.cfg
。
在ansible.cfg
文件中设置inventory
参数示例:
[defaults]
inventory = /path/to/your/hosts_file