简介
Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。
它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端。
它使用SSH来和节点进行通信。Ansible基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令执行操作。
中文文档
总体介绍 — 国内最专业的Ansible中文官方学习手册https://ansible-tran.readthedocs.io/en/latest/docs/intro.html
安装
pip install ansible
使用之前确认ssh是否可用
inventory 文件配置(主机清单)
配置文件用来配置服务器地址,用来管理多台机器。默认的文件配置地址:
/etc/ansible/hosts 没有就创建目录和hosts文件
配置文件
1. 基于端口,用户,密码定义主机清单
格式:
ansible基于ssh连接-i (inventory)参数后指定的远程主机时,也可以写端口,用户,密码。
如:
[test]
192.168.0.1 ansible_user=user ansible_ssh_pass=pass
[test]是分组名 ansible_ssh_port: 指定ssh端口 ansible_ssh_user:指定 ssh 用户 ansible_ssh_pass: 指定 ssh 用户登录是认证密码(明文密码不安全) ansible_sudo_pass: 指明 sudo 时候的密码,另外 pass要是字符串 即‘pass’,不知是不是只有我有这个问题,别的一些教程都直接写密码,直接写密码我报错没权限。
在macOS下使用ansible命令(inventory文件中使用了密码验证的方式)或者使用iTerm2来完成自动密码填充等场景会使用到sshpass。
安装sshpass
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
如果报错:Non-checksummed download of sshpass formula file from an arbitrary URL is unsupported! `brew extract` or `brew create` and `brew tap-new` to create a formula file in a tap on GitHub instead.
手动下载后再安装
wget https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
brew install sshpass.rb
ps: 这么操作如果还不行,就直接访问https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
这个链接内容拷贝到本地sshpass.rb中,然后执行
brew install sshpass.rb
执行命令:ansible test -m ping
如果不成功可以通过命令:ansible test -m ping -vvv 来查看具体错误信息
2. 基于ssh密钥来访问定义主机清单
设置密钥 命令行: ssh-keygen
拷贝密钥: ssh-copy-id root@192.168.0.1
测试: ssh 192.168.0.1
修改host,此时只用ip就可以
ps:不知是不是因为我使用的ubuntu用户,这么测试必须是 ssh ubuntu@192.168.0.1才可以通,在ansible test -m ping 时候也只有第一种成功。时间关系 并没有耗费太多时间在第二种方法上,但是通过其他成功案例来看,通过ssh是最方便安全的,第一种毕竟暴露了明文密码,还是有安全方便的风险。