参考网站:
Ansible中文权威指南
Ansible Documentation
中文的方便阅读,但是有些语法已经过时,最好是主要看英文,中文做参考。另外,本文不是教程,基本上摘抄文档,因本人水平有限,有不明白之处,评论或私信或自行百度。
Ansible是什么,简单地说是用python编写的一款自动化运维的软件。
其他的东西就不过多的描述了,本文主要记录的是学习过程的体会和收获。
博主学习的目的主要是为了批量部署zabbix,查了很多资料发现ansible这个东西,因为资料的非普适性,我觉得自行学习,以后更多的任务场景也能用到。
安装,简单粗暴两条命令:
yum install epel-release
yum install ansible
安装好之后,在/etc/ansible/hosts
文件中写入多个host,可以用IP或者主机名(前提是宿主机要能解析到)。例如
192.168.1.50
aserver.example.org
bserver.example.org
详细的配置在后面介绍。此处为了方便ssh的连接,避免重复输入ssh key,可以这么操作:
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa
(根据你的建立方式,你也许希望使用Ansible的 –private-key 选项,通过指定pem文件来代替SSH Key来授权)
现在可以输入第一条命令,ping你的所有节点:
ansible all -m ping
Ansible会像SSH那样试图用你的当前用户名来连接你的远程机器.要覆写远程用户名,只需使用-u
参数. 如果你想访问 sudo模式,这里也有标识(flags)来实现:
## as bruce
$ ansible all -m ping -u bruce
## as bruce, sudoing to root
$ ansible all -m ping -u bruce --sudo
## as bruce, sudoing to batman
$ ansible all -m ping -u bruce --sudo --sudo-user batman
(如果你碰巧想要使用其他sudo的实现方式,你可以通过修改Ansible的配置文件来实现.也可以通过传递标识给sudo(如-H)来设置.)
也可以试试这个命令 :
$ ansible all -a "/bin/echo hello"
以上就是ansible的基本入门,后面将会慢慢展开学习内容。
Ansible1.2.1及其之后的版本都会默认启用公钥认证.
如果有个主机重新安装并在“known_hosts”中有了不同的key,这会提示一个错误信息直到被纠正为止.在使用Ansible时,你可能不想遇到这样的情况:如果有个主机没有在“known_hosts”中被初始化将会导致在交互使用Ansible或定时执行Ansible时对key信息的确认提示.
如果你想禁用此项行为并明白其含义,你能够通过编辑 /etc/ansible/ansible.cfg
or ~/.ansible.cfg
来实现:
[defaults]
host_key_checking = False
或者你也可以通过设置环境变量来实现:
$ export ANSIBLE_HOST_KEY_CHECKING=False
同样注意在paramiko 模式中 公钥认证 相当的慢.因此,当使用这项特性时,切换至’SSH’是推荐做法.
Ansible将会对远程系统模块参数记录在远程的syslog中,除非一个任务或者play被标记了“no_log: True”属性,稍后解释. 在主控机上启用基本的日志功能参见 Ansible的配置文件 文档 并 在配置文件中设置’log_path’.企业用户可能也对 Ansible Tower 感兴趣.
塔提供了非常实用数据库日志.它使一次次向下钻取并查看基于主机,项目,和特定的结果集成为可能———— 同时提供了图形和 RESTful API.