写点什么

Ansible 简单使用

用户头像
耳东
关注
发布于: 2021 年 04 月 21 日

在开始之前,了解 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.50aserver.example.orgbserver.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
复制代码


发布于: 2021 年 04 月 21 日阅读数: 16
用户头像

耳东

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Ansible 简单使用