1

ansible-playbook を使用して VPS を管理しているときに、モジュールyum updateを使用して実行するタスクがあります。yum問題は、VPS は最初は CentOS 6.2 であり、CentOS 6.5 にアップグレードすることです (これは私が望んでいることです)。その後、いくつかの大きな変更があるため、この後に再起動を行いたいと考えています。重要でないパッケージの更新があるたびに再起動したくないので、大きな問題です。

ansible で、そのような大きな変更を検出することは可能ですか?たとえば、/etc/redhat-release が によって変更されyum update、大きな変更が見つかった場合は再起動します。

ありがとう。

4

1 に答える 1

0

はい、次のようなことを試すことができます:

---
- name: Reboot Server Playbook
  hosts: all
  user: ambot
  sudo: True


  tasks:

    - name: Do an upgrade
      command: yum upgrade -y

    - name: Check what the new version is
      shell:  lsb_release -r | awk '{print $2}'
      register: new_release

    - name: Reboot
      command: /sbin/reboot
      when: ansible_distribution_version != new_release.stdout

CentOS リリースが変更された場合、上記はサーバーを再起動します。ansible_distribution_versionまた、プレイブックの初回実行時に最初に設定された ansible ファクト変数からも使用されます。yum upgrade コマンドに -y を追加して、プロセスが ansible からの stdin での確認を待ってスタックしないようにします。ローカルホストで ansible ファクトを表示するには、次のように実行できます。

ansible localhost -m setup

[プレイブックでファクトを再生成するために考えられる解決策]

 # You can try this to store the initial version
 vars:
    current_os_version: $ansible_distribution_version


 tasks:

    - name: Regenerate facts ?
      setup: filter=*
于 2014-03-25T02:41:57.580 に答える