Ansible hostname
模块
一、简介
- 功能:
hostname
模块用于设置远程主机的主机名(hostname)。它可以配置主机名,并在支持的系统上自动更新相关的系统配置文件,如/etc/hostname
、/etc/hosts
等。 - 使用场景:适用于需要批量修改服务器主机名的情况,或在部署新系统时统一设置主机名。
二、基本用法
2.1 语法
使用 hostname
模块的基本命令格式:
ansible <pattern> -m hostname -a "name=<new_hostname>"
<pattern>
: 指定要操作的主机或主机组,例如all
、webservers
。-m hostname
: 指定使用hostname
模块。-a "name=<new_hostname>"
: 设置新的主机名。
2.2 示例
-
设置单个主机的主机名:
ansible web1.example.com -m hostname -a "name=new-hostname"
- 解释:在
web1.example.com
主机上将主机名设置为new-hostname
。
- 解释:在
-
批量修改多个主机的主机名:
ansible webservers -m hostname -a "name=web-{{ inventory_hostname }}"
- 解释:将
webservers
主机组中的每个主机的主机名修改为web-<当前主机名>
,其中{{ inventory_hostname }}
是当前主机的默认主机名。
- 解释:将
三、输出结果
执行 hostname
模块后的典型输出示例:
web1.example.com | CHANGED => {
"changed": true,
"old": "old-hostname",
"new": "new-hostname"
}
CHANGED
:表示主机名已被修改。changed
: 为true
表示操作成功并且主机名被修改。old
:显示之前的主机名。new
:显示新的主机名。
如果主机名没有变化(例如已是所需的名称),输出将类似于:
web1.example.com | SUCCESS => {
"changed": false,
"old": "new-hostname",
"new": "new-hostname"
}
SUCCESS
: 表示操作成功。changed
: 为false
表示主机名未被修改。
四、常见选项
4.1 name
-
功能:指定要设置的新主机名。
-
用法:
ansible all -m hostname -a "name=new-hostname"
- 解释:将所有主机的主机名设置为
new-hostname
。
- 解释:将所有主机的主机名设置为
4.2 use
-
功能:指定如何设置主机名。可以是
systemd
、hostnamectl
、hostname
等,取决于系统支持的工具。 -
用法:
ansible all -m hostname -a "name=new-hostname use=systemd"
- 解释:使用
systemd
工具设置主机名(如果系统支持)。
- 解释:使用
五、注意事项
- 权限要求:更改主机名需要具有适当的权限(通常是 root 权限),确保 Ansible 用户具备相应的 sudo 权限。
- 系统兼容性:
hostname
模块支持多种操作系统,但具体实现方式可能有所不同(例如 systemd 与传统 init 系统),需要根据目标系统选择合适的配置方式。 - 重启服务:在某些系统中,更改主机名可能需要重新启动相关服务或主机才能完全生效,尤其是在网络服务或系统管理工具中使用主机名时。
- 避免重复主机名:确保在同一网络中每台主机的主机名唯一,避免主机名冲突导致的通信问题。