Ansible—批量更改主机名

1、host.ini文件内容

[ceph]
192.168.3.51             ansible_su_pass=root_passwd host_name=ceph-osd1
192.168.3.52             ansible_su_pass=root_passwd host_name=ceph-osd2
192.168.3.53             ansible_su_pass=root_passwd host_name=ceph-osd3
192.168.3.54             ansible_su_pass=root_passwd host_name=ceph-mds1
192.168.3.55             ansible_su_pass=root_passwd host_name=ceph-mds2
192.168.3.56             ansible_su_pass=root_passwd host_name=ceph-mds3
192.168.3.57             ansible_su_pass=root_passwd host_name=ceph-mon-rgw1
192.168.3.58             ansible_su_pass=root_passwd host_name=ceph-mon-rgw1
192.168.3.59             ansible_su_pass=root_passwd host_name=ceph-mon-rgw1
  • ansible_su_pass:固定的key值,表示become借用(sudo)的用户的密码
  • host_name:自定义变量的值,用于在yaml文件中引用该变量

2、hosts文件

用于放置所有需要互相解析的主机名列表,这个文件会代替掉远程服务器的/etc/hosts文件。下面的这个文件是基于ubuntu20以上的,对于其他系统请根据对应的hosts文件格式变更。

127.0.0.1 localhost
127.0.1.1 home1

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

192.168.3.51	ceph-osd1
192.168.3.52	ceph-osd2
192.168.3.53	ceph-osd3
192.168.3.54	ceph-mds1
192.168.3.55	ceph-mds2
192.168.3.56	ceph-mds3
192.168.3.57	ceph-mon-rgw1
192.168.3.58	ceph-mon-rgw2
192.168.3.59	ceph-mon-rgw3

3、ansible脚本文件deploy_host.yaml

---
- hosts: ceph
  gather_facts: no
  remote_user: cloud
  become: yes
  become_method: su
  become_user: root

  vars:
    vpn_local_ip: "{{ ansible_eth0['ipv4']['address'] }}"
    hostnames: "{{ lookup('file','hosts') }}"
  tasks:
  - name: change name
    raw: "echo {{host_name}} > /etc/hostname"
  - name: hostname
    hostname: 'name={{ host_name }}'
  - name: write hosts to remote
    shell: echo "{{hostnames}}" > /etc/hosts
...

4、执行

ansible-playbook -i host.ini --private-key ../id_ed25519 deploy_host.yaml
  • –private-key:指定用于连接远程服务器的用户(cloud)的私钥

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注