前言
既然你已经读了安装指南安装了 Ansible,是时候开始使用一些临时命令了。
我们首先展示的不是 Ansible 强大的配置/部署/编排功能。这些特性是由一个单独的章节所涵盖的剧本来处理的。
本节是关于如何使 Ansible 开始运行。一旦您理解了这些概念,请阅读 ad-hoc 命令简介关于更多的细节,然后您将准备开始学习有关剧本和探索最有趣的部分!
远程连接信息
在我们开始之前,了解 Ansible 如何通过 SSH 与远程计算机进行通信是很重要的。
默认情况下,Ansible 将尝试在可能的情况下使用本机 OpenSSH 进行远程通信。这使 ControlPersio(性能特性)、Kerberos 和选项在 ~/.ssh/config
例如跳转主机设置。但是,当使用 EnterpriseLinux 6 操作系统作为控制机器(RedHatEnterpriseLinux 和 CentOS 等衍生产品)时,OpenSSH 的版本可能太老,无法支持 ControlPersio。在这些操作系统上,Ansible 将退回到使用高质量的 Python 实现 OpenSSH,称为“paramiko”。如果您希望使用 KerberizedSSH 等特性,请考虑使用 Fedora、OSX 或 Ubuntu 作为您的控制机器,直到您的平台可以使用更新版本的 OpenSSH 为止。
偶尔会遇到不支持 SFTP 的设备。这是很少见的,但是如果发生这种情况,您可以切换到 scp 模式。配置可测性.
在使用远程机器时,Ansible 默认假定您使用的是 SSH 键。鼓励使用 SSH 密钥,但在需要时也可以通过提供该选项来使用密码身份验证。--ask-pass
。如果使用 sudo 特性和 sudo 需要密码时,也可以提供 --ask-become-pass
(以前 --ask-sudo-pass
已经被否决了)。
注:
Ansible 不公开允许用户和 ssh 进程之间通信的通道,以便在使用 ssh 连接插件(这是默认的)时手动接受密码来解密 ssh 密钥。使用 ssh-agent
强烈推荐。
虽然这可能是常识,但还是值得分享的:任何管理系统都可以通过在被管理的机器附近运行而受益。如果您在云中运行 Ansible,请考虑从云中的机器上运行它。在大多数情况下,这将比在开放的互联网上工作得更好。
作为一个高级主题,Ansible 不只是需要通过 SSH 远程连接。传输是可插拔的,并且有一些选项可以在本地管理事物,以及管理 chroot、LXC 和监狱容器。一种名为“Anble-Pull”的模式也可以反转系统,并通过计划的 git 签出来从中央存储库中提取配置指令,从而使系统“电话回家”。
你的第一条命令
现在您已经安装了 Ansible,现在是开始学习一些基本知识的时候了。
编辑(或创建)/etc/ansible/hosts
在里面放一个或多个远程系统。您的公共 ssh 密钥应该位于 authorized_keys
关于这些系统:
192.0.2.50
aserver.example.org
bserver.example.org
这是一个库存文件,在这里也有更深入的解释:处理库存.
我们假设您使用 SSH 密钥进行身份验证。若要设置 SSH 代理以避免重新键入密码,请执行以下操作:
$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa
(取决于您的设置,您可能希望使用 Ansible 的 --private-key
选项来指定 pem 文件)
现在,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
(如果您碰巧想使用 sudo 替换,那么 Ansible 的配置文件中的 sudo 实现是可以更改的。传递给 sudo(类似-H)的标志也可以设置在那里。
现在,在所有节点上运行一个实时命令:
$ ansible all -a "/bin/echo hello"
祝贺你!你刚刚和 Ansible 联系了你的节点。很快就要到了:阅读一些更真实的案例 ad-hoc 命令简介,探索使用不同模块可以做什么,并了解 Ansible 使用剧本语言。Ansible 不仅仅是运行命令,它还具有强大的配置管理和部署功能。还有更多需要探索的地方,但是您已经有了一个完全正常工作的基础设施!
小贴士
在运行命令时,可以使用“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"
主机密钥检查
默认情况下,Ansible 启用了主机密钥检查。
如果重新安装了一个主机,并且在‘已知_主机’中有一个不同的键,这将导致一个错误消息,直到更正。如果主机最初不在‘已知_主机’中,这将导致提示确认密钥,如果使用 Ansible,比如 cron,就会产生交互体验。你可能不想要这个。
如果您理解此行为的含义并希望禁用此行为,则可以通过编辑 /etc/ansible/ansible.cfg
或 ~/.ansible.cfg
:
[defaults]
host_key_checking = False
或者,这可以由ANSIBLE_HOST_KEY_CHECKING
环境变量:
$ export ANSIBLE_HOST_KEY_CHECKING=False
还请注意,Paramiko 模式下的主机键检查相当慢,因此在使用此功能时也建议切换到“ssh”。
Ansible 将在远程 syslog 中记录有关远程系统中模块参数的一些信息,除非任务或播放被标记为“no_log:true”属性。这一点将在稍后解释。
若要在控制计算机上启用基本日志记录,请参见配置可测性记录并设置“log_path”配置文件设置。企业用户也可能对可抗塔。Towor 提供了一个非常健壮的数据库日志功能,在这里可以根据主机、项目和特定的库存来深入挖掘和查看历史-无论是图形化还是 RESTAPI 都是可解释的。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于