02-第一条Ansible命令

简介: 02-第一条Ansible命令

一、编写第一条命令
Ansible 安装配置完毕,下面学习如何使用 Ansible。
就像学习编程语言那样,先写一个 hello world 示例程序。我们也写一个 Ansible 的 “hello world”:
ansible 192.168.128.83 -m ping
ansible -i 清单 组(主机) -m 模块 -a 参数
1
这条命令的意思是通过管理主机 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
1
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
1
当为主机配置别名时,主机的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
1
再次执行:

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

如果 192.168.128.83 的 hostname 为 ansible-demo3,则清单中的配置更可以精简为:
ansible-demo3
1
在后续的示例中,默认使用密钥认证的方式连接到被管理主机。

目录
相关文章
|
5月前
|
Shell 数据安全/隐私保护
Ansible Ad-hoc,命令执行模块
Ansible Ad-hoc,命令执行模块
53 1
|
运维 监控
【运维知识进阶篇】Zabbix5.0稳定版详解10(Zabbix自动注册+Ansible自动部署,实现一条命令监控任意主机)
【运维知识进阶篇】Zabbix5.0稳定版详解10(Zabbix自动注册+Ansible自动部署,实现一条命令监控任意主机)
188 0
|
Shell 网络安全 网络架构
Ansible模块介绍——命令模块
Ansible模块介绍——命令模块
145 0
|
运维 自然语言处理 Shell
金鱼哥戏说RHCE认证:部署Ansible---运行临时命令
第二章 部署Ansible---运行临时命令
235 0
金鱼哥戏说RHCE认证:部署Ansible---运行临时命令
ansible获取命令帮助信息(三)
1.获取ansible命令帮助 1.1.查看某个模块的帮助信息
336 0
LXJ
|
运维 Shell Linux
03-Ansible管理命令
03-Ansible管理命令
LXJ
163 0
|
Shell
ansible的命令操作模块<6>
ansible的前面的模块都是对受管主机中的文件进行修改或者插入操作,今天继续跟随学习ansible的命令模块,比如说我要通过ansible在受管主机上执行我们常用的某些命令,该怎么操作 command模块: ansible test177 -m command -a "ls"在177中以root.
1694 0
|
Shell
Ansible 命令执行模块(学习笔记九)
命令执行模块有四个:command、raw、shell、script command、raw 1、command为系统默认模块,使用时可以直接省略: ansible all -a "pwd" image.
1193 0