AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 446246
Accepted
bonafideaf
bonafideaf
Asked: 2018-05-27 18:29:37 +0800 CST2018-05-27 18:29:37 +0800 CST 2018-05-27 18:29:37 +0800 CST

如何设置 ansible playbook 以重启服务器

  • 772

我希望能够编写一本剧本来更新我在不同环境中的所有服务器 - 阶段和产品。我不想在每次内核更新时重新启动这些服务器,我只想每 2 个月重新启动一次。

有没有办法将重启变量传递给 ansible 命令以仅在我想重启时触发所有服务器的重启?

我将使用 Jenkins 来触发更新作业。

下面的示例代码:

- hosts: all
  become: yes
  tasks:  
    - name: Making changes to the yum.conf file
      shell: sudo sed "s/exclude=kernel/#exclude=kernel/g" /etc/yum.conf
      args:
        executable: /bin/bash

    - name: Performing yum update
      yum:
        update_cache: yes
        name: '*'
        state: latest
        update_cache: yes

    - name: Checking for reboot
      shell: LAST_KERNEL=$(rpm -q --last kernel | awk 'NR==1{sub(/kernel-/,""); print $1}'); CURRENT_KERNEL=$(uname -r); if [ $LAST_KERNEL != $CURRENT_KERNEL ]; then echo 'reboot'; else echo 'no'; fi
      ignore_errors: true
      register: reboot_hint

    - name: Rebooting servers now ...
      command: shutdown -r now "Reboot required for updated kernel"
      async: 0
      poll: 0
      sudo: true
      ignore_errors: true
      when: reboot_hint.stdout.find("reboot") != -1
      register: rebooting

    - name: Taking a nap while servers reboot...
      pause: seconds=200
      when: rebooting is changed

    - name: Confirming servers are back online
      wait_for:
        host: "{{ ansible_ssh_host | default(inventory_hostname) }}"
        delay: 30
        state: started
        search_regex: OpenSSH
        port: 22
      become: false
      when: reboot is changed
      delegate_to: localhost
linux reboot
  • 2 2 个回答
  • 4190 Views

2 个回答

  • Voted
  1. Best Answer
    wurtel
    2018-05-29T06:54:07+08:002018-05-29T06:54:07+08:00

    您可以通过运行将额外的变量传递给 ansible playbook

    ansible-playbook --limit whatever myplaybook.yml --extra-vars reboot=now
    

    修改剧本的顶部:

    - hosts: all
      become: yes
      vars:
        reboot: notnow
    

    重启任务变为:

    - name: Rebooting servers now ...
      command: shutdown -r now "Reboot required for updated kernel"
      async: 0
      poll: 0
      sudo: true
      ignore_errors: true
      when: reboot == "now"
      register: rebooting
    

    当您不传递 extra-vars 参数时,var 的值为“notnow”,然后when条件将不被满足。

    • 2
  2. Branko
    2019-09-13T01:28:53+08:002019-09-13T01:28:53+08:00

    现在有一个模块可以简单地重启机器:https ://docs.ansible.com/ansible/latest/modules/reboot_module.html

    • 0

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve