019、hostname主机名模块
本文最后更新于 260 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com

hostname主机名模块

  • 本模块用于设置远程主机的主机名。
  • 本模块不会修改/etc/hosts,如果你要修改该文件,可以使用templatereplace模块。

1. 参数

参数 描述
name string/必需 主机名
use string 使用哪种策略来更新主机名,可选值:alpine, debian, freebsd, generic, macos, macosx, darwin, openbsd, openrc, redhat, sles, solaris, systemd

2. 官方示例

- name: Set a hostname
  ansible.builtin.hostname:
    name: web01

- name: Set a hostname specifying strategy
  ansible.builtin.hostname:
    name: web01
    use: systemd

3. 使用剧本测试修改主机名

为了能够还原回来各节点原来的主机名,我们先用ansible查看一下当前节点主机名信息:

[ansible@master ansible_playbooks]$ ansible all -m command -a "hostname"
node1 | CHANGED | rc=0 >>
node1.hellogitlab.com
node2 | CHANGED | rc=0 >>
node2.hellogitlab.com

我们在主机清单配置文件中,增加每个需要修改主机的主机名变量ansible_hostname,修改完成后,查看主机清单文件:

[ansible@master ansible_playbooks]$ cat /etc/ansible/hosts
[myhosts]
node1 ansible_hostname=node1.ansible.com ansible_user=ansible ansible_port=22
node2 ansible_hostname=node2.ansible.com ansible_user=ansible ansible_port=22

使用debug调试一下,看看获取到的设置的主机名变量:

[ansible@master ansible_playbooks]$ ansible all -m debug -a "msg={{ ansible_hostname }}"
node2 | SUCCESS => {
    "msg": "node2.ansible.com"
}
node1 | SUCCESS => {
    "msg": "node1.ansible.com"
}
[ansible@master ansible_playbooks]$

可以看到,节点能够正常获取到设置的主机名变量。

编写hostname.yml剧本文件:

- hosts: all
  tasks:
    - name: Set hostname
      ansible.builtin.hostname:
        name: "{{ ansible_hostname }}"
      become: yes

语法检查,并执行剧本:

[ansible@master ansible_playbooks]$ ansible-lint hostname.yml
[ansible@master ansible_playbooks]$ ansible-playbook hostname.yml -v
Using /etc/ansible/ansible.cfg as config file

PLAY [all] *************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************
ok: [node1]
ok: [node2]

TASK [Set hostname] ****************************************************************************************************
changed: [node1] => {"ansible_facts": {"ansible_domain": "", "ansible_fqdn": "node1", "ansible_hostname": "node1", "ansible_nodename": "node1"}, "changed": true, "name": "node1"}
changed: [node2] => {"ansible_facts": {"ansible_domain": "ansible.com", "ansible_fqdn": "node2.ansible.com", "ansible_hostname": "node2", "ansible_nodename": "node2"}, "changed": true, "name": "node2"}

PLAY RECAP *************************************************************************************************************
node1                      : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
node2                      : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

[ansible@master ansible_playbooks]$

可以看到,主机修改成功。

我们检查一下节点主机名:

[ansible@master ansible_playbooks]$ ansible all -m command -a "hostname"
node1 | CHANGED | rc=0 >>
node1
node2 | CHANGED | rc=0 >>
node2
[ansible@master ansible_playbooks]$

可以看到,设置主机名变量是node1.ansible.com这样的,Ansible会自动截图第一个点前面的字符作为主机名。

我们在各节点主机上面将主机名还原:

# 节点1重置主机名
$ sudo hostnamectl set-hostname node1.hellogitlab.com

# 节点2重置主机名
$ sudo hostnamectl set-hostname node2.hellogitlab.com
谨此笔记,记录过往。凭君阅览,如能收益,莫大奢望。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇