基于ansible的生产环境部署构建(四) 角色reboot

角色功能说明:

  • 该角色实现对客户端主机的重启,因为上个角色配置了新的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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值