Contents
  1. 1. 远程连接信息
  2. 2. 第一个命令
  3. 3. 主机Key检查

远程连接信息

了解ansible如何通过ssh与远程主机通信是很重要的。

ansible 1.3和之后版本会默认使用openssh,以支持ControlPersistKerberos~/.ssh/config配置。在一些较老的版本中,如RH/CentOS较早版本时,openssh版本可能太老而不支持部分以上特性,此时ansible会使用pythonOpenSSH实现paramiko。如果需要Kerberized ssh,建议使用ubuntufedoraopenssh版本较新的发行版。
而<=1.2的版本中,默认为paramiko,使用-c选项切换到nativessh.
有很小的可能会遇到不支持SFTP的情况,此时可以在配置文件中切换到SCP
与远程主机通信时,默认使用ssh key,也可以通过-k选项来使用密码,如果需要sudo特性且sudo要求密码时,可使用--ask-become-pass
也许是常识:控制主机离被控制集群越近,执行速度越快,因此尽量选用较近的主机。
ansible也并不一定要使用ssh,传输方式是插件式的,支持本地管理方式、chroot,lxcjail containers, ansible-pull模式能够按日程从中央git服务器中pull指令。

第一个命令

1
ansible all -m ping -u root -b

-b是指使用sudo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
chen@vaio:/data$ ansible all -m ping -u root -b
c1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
c3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
c2 | UNREACHABLE! => {
"changed": false,
"msg": "SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue",
"unreachable": true
}

现在来执行一个live的命令

1
ansible all -a "echo hello" -u root

1
2
3
4
5
6
7
8
9
10
11
12
chen@vaio:/data$ ansible all -a "echo hello" -u root -b
c1 | SUCCESS | rc=0 >>
hello
c3 | SUCCESS | rc=0 >>
hello
c2 | UNREACHABLE! => {
"changed": false,
"msg": "SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue",
"unreachable": true
}

好的,你已经学会与远程主机通信了。现在可以去阅读一些为特定场景设计的命令,以了解ansible可以为你做些什么,然后学习一些ansible playbook的语法。

主机Key检查

ansible 1.2以上的版本会自动检测主机key。如果主机重装后Keyknown_hosts中不同,那么就会报错。对于不在known_hosts中的主机则会提示确认key,从而变成交互式的操作。也许你不想变成这样,如果你确认懂得以下操作的风险,你可以在配置文件/etc/ansible/ansible.cfg./.ansible.cfg中修改.

1
2
[defaults]
host_key_checking = False

也可能通过环境变量

1
export ANSIBLE_HOST_KEY_CHECKING=False

另外主机Key确认在paramiko中有些慢,此时推荐切换到ssh方式。

ansible会在远程主机的syslog上一些模块参数。除非task或者playno_log标签。

如要打开本地日志功能,参见Configuration file log_path 配置设置。

Contents
  1. 1. 远程连接信息
  2. 2. 第一个命令
  3. 3. 主机Key检查