02-第一条Ansible命令

一、编写第一条命令

Ansible 安装配置完毕,下面学习如何使用 Ansible。
就像学习编程语言那样,先写一个 hello world 示例程序。我们也写一个 Ansible 的 “hello world”:

ansible 192.168.128.83 -m ping

这条命令的意思是通过管理主机 ping 192.168.128.83
命令中的”-m ping”表示调用 ping 模块。由00节可知,Ansible 有很多模块,包括核心模块和自定义模块,不同的模块可以帮助我们完成不同的工作。我们会根据实际情况使用各种模块,Ansible 基于这些模块完成实际的任务。

如果想要让上述命令正常执行,则必须同时满足两个最基本的条件:
(1)Ansible 所在的管理主机可以通过ssh连接到被管理主机;
(2)被管理主机的IP地址等信息已经添加到 Ansible 的”管理清单(Inventory)”中。

条件(1)是因为 Ansible 不用在管理主机上安装 agent,但是它需要依赖ssh连接到被管理主机。条件(2)表明,即使 Ansible 所在的主机能够通过 ssh 连接到被管理主机,仍然需要将被管理主机的 IP 地址、ssh 端口号等信息添加到一个被称作为”管理清单(Inventory)”的配置文件中,如果对应的主机信息在 Ansible 的”清单”中不存在,那么 Ansible 则无法操作对应主机。

二、执行第一条命令

01节我们已经安装好 Ansible 了,现在执行这个命令,看看效果:

[root@ansible-manager ~]# ansible 192.168.128.83 -m ping
 [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

 [WARNING]: Could not match supplied host pattern, ignoring: 192.168.128.83

警告显示,主机列表是空的。也就是上面说的第二个基本条件没有满足,虽然我们可以从管理节点 ping 通被管理节点,但是 Inventory 里面没有配置这一IP地址,Ansible 就无法正确执行。

下面在把 192.168.128.83 主机和 ssh 验证信息加入到 /etc/ansible/hosts (Inventory 文件的位置)中:

192.168.128.83  ansible_port=22  ansible_user=root  ansible_ssh_pass=root

ansible_port :用于配置被管理主机上的sshd服务端口号,如果是默认的22,则可以省略。
ansible_user :用于配置连接到被管理主机时所使用的用户名称。
ansible_ssh_pass :用于配置被管理主机用户的连接密码。

再试一次,操作成功:

[root@ansible-manager ~]# ansible 192.168.128.83 -m ping
192.168.128.83 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

Ansible 还支持对主机添加别名,当主机存在别名时,我们可以通过主机的”别名”管理对应主机。
比如,192.168.128.83 这台主机的别名为 ansible-demo3,那么,我们在配置清单时,可以进行如下配置:

ansible-demo3 anible_host=192.168.128.83  ansible_port=22  ansible_user=root  ansible_ssh_pass=root

当为主机配置别名时,主机的IP地址必须使用 anible_host 关键字进行指明,否则 Ansible将无法正确的识别对应的主机。下面使用主机的别名管理对应主机:

[root@ansible-manager ~]# ansible ansible-demo3 -m ping
ansible-demo3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

三、配置管理节点免密登陆

为了安全考虑,一般会采用密钥验证方式登录主机。通过证书签名达到 ssh 无密码访问。使用 ssh-keygen 与 ssh-copy-id 来实现快速证书的生成及公钥下发。

[root@ansible-manager ~]# ssh-keygen
......
[root@ansible-manager ~]# ssh-copy-id root@192.168.128.83
......

既然已经能够免密码创建 ssh 连接,那么在配置”管理清单”时,就没有必要再提供对应主机的用户名和密码了,所以,可以将清单中的配置精简为如下(端口默认为22也可以省略):

ansible-demo3 anible_host=192.168.128.83

再次执行:

[root@ansible-manager ~]# ansible ansible-demo3 -m ping
ansible-demo3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

如果 192.168.128.83 的 hostname 为 ansible-demo3,则清单中的配置更可以精简为:

ansible-demo3

在后续的示例中,默认使用密钥认证的方式连接到被管理主机。

四、总结

本节我们学习了第一条 Ansible 命令,了解了命令能够成功执行的前提条件。下节我们对 Ansible 管理命令做简单介绍。

参考文档:
http://www.zsythink.net/archives/2481

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值