管理机:安装或者部署了Ansible的服务器(目前管理节点不支持windows系统)
受控节点:Ansible管理的服务器或者网络设备,也叫作"hosts",受控节点不需要安装Ansible
Inventory仓库:Inventory仓库是保存受控节点信息的列表,也叫作"hostfile",Inventory 仓库可以以 IP 的方式指定受控节点。 Inventory 同样可以组织管理节点、新增、嵌套组等方式,非常便于扩展。
Modules模块:Modules 模块是 Ansible 执行代码的最小单元。 每个模块都是特殊用途,从特殊类型的数据库用户管理,到特殊类型的网络设备 VLAN 接口管理。 你可以在通过执行单个任务调用一个模块,也可以通过 playbook 同时调用执行多个模块。
Tasks任务:Ansible 执行操作的最小单位。 ad-hoc 更适合临时执行命令的执行场景。
Playbooks:Playbooks 是任务列表的组合,通常会把常用的命令列表通过正确的语法写入到 playbook中。 Playbook 可以像普通 tasks 一样调用变量, 其使用 YAML 语法,便于读、写、分享、理解。
Ansible 是通过读取 Inventory 中的配置知道我们要对哪些机器变更。 虽然你可以在命令行使用 ad-hoc 临时命令时指定 IP 地址的方式来控制要操作的对象,但如果想充分使用 Ansible 的灵活性和或扩展性,你必须掌握 Inventory 的配置。
/etc/ansible/hosts
并添加一些主机列表,使用IP地址或者主机名192.0.2.50
aserver.example.org
bserver.example.org
1.在命令行使用 -u 指定用户
2.在 Inventory 是指定连接用户
3.在配置文件中设置连接用户
4.设置环境变量
ping
模块测试主机是否在线$ ansible all -m ping# 如果遇到以下问题
192.0.2.50 | UNREACHABLE! => {"changed": false,"msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).","unreachable": true
}
# 可以通过ssh-keygen一路回车,然后再ssh-copy-id 192.0.2.50 ,输入192.0.2.50登录密码即可# 结果
192.0.2.50 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
$ ansible all -a "/bin/echo hello"# 运行结果
192.0.2.50 | CHANGED | rc=0 >>
hello