一、ansible免密登录批量设置
1、首先在ansible执行节点生成秘钥,哪个用户用,就用哪个生成
ssh-keygen -t rsa
2、在/etc/ansible/hosts文件中写入主机组
[ssh]
192.168.0.[10:50]
192.168.1.18
...
[ssh:vars]
ansible_ssh_user='用户名'
ansible_ssh_pass='密码'
ansible_ssh_port='远程端口号'
ansible_sudo_pass='要切换的用户密码' #sudo用户默认使用的root密码
ansible_become='true'
ansible_become_user='切换的用户' #切换的用户
ansible_become_method='sudo' #有俩个模式可选su和sudo,su有报错,网上说是版本问题
ansible_become_pass='密码' #root密码
###
该host文件里写的跳转普通用户后会自动用sudo切换成root用户
###
3、写一个剧本key.yaml
- hosts: ssh
tasks:
- name: Nonsecret authentication
authorized_key: user=用户名 key="{{ lookup('file','家目录/.ssh/id_rsa.pub')}}" state=present
4、ansible-playbook key.yaml 执行即可
###
可能中间有重复验证的地方,但是这样全程操作下来,进行ansible管理我这边是没有问题的
###
ansible-playbook --syntax-check
二、简单的剧本编写
#图片来自大佬
例:
- hosts: ssh
tasks:
- copy: src=本机路径 dest=ssh主机组中的路径
- shell: shell语言
###
据大佬推荐尽量少用shell模块。我个人暂时没有发现槽点,所以copy和shell模块暂时是常用的
###
###
可能的报错补充:
如果ansible的管理机器从未登录过被管理机器,那么中间会弹出一个是否永久保存该主机信息到本地已知主机中。(瞎翻译的。。,大致应该就是这个意思)
vi /etc/ansible/ansible.cfg
[defaults]
forks = 8 #执行时并发数
host_key_checking = False #不检测host key 关键是这个,加了之后可以跳过上边的那个描述验证,加完重新执行即可。有可能你的ansible.cfg文件是个空文件,那么一定记得加[defaults]这个模块,然后在模块下写。不然会报错。
###
三、ansible基本命令选项
ansible <host-pattern> [-m module_name] [-a args]
ansible +被管理的主机(ALL) +模块 +参数
--help 显示帮助
--version 显示版本
-m module 指定模块,默认为command
-v 详细过程 –vv -vvv更详细
--list-hosts 显示主机列表,可简写 --list
-k, --ask-pass 提示输入ssh连接密码,默认Key验证
-C, --check 检查,并不执行
-T, --timeout=TIMEOUT 执行命令的超时时间,默认10s
-u, --user=REMOTE_USER 执行远程执行的用户
-b, --become 代替旧版的sudo切换
--become-user=USERNAME 指定sudo的runas用户,默认为root
-K, --ask-become-pass 提示输入sudo时的口令
四、ansible并行跑
修改改参数即可,但是会增加主服务器的负担
在playbook中,可以加这个参数进行修改
补充:ansible yum安装
#需要先装一个扩展源,不然没有这个包
yum install -y epel-release
yum -y install ansible