http://docs.ansible.com/ansible/html
https://galaxy.ansible.com/python
Ansible是一个IT自动化工具。 它能够配置系统,部署软件,并编排更先进的IT任务,如持续部署或零停机滚动更新。git
Ansible的主要目标是简单易用。 它还强调了安全性和可靠性,具备最少的移动部件,用OpenSSH来传输(使用加速socket模式和pull模式做为替代方案)github
是一种针对人们的可审计性设计的语言 - 甚至这些人都不熟悉项目。数据库
咱们认为简单性与各类规模的环境相关,所以咱们为全部类型的繁忙用户设计:开发人员,系统管理员,发布工程师,IT经理以及二者之间的全部人员。 可适用于管理全部环境,从具备少许实例的小型设置到具备数千个实例的企业环境。安全
能够无代理的方式管理机器。 历来没有一个问题,如何升级远程守护程序或没法管理系统的问题,由于守护程序被卸载。 因为OpenSSH是同行评议的开源组件之一,安全性大大下降。 可解密是分散的 - 它依赖于您现有的操做系统凭据来控制对远程机器的访问。 若是须要,Ansible能够轻松链接到Kerberos,LDAP和其余集中式身份验证管理系统。bash
源代码:https://github.com/ansible/ansible/服务器
安装ssh
安装扩展源 http://fedoraproject.org/wiki/EPELsocket
yum install ansible
咱们首先显示的不是“可配置”的强大的配置/部署/编排功能。 这些功能是由单独的部分所涵盖的playbooks来处理的。
在开始以前,了解Ansible如何经过SSH与远程机器通讯很是重要。
默认状况下,Ansense 1.3及更高版本将尽量使用本机OpenSSH进行远程通讯。 这启用了ControlPersist(性能特征),Kerberos以及~/.ssh/config
选项,例如Jump Host设置。 可是,当使用Enterprise Linux 6操做系统做为控制机器(Red Hat Enterprise Linux和衍生产品如CentOS)时,OpenSSH版本可能太旧,没法支持ControlPersist。 在这些操做系统上,Ansible将会使用一个名为“paramiko”的OpenSSH的高质量Python实现。 若是您但愿使用Kerberized SSH等功能,请考虑使用Fedora,OS X或Ubuntu做为控制台,直到您的平台可使用较新版本的OpenSSH,或者在Ansible中加入“加速模式”。 见加速模式 。
在最新版本中,包括Ansible 1.2版本,默认是paramiko。 必须使用-c
ssh选项或配置文件中设置本地SSH。
偶尔会遇到不支持SFTP的设备。 这是罕见的,但若是发生,您能够在配置文件中切换到SCP模式。
虽然这多是常识,但值得分享:任何管理系统受益于在被管理的机器附近运行。 若是您在云中运行可执行文件,请考虑从云内的计算机运行它。 在大多数状况下,这将比在互联网上更好。
做为高级主题,Ansible不只须要经过SSH远程链接。 运输是可插拔的,而且有用于在本地管理某些东西以及管理chroot,lxc和jail容器的选项。 一种叫作“ansible-pull”的模式也能够经过预约的git检查来反转系统并经过系统“电话回家”来从中央存储库中提取配置指令。
如今你已经安装了Ansible,如今该开始一些基础了。
编辑(或建立) /etc/ansible/hosts
并将一个或多个远程系统放在其中。 您的公共SSH密钥应位于这些系统上的authorized_keys
中:
192.0.2.50
aserver.example.org bserver.example.org
这是一个inventory文件,这里还有更详细的说明: inventory 。
咱们假设您正在使用SSH密钥进行身份验证。 要设置SSH代理以免从新输入密码,您能够执行如下操做:
$ ssh-agent bash
$ ssh-add〜/ .ssh / id_rsa
(根据您的设置,您可能但愿使用Ansible的 - --private-key
选项来指定pem文件)
如今ping全部节点:
$ ansible all -m ping
可能会尝试使用您当前的用户名远程链接到计算机,就像SSH同样。 要覆盖远程用户名,只需使用'-u'参数便可。
若是你想访问sudo模式,还有标志:
# 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 # With latest version of ansible `sudo` is deprecated so use become # as bruce, sudoing to root $ ansible all -m ping -u bruce -b # as bruce, sudoing to batman $ ansible all -m ping -u bruce -b --become-user batman
(若是您想要使用sudo替换,则能够在Ansible的配置文件中更改sudo实现。传递给sudo(如-H)的标志也能够设置在那里。)
恭喜! 您已经使用Ansible联系了您的节点。 如今很快就要到:阅读关于Introduction To Ad-Hoc Commands更多的真实案例,探索您能够对不一样的模块作些什么,并了解可用的Playbook语言。 可Ansible不只仅是运行命令,还具备强大的配置管理和部署功能。 还有更多的探索,但你已经有一个彻底工做的基础设施!
[root@mhc ~]# ansible all -a "/bin/echo hello"
109.105.4.65 | SUCCESS | rc=0 >>
hello
提示
运行命令时,可使用“localhost”或“127.0.0.1”做为服务器名称来指定本地服务器。
例:
$ ansible localhost -m ping -e'ansible_python_interpreter =“/ usr / bin / env python”'
您能够经过将其添加到清单文件中来明确指定localhost:
localhost ansible_connection = local ansible_python_interpreter =“/ usr / bin / env python”
可选1.2.1及更高版本默认启用主机密钥检查。
若是主机被从新安装,而且在'known_hosts'中有一个不一样的密钥,这将致使错误消息,直到更正。 若是一个主机不是最初在'known_hosts',这将致使提示确认密钥,这将致使交互式体验,若是使用Ansible,从cron。 你可能不想要这个。
若是您了解这些含义并但愿禁用此行为,能够经过编辑/etc/ansible/ansible.cfg
或~/.ansible.cfg
:
[ 默认值 ] host_key_checking = False
或者,这能够由环境变量设置:
$ export ANSIBLE_HOST_KEY_CHECKING = False
另请注意,paramiko模式的主机密钥检查速度至关慢,所以在使用此功能时也建议切换到“ssh”。
Ansible将在远程系统日志的远程系统上记录有关模块参数的一些信息,除非任务或播放标有“no_log:True”属性。 这将在后面解释。
要在控制机器上启用基本日志记录,请参阅配置文件文档并设置“log_path”配置文件设置。 企业用户也可能对安全塔感兴趣。 Tower提供了一个很是强大的数据库日志记录功能,能够根据主机,项目和特定库存查看历史记录,并以图形方式和REST API进行探索。