ansible中使用command模块获取受控主机的主机名操作命令
时间: 2024-02-05 12:12:08 浏览: 266
要在Ansible中使用command模块获取受控主机的主机名,可以使用以下命令:
```
ansible <主机组> -m command -a 'hostname'
```
这将在指定的主机组中运行command模块,并使用`hostname`命令获取主机名。如果要获取多个主机的主机名,可以将主机组中的所有主机列出,或者使用通配符来匹配主机名。
相关问题
ansible中使用command模块获取受控主机的主机名
可以使用 `hostname` 命令来获取受控主机的主机名,然后使用 Ansible 的 `command` 模块来执行该命令,如下所示:
```
- name: Get hostname of the remote host
command: hostname
register: hostname_output
- name: Print the hostname of the remote host
debug:
var: hostname_output.stdout
```
在上面的示例中,`command` 模块执行了 `hostname` 命令,并将输出保存在 `hostname_output` 注册变量中。然后,使用 `debug` 模块打印 `hostname_output.stdout` 变量,它包含了受控主机的主机名。
ansible用命令依次修改主机名,第一个受控修改为Linux1 第二个受控修改为Linux2 第三个受控修改为Linux3
Ansible是一个强大的自动化运维工具,它支持通过SSH远程执行任务。如果你想使用Ansible批量修改主机名,你可以创建一个 playbook(脚本文件),步骤如下:
1. 首先,你需要在 Ansible 控制机上安装 `ansible` 并配置好 inventory(主机列表)。通常 inventory 文件会列出你要管理的 Linux 主机,并指明它们的 IP 地址或 hostname。
```yaml
# hosts.ini 或 ansible_inventory
[linux_servers]
Linux1 ansible_host=192.168.1.1
Linux2 ansible_host=192.168.1.2
Linux3 ansible_host=192.168.1.3
```
2. 创建一个新的 playbook(如 `hostname_change.yml`)文件,编写包含任务的基本结构:
```yaml
---
- name: 修改主机名
hosts: linux_servers
become: true
tasks:
- name: 更改主机名
command: |
sudo hostnamectl set-hostname {{ item }}
with_items:
- Linux1
- Linux2
- Linux3
```
这里使用了 `with_items` 来迭代指定的主机名列表,`command` 指令用于运行相应的命令(在这个例子中是 `hostnamectl set-hostname`)。
3. 执行 playbook:
在控制机上运行以下命令来应用这个 playbook:
```bash
ansible-playbook -i hosts.ini hostname_change.yml
```
这将会按照顺序修改 Linux1、Linux2 和 Linux3 的主机名。记得在执行之前确保有足够的权限进行系统级别的更改。
阅读全文