I’ve trying to write an Ansible role that upgrades Github. The command to upgrade the server “ghe-upgrade github-2.13.1.pkg” for example, reboots the server, and when that happens, I get, the following connection because my ssh connection drops of course.
`
TASK [github : Upgrade github1.company.com with version 2.13.1] **********
fatal: [github1.company.com]: UNREACHABLE! => {“changed”: false, “msg”: "Failed to connect to the host via ssh: ", “unreachable”: true}
to retry, use: --limit @/build/workspace/team_SCSCM/github/github-upgrade.retry
That's over 4 years old, in this profession that is a lifetime.
similar approach, to no avail. So my tasks look like
# This command will reboot the node
- name: Upgrade Github host
command: "ghe-upgrade {{ pkg_dir }}/{{ pkg_name }} --yes"
(It craps out after above task)
# Now we will run a local 'ansible -m ping' on this host until it returns.
# This works with the existing ansible hosts inventory and so any custom
ansible_ssh_hosts definitions are being used
- local_action: shell ansible -u {{ ansible_ssh_user }} -m ping
github1.company.com
register: result
until: result.rc == 0
retries: 30
delay: 10
Any pointers on how I can make this work? Thanks!
If it's possible to make ghe-upgrade not reboot the server that would be easiest I guess.
The reason is you don't not how long the upgrade process will take and make it hard to find a value for the delay bellow.
Thanks all. Yes there should’ve been a pause between the two tasks. And yes there is an option to not reboot during the ghe-upgrade procedure, but I still would need to reboot twice after the command, once for Github to finish its upgrade, and another for the upgrade to take effect. So I still would to use the tricks mentioned here.