角色功能说明:
- 该角色实现对客户端主机的重启,因为上个角色配置了新的IP,因此该角色同时修改inventory/hosts中的IP配置
角色部署:
- 创建目录结构,创建软连接,关联默认变量文件
WorkDir=~/devops/ansible/os_init && cd ${WorkDir}
RoleName=reboot
mkdir -pv roles/${RoleName}/{defaults,files,handlers,meta,tasks,templates,vars}
ln -s ${WorkDir}/defaults_var.yml roles/${RoleName}/defaults/main.yml
- 创建角色任务
cat >roles/${RoleName}/tasks/main.yml<<EOF
---
- name: "重启系统"
shell:
"shutdown -r +1 &"
when: inventory_hostname != "localhost"
- name: "修改hosts文件"
shell:
"sed -i 's/ansible_ssh_host/swap_ip/g' {{ inventory_hosts }} && \
sed -i 's/target_ip/ansible_ssh_host/g' {{ inventory_hosts }} && \
sed -i 's/swap_ip/target_ip/g' {{ inventory_hosts }}"
args:
warn: false
when: inventory_hostname == "localhost"
EOF
- 创建任务playbook并执行
cat >os-init-3-${RoleName}.yml<<EOF
---
- hosts: localhost,all
remote_user: root
gather_facts: false
become: no
roles:
- ${RoleName}
EOF
# ansible-playbook -i inventory/hosts os-init-2-ssh_ip_host.yml
ansible-playbook -i inventory/hosts os-init-3-${RoleName}.yml
注意事项:
- 该角色修改inventory/hosts中IP配置信息的功能需要和角色ssh_ip_host配合起来执行
- 如果不执行ssh_ip_host角色而只执行该角色会造成ansible_ssh_host和target_ip的调换,使inventory/hosts产生问题,需要手动调整
- 重启操作需要等待1分钟完成,目前没有找到更为合适的其他重启方式
[TOC]