diff --git a/iiab-from-cmdline.yml b/iiab-from-cmdline.yml index 2dd4e0689d..74b507b562 100644 --- a/iiab-from-cmdline.yml +++ b/iiab-from-cmdline.yml @@ -9,10 +9,10 @@ - /etc/iiab/iiab_state.yml roles: - - { role: 0-init, tags: ['0-init'] } - - { role: 4-server-options, tags: ['4-server-options'] } - - { role: 5-xo-services, tags: ['5-xo-services'] } - - { role: 6-generic-apps, tags: ['6-generic-apps'] } - - { role: 7-edu-apps, tags: ['7-edu-apps'] } - - { role: 8-mgmt-tools, tags: ['8-mgmt-tools'] } - - { role: 9-local-addons, tags: ['9-local-addons'] } + - { role: 0-init } + - { role: 4-server-options } + - { role: 5-xo-services } + - { role: 6-generic-apps } + - { role: 7-edu-apps } + - { role: 8-mgmt-tools } + - { role: 9-local-addons } diff --git a/iiab-from-console.yml b/iiab-from-console.yml index 2790a34cf7..e83aefdb98 100644 --- a/iiab-from-console.yml +++ b/iiab-from-console.yml @@ -9,11 +9,11 @@ - /etc/iiab/iiab_state.yml roles: - - { role: 0-init, tags: ['0-init'] } - - { role: 4-server-options, tags: ['4-server-options'] } - - { role: 5-xo-services, tags: ['5-xo-services'] } - - { role: 6-generic-apps, tags: ['6-generic-apps'] } - - { role: 7-edu-apps, tags: ['7-edu-apps'] } - - { role: 8-mgmt-tools, tags: ['8-mgmt-tools'] } - - { role: 9-local-addons, tags: ['9-local-addons'] } - - { role: network, tags: ['network'] } + - { role: 0-init } + - { role: 4-server-options } + - { role: 5-xo-services } + - { role: 6-generic-apps } + - { role: 7-edu-apps } + - { role: 8-mgmt-tools } + - { role: 9-local-addons } + - { role: network } diff --git a/iiab-network.yml b/iiab-network.yml index 13a490ed0c..a726783677 100644 --- a/iiab-network.yml +++ b/iiab-network.yml @@ -9,5 +9,5 @@ - /etc/iiab/iiab_state.yml roles: - - { role: 0-init, tags: ['network'] } - - { role: network, tags: ['network','base'] } + - { role: 0-init } + - { role: network } diff --git a/iiab-stages.yml b/iiab-stages.yml index 0c1aef6f08..4b0940db6f 100644 --- a/iiab-stages.yml +++ b/iiab-stages.yml @@ -14,63 +14,52 @@ - name: 0-init include_role: name: 0-init - tags: 0-init - name: 1-prep include_role: name: 1-prep when: ansible_local.local_facts.stage|int < 1 - tags: 1-prep, platform, base - name: 2-common include_role: name: 2-common when: ansible_local.local_facts.stage|int < 2 - tags: 2-common, base - name: 3-base-server include_role: name: 3-base-server when: ansible_local.local_facts.stage|int < 3 - tags: 3-base-server, base - name: 4-server-options include_role: name: 4-server-options when: ansible_local.local_facts.stage|int < 4 - tags: 4-server-options - name: 5-xo-services include_role: name: 5-xo-services when: ansible_local.local_facts.stage|int < 5 - tags: 5-xo-services - name: 6-generic-apps include_role: name: 6-generic-apps when: ansible_local.local_facts.stage|int < 6 - tags: 6-generic-apps - name: 7-edu-apps include_role: name: 7-edu-apps when: ansible_local.local_facts.stage|int < 7 - tags: 7-edu-apps - name: 8-mgmt-tools include_role: name: 8-mgmt-tools when: ansible_local.local_facts.stage|int < 8 - tags: 8-mgmt-tools - name: 9-local-addons include_role: name: 9-local-addons when: ansible_local.local_facts.stage|int < 9 - tags: 9-local-addons - name: Network include_role: name: network - tags: network diff --git a/install-support.yml b/install-support.yml index e47229004f..0a6dafe339 100644 --- a/install-support.yml +++ b/install-support.yml @@ -7,7 +7,7 @@ - /etc/iiab/local_vars.yml roles: - - { role: 0-init, tags: ['0-init'] } - - { role: sshd, tags: ['sshd'] } - - { role: iiab-admin, tags: ['iiab-admin'] } - - { role: openvpn, tags: ['openvpn'] } + - { role: 0-init } + - { role: sshd } + - { role: iiab-admin } + - { role: openvpn } diff --git a/run-one-role.yml b/run-one-role.yml index 38a0b97b7a..bd126eef5e 100644 --- a/run-one-role.yml +++ b/run-one-role.yml @@ -9,5 +9,5 @@ - /etc/iiab/iiab_state.yml roles: - - { role: 0-init, tags: ['0-init'] } - - { role: "{{ role_to_run }}", tags: ['run'] } + - { role: 0-init } + - { role: "{{ role_to_run }}" } diff --git a/scripts/local_facts.fact b/scripts/local_facts.fact index 82890a2a6b..b4b4af9fa4 100755 --- a/scripts/local_facts.fact +++ b/scripts/local_facts.fact @@ -1,25 +1,28 @@ #!/bin/bash -# upgrades return found, clean installs return 0 -# interruptions return last stage number recorded (1-9) -if [ -f /etc/iiab/iiab.env ]; then - source /etc/iiab/iiab.env - STAGE=$STAGE # What does this line do, if anything? -else - STAGE=0 -fi +# 2020-10-19: Displays all errors on purpose, and uses '|| true' to continue. + +# STAGE is for ./iiab-install which runs Ansible with iiab-stages.yml +# - fresh installs start at STAGE 0 +# - interrupted installs record the last completed STAGE (1-9) +# +# We initialize to '0' (zero) to cover both situations: (1) where iiab.env does +# not exist and (2) where iiab.env exists but fails to set STAGE= +# (source command below tries to use this file, to the STAGE variable) +STAGE=0 +source /etc/iiab/iiab.env || true -OS=`grep ^ID= /etc/*elease | cut -d= -f2` -OS=${OS//\"/} +OS="none" +OS=$(grep ^ID= /etc/*elease | cut -d= -f2) || true +OS=${OS//\"/} # Remove all '"' if [ -f /etc/rpi-issue ]; then OS="raspbian" fi -VERSION_ID=`grep VERSION_ID /etc/*elease | cut -d= -f2` -VERSION_ID=${VERSION_ID//\"/} -VERSION_ID=${VERSION_ID%%.*} +VERSION_ID="none" +VERSION_ID=$(grep ^VERSION_ID= /etc/*elease | cut -d= -f2) || true +VERSION_ID=${VERSION_ID//\"/} # Remove all '"' +VERSION_ID=${VERSION_ID%%.*} # Remove all '.' and stuff to the right of 'em OS_VER=$OS-$VERSION_ID -DHCPCD_PATH=`which dhcpcd` -NM_PATH=`which NetworkManager` # Previously supported Linux distributions / versions: #"fedora-18" | \ @@ -44,41 +47,41 @@ case $OS_VER in ;; esac -# get current version -BRANCH=`git rev-parse --abbrev-ref HEAD` -COMMIT=`git rev-parse --verify HEAD` +# Get git branch and commit, indicating IIAB version +BRANCH="none" +BRANCH=$(git rev-parse --abbrev-ref HEAD) || true + +COMMIT="none" +COMMIT=$(git rev-parse --verify HEAD) || true +PHPLIB_DIR="none" if [ -d /usr/lib64/php ]; then PHPLIB_DIR=/usr/lib64/php elif [ -d /usr/lib/php5 ]; then PHPLIB_DIR=/usr/lib/php5 -else +elif [ -d /usr/lib/php ]; then PHPLIB_DIR=/usr/lib/php fi -if [ -f /proc/device-tree/mfg-data/MN ]; then - XO_VERSION=`cat /proc/device-tree/mfg-data/MN` -else - XO_VERSION="none" -fi +XO_VERSION="none" +XO_VERSION=$(cat /proc/device-tree/mfg-data/MN) || true -if [ -f /proc/device-tree/model ]; then - RPI_VERSION=`cat /proc/device-tree/model` -else - RPI_VERSION="none" -fi +RPI_VERSION="none" +RPI_VERSION=$(cat /proc/device-tree/model) || true -ANSIBLE_VERSION=$(ansible --version | head -n 1 | cut -f 2 -d " ") +ANSIBLE_VERSION="none" +ANSIBLE_VERSION=$(ansible --version | head -n 1 | cut -f 2 -d " ") || true -if [[ $DHCPCD_PATH != "" ]]; then - DHCPCD=`systemctl is-enabled dhcpcd` -fi -# the check is debian family only is_redhat would use NetworkManager as the -# service name. -if [[ $NM_PATH != "" ]]; then - NM=`systemctl is-enabled network-manager` -fi -SYSD_NETD=`systemctl is-enabled systemd-networkd` +DHCPCD="none" +DHCPCD=$(systemctl is-enabled dhcpcd) || true + +# This check is Debian family only. +# is_redhat would use NetworkManager as the service name. +NM="none" +NM=$(systemctl is-enabled network-manager) || true + +SYSD_NETD="none" +SYSD_NETD=$(systemctl is-enabled systemd-networkd) || true cat <