入门¶
- 假设你已经阅读了 安装指南 安装好了管理节点并且了解了 Ansible 是如何工作的,那么你可以开始基本的Ansbile 入门操作了:
- 从 inventory 仓库中选择要执行命令的对象
- 连接测试这些节点 ( 或者网络设备,或者其它受控节点)connects to those machines (or network devices, or other managed nodes)。 通常使用 SSH 的方式
- 复制一个或多个模块到远程计算机并尝试执行
Ansible 的实际功能更强大,但开始之前你需要了解他的基础用法才能发掘其它更强大的功能,比如配置、部署、编排等。本页内容会通过简单的 Inventory 配置和 ad-hoc 命令来演示其基本用法。inventory 参考: inventory, 更充分了解 Ansible 点击这里 playbooks.
选择指定机器执行¶
Ansible 是通过读取 Inventory 中的配置知道我们要对哪些机器变更。 虽然你可以在命令行使用 ad-hoc 临时命令时指定 IP 地址的方式来控制要操作的对象,但如果想充分使用 Ansible 的灵活性和或扩展性,你必须掌握 Inventory 的配置
行动: 创建基础清单¶
创建 /etc/ansible/hosts
并添加一些主机列表. 使用 IP 地址或者主机名均可:
192.0.2.50
aserver.example.org
bserver.example.org
基础进阶¶
Inventory 不权可以存放 IPs 和主机名. 也可以创建别名,点击查看 aliases, set variable values for a single host with host vars, or set variable values for multiple hosts with group vars.
连接远程受控节点¶
Ansible 和远程主机的通信是通过 SSH protocol. 默认 Ansible 使用开源软件 OpenSSh 通过当前用户连接远程主机。
行动: 检查 SSH 连接¶
确认通过相同的用户可以连接到所有的受控节点,有必要的话,你可以手动添加公钥到对应主机的``authorized_keys`` 。
基础进阶¶
- 有如下几种方式指定用户连接远程受控节点:
- 在命令行使用
-u
指定用户 - 在 Inventory 是指定连接用户
- 在配置文件中设置连接用户
- 设置环境变量
- 在命令行使用
点击 Controlling how Ansible behaves: precedence rules 查看优化级管理规则。 connection 连接模块,查看更多请点击 Connection methods and details.
复制和执行模块¶
一旦建立连接后, Ansible 会将命令或者 playbook 剧本需要的模块传输到远程主机后,在远程主机上执行命令。
行动: Ansible 初体验¶
使用 ping 模块测试主机存活
$ ansible all -m ping
在所有节点上执行一条实时命令:
$ ansible all -a "/bin/echo hello"
你运行命令的每台主机应该有类似如下的输出:
aserver.example.org | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
基础进阶¶
Ansbile 默认使用 sftp 传输文件。 如果受控节点不支持 SFTP ,你可以根据文档 配置 Ansible 切换成成 SCP 模式。这些文件会临时存放在指定目录下,并在该目录执行这些文件。
如果需要超级权限或者特殊权限,类似 sudo , 使用 become
参数指定:
# as bruce
$ ansible all -m ping -u bruce
# as bruce, sudoing to root (sudo is default method)
$ ansible all -m ping -u bruce --become
# as bruce, sudoing to batman
$ ansible all -m ping -u bruce --become --become-user batman
更新请参考 in Understanding privilege escalation: become.
恭喜! 你已经使用 Ansible 打通了所有的主机的奇经八脉。您使用了一个基本清单文件和一个 ad-hoc 临时命令来操作 Ansible 连接到特定的远程节点,并在这个过程中复制模块文件然后执行它,最后返回输出。 您已经拥有一个可以正常运行的 Ansible 基础架构了。
接下来¶
接下来,你可以了解更多关于 ad-hoc 的使用 ad-hoc 命令操作指引, 探索更多其它模块,更多请参考 Working With Playbooks . Ansible不仅能运行命令,还包括强大的配置管理和部署功能。
参见
- Inventory 使用进阶
- inventory 详解
- ad-hoc 命令操作指引
- 基础命令示范案例
- Working With Playbooks
- 深入学习 Ansible 配置管理
- Mailing List
- Questions? Help? Ideas? Stop by the list on Google Groups
- irc.freenode.net
- #ansible IRC chat channel