快速起步
远程连接
从Ansible 1.3开始,默认使用原生的OpenSSH来和远程主机通讯。这种方式回激活ControlPersist(一种性能提升),Kerberos以及在~/.ssh/config中配置的Jump Host等设置。
有关
ControlPersist,请参考ssh多路传输multiplexing加速
然而,在RHEL 6操作系统中,由于OpenSSH版本过于陈旧,可能不支持ControlPersist。在这些操作系统,Ansible将使用名为paramikoPython实现的OpenSSH调用。如果需要实现类似Kerberized SSH等高级功能,考虑使用Fedora, OS X或Ubuntu等使用了新版本OpenSSH的操作系统。
在Ansible 1.2等旧版本,默认使用
paramiko,原生SSH使用是通过-c ssh选项或者配置文件设置。
在远程主机通讯中,Ansible默认假定使用SSH key,可以用--ask-pass参数来使用密码认证方式,但建议使用密钥认证。
第一个命令
编辑(或创建)/etc/ansible/hosts文件来维护远程主机列表。这些系统中应该已经分发了authorized_keys
[exampleserver]
192.168.1.50
aserver.example.org
bserver.example.org这是一个清单文件,详细请参考清单。注意,如果SSH访问主机使用特定身份,则需要再主机名后添加 ansible_user=USERBANE 设置。
为了能够不必每次都输入SSH key的保护密码,需要设置SSH agent:
ssh-agent bash
ssh-add ~/.ssh/id_rsa详细有关ssh密钥技术和ssh agent使用方法,请参考ssh密钥
现在开始测试访问所有的节点
这里
-m ping是使用ansible的SSH机制来测试远程主机的可访问性,并不是使用ping命令
all表示hosts配置中所有主机
返回信息可以看到,ansible是使用ssh作为ping,然后看输出是否正确来显示pong。输出类似
如果要使用指定用户帐号,例如bruce帐号,以及使用bruce用户帐号登录后再sudo成root用户,可以使用
下面我们来测试一个简单的命令,向所有主机发送uname -a指令
主机key检查
Ansible 1.2.1以及更高版本默认启用了主机key检查。如果服务器重新安装,并且在known_hosts文件中有不同的key,就会导致错误消息。
如果希望禁止这个特性,可以在/etc/ansible/ansible.cfg或者~/.ansible.cfg中添加配置
也可以通过设置环境变量来实现:
Last updated
Was this helpful?