1.4 Ansible 简单使用

在开始之前,了解Ansible如何通过SSH与远程机器通信非常重要。

默认情况下,如果可能,Ansible将尝试使用本机OpenSSH进行远程通信。 这支持 ControlPersist (性能特性)、Kerberos和 ~/.ssh/config,例如跳转主机设置。

然而,当使用 RHEL 6 操作系统作为控制机器时,OpenSSH版本可能太旧,不支持ControlPersist。在这些操作系统上,Ansible 将退回到使用OpenSSH的高质量Python实现“paramiko”。如果希望使用 kerberized SSH等特性,可以考虑使用Fedora、macOS或Ubuntu作为控制机器,直到平台上有了新的OpenSSH版本。

偶尔您会遇到不支持SFTP的设备。这很少见,但是如果发生这种情况,您可以在配置Ansible时切换到SCP模式。

在与远程机器对话时,默认情况下,Ansible 假定您使用 SSH 密钥。鼓励使用SSH密钥,但是也可以在需要时使用密码身份验证,方法是提供一个选项 --ask-pass。如果使用 sudo 特性,并且当sudo需要密码时,还要提供 --ask-become-pass。

第一条命令

现在可以使用一些简单和基本的例子。

首先,编辑或者创建 /etc/ansible/hosts 文件,用来存放远程主机的信息。你的公钥应该在这些机器的 authorized_keys 。

192.0.2.50
aserver.example.org
bserver.example.org

这是一个变量文件,现在来 ping 所有的节点。

$ ansible all -m ping

Ansible将尝试使用当前用户名远程连接到计算机,就像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

现在可以运行一个

$ ansible all -a "/bin/echo hello"

默认情况下,Ansible启用了主机密钥检查。 如果重新安装了一台主机,并且在' known_hosts '中有一个不同的键,这将导致一条错误消息,直到更正为止。如果主机最初不在' known_hosts '中,这将导致提示确认密钥,如果使用例如 cron 之类的工具来使用 Ansible,则会产生不好的交互体验。如果不需要该功能,且希望禁用此行为,您可以通过编辑/etc/ansible/ansible.cfg或~/.ansible.cfg来实现:

[defaults]
host_key_checking = False

results matching ""

    No results matching ""