ansible-experiments/package_updates/roles/freebsd-update/tasks/main.yml

38 lines
1.2 KiB
YAML
Raw Normal View History

Update packages on ubuntu and freebsd Fixes #1 The Vagrant file being used is a copy from `https://github.com/stationgroup/vagrant-labs/tree/master/imperialspeculate`. Two roles are being used: debian-upgrade (an upstream Galaxy role) and freebsd-upgrade (a small role based on what was proposed in the comments of #1 and extended with proper support for check mode.) The upgrade process is contained in the playbook os_upgrade.yml, which will automatically create proper groups for Ubuntu and FreeBSD hosts. If unneeded, this first play can be left out, and the target hosts: in the second play can be replaced by the relevant groups you have in the inventory (e.g. ec2 tags.) A local ansible.cfg is defined, and needed for these scripts to run out of the box. This implies that all ansible commands must be run from the `ansible-experiments/package_updates` folder. A small script `setup-requirements` is provided, that initializes everything, to be executed after the vagrant boxes came online. It will generate an ssh-config for said vagrant boxes, download roles from galaxy, and make a base-install for the hosts (installing python dependencies, ansible itself on ubuntu1, a deploying an ssh key to all nodes to be used from the vagrant box `ubuntu1`, as ansible controller machine.) When deploying and setting up from the machine where vagrant runs, you need to add some extra arguments: `--ssh-extra-args "-F ./vagrant-ssh-config" --inventory hosts-vagrant` to ansible execution. These are not necessary once running ansible from `ubuntu1`. The vagrant setup seems to have a provisioning bug, that kicks in with the latest 18.04 Ubuntu. The FreeBSD boxes also experience a provisioning problem, with the same result: the second, private network interface does not get configured. As these interfaces are used to run ansible from `ubuntu1`, I could not fully test the scripts from there.
2018-05-11 14:37:03 +00:00
---
- name: Fetch any new FreeBSD updates
command: freebsd-update fetch --not-running-from-cron
check_mode: no
when: ansible_distribution == 'FreeBSD'
register: result_update
changed_when: "'No updates needed' not in result_update.stdout"
- debug: var=result_update
when: result_update.changed
- name: Install FreeBSD updates
command: freebsd-update install --not-running-from-cron
when: ansible_distribution == 'FreeBSD' and result_update.changed and not ansible_check_mode
register: result_update_install
- debug: var=result_update_install
when: result_update_install.changed
- name: Upgrade FreeBSD packages - dry-run
command: pkg upgrade --dry-run
failed_when: False # --dry-run always returns failure
# https://github.com/freebsd/pkg/issues/1470
Update packages on ubuntu and freebsd Fixes #1 The Vagrant file being used is a copy from `https://github.com/stationgroup/vagrant-labs/tree/master/imperialspeculate`. Two roles are being used: debian-upgrade (an upstream Galaxy role) and freebsd-upgrade (a small role based on what was proposed in the comments of #1 and extended with proper support for check mode.) The upgrade process is contained in the playbook os_upgrade.yml, which will automatically create proper groups for Ubuntu and FreeBSD hosts. If unneeded, this first play can be left out, and the target hosts: in the second play can be replaced by the relevant groups you have in the inventory (e.g. ec2 tags.) A local ansible.cfg is defined, and needed for these scripts to run out of the box. This implies that all ansible commands must be run from the `ansible-experiments/package_updates` folder. A small script `setup-requirements` is provided, that initializes everything, to be executed after the vagrant boxes came online. It will generate an ssh-config for said vagrant boxes, download roles from galaxy, and make a base-install for the hosts (installing python dependencies, ansible itself on ubuntu1, a deploying an ssh key to all nodes to be used from the vagrant box `ubuntu1`, as ansible controller machine.) When deploying and setting up from the machine where vagrant runs, you need to add some extra arguments: `--ssh-extra-args "-F ./vagrant-ssh-config" --inventory hosts-vagrant` to ansible execution. These are not necessary once running ansible from `ubuntu1`. The vagrant setup seems to have a provisioning bug, that kicks in with the latest 18.04 Ubuntu. The FreeBSD boxes also experience a provisioning problem, with the same result: the second, private network interface does not get configured. As these interfaces are used to run ansible from `ubuntu1`, I could not fully test the scripts from there.
2018-05-11 14:37:03 +00:00
check_mode: no
when: ansible_distribution == 'FreeBSD' and ansible_check_mode
register: result_pkg
changed_when: "'Your packages are up to date' not in result_pkg.stdout"
- name: Upgrade FreeBSD packages
command: pkg upgrade --yes
when: ansible_distribution == 'FreeBSD' and not ansible_check_mode
register: result_pkg
changed_when: "'Your packages are up to date' not in result_pkg.stdout"
- debug: var=result_pkg
when: result_pkg.changed