一、下载ansible

1、下载依赖 ,且ansible依赖于python 要确保机器上有python存在

yum install epel-release 

2、下载ansible

yum install ansible -y

二、编辑ansible免密登录

(1)、首先关闭公钥认证 

  如果不想关闭公钥认证的话,可以用ssh-keycan 命令将公钥添加到本地的known_hosts文件里面去
具体命令是ssh-keyscan IP1 (IP2 ...) >> /root/.ssh/known_hosts 可以添加多个。

两种方法:

1、编辑ansible.cfg文件

vim /etc/ansible/ansible.cfg

添加
[defaults]
host_key_checking = False (存在,去除注释即可)

2、编辑环境变量 

export ANSIBLE_HOST_KEY_CHECKING=False

(2)使用ssh-key产生公钥和私钥

[root@localhost ~]# ssh-keygen -t rsa -b 2048 -P '' -f /root/.ssh/id_rsa

(3)添加主机信息到hosts文件中

[root@localhost ~]# cd /etc/ansible/
[root@localhost ansible]# vim hosts
[db]
192.168.10.11 ansible_ssh_user='root' ansible_ssh_pass='123456'
192.168.10.12 ansible_ssh_user='root' ansible_ssh_pass='123456'

(4)编写Playbook剧本文件

[root@localhost ansible]# cat ssh.yml
---
- hosts: all
  gather_facts: no

  tasks:
  - name: install ssh key
    authorized_key: user=root
                    key="{{ lookup('file','/root/.ssh/id_rsa.pub')}}"
                    state=present

(5)运行playbook文件

[root@localhost ansible]# ansible-playbook -i hosts ssh.yml

PLAY [all] ********************************************************************************************************************************

TASK [install ssh key] ********************************************************************************************************************
ok: [192.168.10.11]
ok: [192.168.10.12]

PLAY RECAP ********************************************************************************************************************************
192.168.10.11              : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.10.12              : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

(6)测试

[root@localhost ansible]# ssh root@192.168.10.11
Last login: Tue May 25 18:44:30 2021 from 192.168.10.10
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:1c:22:c6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.11/24 brd 192.168.10.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::f2c9:b6da:74ff:94cb/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐