使用Ansible重启Linux机器或者服务器
时间:2019-11-20 08:54:19 来源:igfitidea点击:
如何用Ansible重启多台Linux服务器?
我们可以使用命令或者shell模块重新启动Linux服务器。
不过,现在有一个reboot模块,可以用来重新启动计算机。
准备工作
我们必须具有Ansible 2.7或者更高版本才能使用reboot模块:
$ ansible --version
如果使用的不是Ansible版本2.7,
根据Linux发行版尝试使用dnf命令/yum命令/apt命令/apt-get命令对其进行更新:
$ sudo apt update ## Debian 或者 Ubuntu ## $ sudo yum update ## RHEL/CentOS 7 ##
使用Ansible playbooks重启Linux服务器
重启的语法非常简单:
- name: Reboot the machine with all defaults using Ansible reboot:
hosts文件示例:
[all:vars] k_ver="linux-image-5.15.0-36-generic" ansible_user='{{ my_c_user }}' ansible_become=yes ansible_become_method=sudo ansible_become_pass='{{ kar_sudo_pass }}' [server] cent.oit01 cent.oit02 cent.oit03 cent.forum [lxd] vm.oit01 vm.oit02 vm.oit03
reboot.yml文件示例:
--- - hosts: isrestart become: true become_user: root tasks: - name: Rebooting the cloud server/bare metal box reboot:
如何使用Ansible reboot模块重启服务器
现在我们只需运行playbook
$ ansible-playbook -i hosts --ask-vault-pass --extra-vars '@cluster.data.yml' reboot.yml
- name: Reboot the machine with all defaults using Ansible reboot:
如何重启机器并设置超时时间
默认情况下,Ansible reboot模块等待600秒。
可以使用以下语法修改该值:
- name: Reboot a Linux machine reboot: reboot_timeout: 1800
如何重启后需要运行的命令
默认情况下,ansbile使用的是whoami命令。
我们可以按如下方式进行更改:
- name: Reboot a Linux machine reboot: test_command: uptime
或者
- name: Reboot a Linux machine reboot: test_command: ping -c 4 192.168.2.254
如何设置重启前后延时
可以强制Ansible在重新启动成功后,在指定时间后重新建立连接,如下所示:
- name: Unconditionally reboot the machine with all defaults reboot: post_reboot_delay: 180
我们还可以设置关机等待重新启动的时间:
- name: Unconditionally reboot the machine with all defaults reboot: pre_reboot_delay: 180
查看Linux服务器重启日志历史记录
假设我们正在重启我的Ubuntu或者debian服务器。
- name: Check if a reboot is needed on AWS EC2 Ubuntu/Debian based servers register: reboot_required_file stat: path=/var/run/reboot-required get_md5=no - name: Reboot the box if kernel updated/installed on EC2 reboot: msg: "Reboot initiated by Ansible for kernel updates" connect_timeout: 5 reboot_timeout: 300 pre_reboot_delay: 0 post_reboot_delay: 30 test_command: uptime when: reboot_required_file.stat.exists
通过 msg: "Reboot initiated by Ansible for kernel updates" ,
我们可以查看重启日志。
$ ssh [email protected] $ sudo grep 'reboot' /var/log/auth.log $ sudo zgrep 'Reboot initiated by Ansible for kernel updates' /var/log/auth.log* $ sudo zgrep 'reboot' /var/log/auth.log*
或者使用last查看最近重启的时间:
$ sudo last -x "reboot"