Date: Tue, 10 May 2022 12:57:03 -0300 From: Cristian Cardoso <cristian.cardoso11@gmail.com> To: Alan Somers <asomers@freebsd.org> Cc: FreeBSD CURRENT <freebsd-current@freebsd.org> Subject: Re: Upgrade automation Message-ID: <CAKeEC-LoenkK4NPxpCsTN%2Bk%2BCqksNHh6JfJM1YmE4YASkpZtgg@mail.gmail.com> In-Reply-To: <CAOtMX2hObotfGtjSoW6HftzP9bZ05d2OPFK2krKW9_6a0r97mQ@mail.gmail.com> References: <CAKeEC-%2Bwqzz_qrHWhCsTGcM9%2B%2BGdMouX8TEGWhCJ2Y%2B5=-nfUA@mail.gmail.com> <CAOtMX2hObotfGtjSoW6HftzP9bZ05d2OPFK2krKW9_6a0r97mQ@mail.gmail.com>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
I currently update patches this way:
- name: Checking for updates on FreeBSD
command: freebsd-update fetch
when:
- ansible_distribution == "FreeBSD"
register: result_update
changed_when: "'No updates needed' not in result_update.stdout"
become: yes
tags:
- check-update
- name: Applying update on FreeBSD
command: freebsd-update install
when:
- ansible_distribution == "FreeBSD" and result_update.changed
register: result_update_install
become: yes
tags:
- apply-update
Maybe to get around the situation after the version upgrade task, you can
do something like this:
- name: Reboot system to apply new kernel
shell: "sleep 5 && reboot"
async: 1
poll: 0
become: True
- name: Wait for reconnection to system to continue update
wait_for_connection:
connect_timeout: 20
sleep: 20
delay: 60
timeout: 600
- name: Applying update on FreeBSD
command: freebsd-update install
when:
- ansible_distribution == "FreeBSD" and result_update.changed
register: result_update_install
become: yes
Em ter., 10 de mai. de 2022 às 12:47, Alan Somers <asomers@freebsd.org>
escreveu:
> On Tue, May 10, 2022 at 9:08 AM Cristian Cardoso
> <cristian.cardoso11@gmail.com> wrote:
> >
> > Hi
> >
> > I have some FreeBSD servers in my machine park and I would like to
> perform the version upgrade in an automated way with ansible.
> >
> > In my example, I want to perform the upgrade from version 12.3 to 13, it
> is possible to run the upgrade with the command below:
> >
> > freebsd-update --not-running-from-cron upgrade -r 12.2-RELEASE
> >
> > I ask this, because I don't know if it's the most correct way to execute
> this.
> >
> > Grateful for any assistance.
>
> Yes, that's perfect. But there's another step too. You'll have to do:
> freebsd-update install
> And _this_ step isn't easy to perfectly automate, because etcupdate
> may ask for your input when it merges config files. If you know
> exactly which etc files you've modified, you can add them to
> IgnorePaths. That way etcupdate won't run interactively, it will
> simply throw away changes from upstream.
>
> Whenever I need to upgrade multiple machines at once, I start tmux,
> split it into multiple panes, ssh to each server from one pane, then
> do ":synchronize-panes on" so my input will be directed to multiple
> panes simultaneously. Usually, that works for 90% of the upgrade.
> But invariably there are a few files that aren't synchronized between
> the servers, and I have to desynchronize my panes to deal with that.
>
> -Alan
>
[-- Attachment #2 --]
<div dir="ltr">I currently update patches this way:<div><br><br>- name: Checking for updates on FreeBSD<br> command: freebsd-update fetch<br> when:<br> - ansible_distribution == "FreeBSD"<br> register: result_update<br> changed_when: "'No updates needed' not in result_update.stdout"<br> become: yes<br> tags:<br> - check-update<br><br>- name: Applying update on FreeBSD<br> command: freebsd-update install<br> when:<br> - ansible_distribution == "FreeBSD" and result_update.changed<br> register: result_update_install<br> become: yes<br> tags:<br> - apply-update<br><div><br></div><div><br></div><div><br></div><div>Maybe to get around the situation after the version upgrade task, you can do something like this:<br><br><br>- name: Reboot system to apply new kernel<br> shell: "sleep 5 && reboot"<br> async: 1<br> poll: 0<br> become: True<br><br>- name: Wait for reconnection to system to continue update<br> wait_for_connection:<br> connect_timeout: 20<br> sleep: 20<br> delay: 60<br> timeout: 600<br><br>- name: Applying update on FreeBSD<br> command: freebsd-update install<br> when:<br> - ansible_distribution == "FreeBSD" and result_update.changed<br> register: result_update_install<br> become: yes<br></div><div><br></div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Em ter., 10 de mai. de 2022 às 12:47, Alan Somers <<a href="mailto:asomers@freebsd.org">asomers@freebsd.org</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tue, May 10, 2022 at 9:08 AM Cristian Cardoso<br>
<<a href="mailto:cristian.cardoso11@gmail.com" target="_blank">cristian.cardoso11@gmail.com</a>> wrote:<br>
><br>
> Hi<br>
><br>
> I have some FreeBSD servers in my machine park and I would like to perform the version upgrade in an automated way with ansible.<br>
><br>
> In my example, I want to perform the upgrade from version 12.3 to 13, it is possible to run the upgrade with the command below:<br>
><br>
> freebsd-update --not-running-from-cron upgrade -r 12.2-RELEASE<br>
><br>
> I ask this, because I don't know if it's the most correct way to execute this.<br>
><br>
> Grateful for any assistance.<br>
<br>
Yes, that's perfect. But there's another step too. You'll have to do:<br>
freebsd-update install<br>
And _this_ step isn't easy to perfectly automate, because etcupdate<br>
may ask for your input when it merges config files. If you know<br>
exactly which etc files you've modified, you can add them to<br>
IgnorePaths. That way etcupdate won't run interactively, it will<br>
simply throw away changes from upstream.<br>
<br>
Whenever I need to upgrade multiple machines at once, I start tmux,<br>
split it into multiple panes, ssh to each server from one pane, then<br>
do ":synchronize-panes on" so my input will be directed to multiple<br>
panes simultaneously. Usually, that works for 90% of the upgrade.<br>
But invariably there are a few files that aren't synchronized between<br>
the servers, and I have to desynchronize my panes to deal with that.<br>
<br>
-Alan<br>
</blockquote></div>
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAKeEC-LoenkK4NPxpCsTN%2Bk%2BCqksNHh6JfJM1YmE4YASkpZtgg>
