SSH、Ansible,批量管理服务项目
1,下载ansible
yum install ansible
2,修改模块下面的机器并配置用户密码
cat >/etc/ansible/hosts<<EOF
[lb]
10.0.0.5
10.0.0.6
[web]
10.0.0.7
10.0.0.8
[nfs]
10.0.0.31
[backup]
10.0.0.41
[mysql]
10.0.0.51
[password]
10.0.0.5 ansible_ssh_user=root ansible_ssh_pass=123456
10.0.0.6 ansible_ssh_user=root ansible_ssh_pass=123456
10.0.0.7 ansible_ssh_user=root ansible_ssh_pass=123456
10.0.0.8 ansible_ssh_user=root ansible_ssh_pass=123456
10.0.0.31 ansible_ssh_user=root ansible_ssh_pass=123456
10.0.0.41 ansible_ssh_user=root ansible_ssh_pass=123456
EOF
3.关闭公钥认证的方法
#[defaults]
host_key_checking = False
#直接设置环境变量
命令为:
export ANSIBLE_HOST_KEY_CHECKING=False
4,解除yes/no 实现免密登录
方法1:修改 /etc/ansible/ansible.cfg中的374行
369 [ssh_connection]
370
371 # ssh arguments to use
372 # Leaving off ControlPersist will result in poor performance, so use
373 # paramiko on older platforms rather than removing it, -C controls compression use
374 #ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s
374行改为:
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no
方法2:修改 /etc/ansible/ansible.cfg中的71行
70 # uncomment this to disable SSH key host checking
71 #host_key_checking = False
71行的注释取消:host_key_checking = False
打开/etc/ssh/ssh_config,修改以下配置项
vi /etc/ssh/ssh_config
# StrictHostKeyChecking ask
StrictHostKeyChecking no
5,分发秘钥给各个服务器
#!/bin/bash
ssh-keygen -f ~/.ssh/id_rsa -P '' -q
for ip in 5 6 7 8 9 10 31 41 51
do
sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 172.16.1.$ip
done
6,创建一个存放剧本的目录
mkdir -p /etc/ansible/yaml
进行优化
(1)
在ansible.cfg配置文件中的[defaults ]下添加
callback_whitelist = profile_tasks
参数就可以调用时间插件。
(2)
关闭 gathering facts
在 playbook 文件中加上“gather_facts: no”
---
- hosts: 172.16.64.240
gather_facts: no
(3)
SSH pipelining 是一个加速 Ansible 执行速度的简单方法。
ssh pipelining 默认是关闭,
398 #pipelining = False
修改 /etc/ansible/ansible.cfg 文件可以开启 pipelining
将
pipelining=False
修改为
pipelining=True
修改完后,可以批量对机器执行命令试下,可以明显感受到速度的提升。