サーバーを再起動するためにAnsible PlayBookを設定する方法

サーバーを再起動するためにAnsible PlayBookを設定する方法

さまざまな環境(ステージと本番)のすべてのサーバーを更新するプレイブックを作成したいと思います。カーネルが更新されるたびにこのサーバーを再起動したくなく、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

ベストアンサー1

以下を実行して、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条件が満たされません。

おすすめ記事