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)的私钥
