1. 简介
Ansible是一款非常出色的自动化配置管理工具,由Python语言开发,基于SSH协议实现对远程Linux主机的管理,相对于salt而言ansible不需要安装额外的agent,拥有丰富的模块,配合Playbook、Roles使用非常灵活、方便。
2. 安装
Ansible支持多种安装方式,下面是两个示例:
- 基于yum
yum install ansible
- 基于pip
pip install ansible
3. 配置文件
基于yum的安装方式,可以到/etc/ansible/ansible.cfg找到配置文件,如果是基于pip安装的,默认是没有配置文件的,可以到github上查看ansible.cfg配置文件。常用的配置如下:
inventory 定义主机资源清单
forks 定义工作进程的数,默认5个
sudo_user 默认执行命令的用户
host_key_checking 是否检查ssh主机的指纹,可以设置为False
4. 指纹检查
如何处理主机指纹检查的问题
- 通过配置禁用检查指纹
host_key_checking = False
或
export ANSIBLE_HOST_KEY_CHECKING=False
- 通过ssh-keyscan将指纹写到known_hosts文件中
ssh-keyscan 192.168.44.144 >> ~/.ssh/known_hosts # 多个主机可以用","分隔
或从文件中读取主机列表,hosts文件的格式:每行一个ip即可
ssh-keyscan -f hosts >> ~/.ssh/known_hosts
5. 密钥认证
可以先利用ssh-keygen生成密钥,然后将公钥id_rsa.pub写入目标主机的~/.ssh/authorized_keys文件中,注意文件权限为:600
- 可以利用ssh-copy-id,如果节点比较多这种方式不是很可取
ssh-copy-id username@target_host
- 利用expect自动应答机制实现
expect + ssh-copy-id
- 利用ansible的authorized_key模块
ansible-doc authorized_key
6. ping
- 主机清单
# cat hosts
[master]
192.168.44.141
- 执行命令
# ansible all -i hosts -m ping
192.168.44.141 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}