aboutsummaryrefslogtreecommitdiffstats
path: root/extraconfig
diff options
context:
space:
mode:
Diffstat (limited to 'extraconfig')
-rw-r--r--extraconfig/post_deploy/rhel-registration/rhel-registration-resource-registry.yaml2
-rw-r--r--extraconfig/pre_deploy/rhel-registration/environment-rhel-registration.yaml (renamed from extraconfig/post_deploy/rhel-registration/environment-rhel-registration.yaml)0
-rw-r--r--extraconfig/pre_deploy/rhel-registration/rhel-registration-resource-registry.yaml2
-rw-r--r--extraconfig/pre_deploy/rhel-registration/rhel-registration.yaml (renamed from extraconfig/post_deploy/rhel-registration/rhel-registration.yaml)18
-rw-r--r--extraconfig/pre_deploy/rhel-registration/scripts/rhel-registration (renamed from extraconfig/post_deploy/rhel-registration/scripts/rhel-registration)0
-rw-r--r--extraconfig/pre_deploy/rhel-registration/scripts/rhel-unregistration (renamed from extraconfig/post_deploy/rhel-registration/scripts/rhel-unregistration)0
-rwxr-xr-xextraconfig/tasks/yum_update.sh53
-rw-r--r--extraconfig/tasks/yum_update.yaml5
8 files changed, 71 insertions, 9 deletions
diff --git a/extraconfig/post_deploy/rhel-registration/rhel-registration-resource-registry.yaml b/extraconfig/post_deploy/rhel-registration/rhel-registration-resource-registry.yaml
deleted file mode 100644
index 7b48392d..00000000
--- a/extraconfig/post_deploy/rhel-registration/rhel-registration-resource-registry.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-resource_registry:
- OS::TripleO::NodeExtraConfigPost: rhel-registration.yaml
diff --git a/extraconfig/post_deploy/rhel-registration/environment-rhel-registration.yaml b/extraconfig/pre_deploy/rhel-registration/environment-rhel-registration.yaml
index 70437a8a..70437a8a 100644
--- a/extraconfig/post_deploy/rhel-registration/environment-rhel-registration.yaml
+++ b/extraconfig/pre_deploy/rhel-registration/environment-rhel-registration.yaml
diff --git a/extraconfig/pre_deploy/rhel-registration/rhel-registration-resource-registry.yaml b/extraconfig/pre_deploy/rhel-registration/rhel-registration-resource-registry.yaml
new file mode 100644
index 00000000..75453302
--- /dev/null
+++ b/extraconfig/pre_deploy/rhel-registration/rhel-registration-resource-registry.yaml
@@ -0,0 +1,2 @@
+resource_registry:
+ OS::TripleO::NodeExtraConfig: rhel-registration.yaml
diff --git a/extraconfig/post_deploy/rhel-registration/rhel-registration.yaml b/extraconfig/pre_deploy/rhel-registration/rhel-registration.yaml
index bf6c88cd..d5160915 100644
--- a/extraconfig/post_deploy/rhel-registration/rhel-registration.yaml
+++ b/extraconfig/pre_deploy/rhel-registration/rhel-registration.yaml
@@ -6,8 +6,8 @@ description: >
# Note extra parameters can be defined, then passed data via the
# environment parameter_defaults, without modifying the parent template
parameters:
- servers:
- type: json
+ server:
+ type: string
# To be defined via a local or global environment in parameter_defaults
rhel_reg_activation_key:
type: string
@@ -71,9 +71,9 @@ resources:
config: {get_file: scripts/rhel-registration}
RHELRegistrationDeployment:
- type: OS::Heat::SoftwareDeployments
+ type: OS::Heat::SoftwareDeployment
properties:
- servers: {get_param: servers}
+ server: {get_param: server}
config: {get_resource: RHELRegistration}
actions: ['CREATE'] # Only do this on CREATE
input_values:
@@ -104,10 +104,16 @@ resources:
- name: REG_METHOD
RHELUnregistrationDeployment:
- type: OS::Heat::SoftwareDeployments
+ type: OS::Heat::SoftwareDeployment
properties:
- servers: {get_param: servers}
+ server: {get_param: server}
config: {get_resource: RHELUnregistration}
actions: ['DELETE'] # Only do this on DELETE
input_values:
REG_METHOD: {get_param: rhel_reg_method}
+
+outputs:
+ deploy_stdout:
+ description: Deployment reference, used to trigger puppet apply on changes
+ value: {get_attr: [RHELRegistrationDeployment, deploy_stdout]}
+
diff --git a/extraconfig/post_deploy/rhel-registration/scripts/rhel-registration b/extraconfig/pre_deploy/rhel-registration/scripts/rhel-registration
index cbbd6a1d..cbbd6a1d 100644
--- a/extraconfig/post_deploy/rhel-registration/scripts/rhel-registration
+++ b/extraconfig/pre_deploy/rhel-registration/scripts/rhel-registration
diff --git a/extraconfig/post_deploy/rhel-registration/scripts/rhel-unregistration b/extraconfig/pre_deploy/rhel-registration/scripts/rhel-unregistration
index 1e72e0a6..1e72e0a6 100644
--- a/extraconfig/post_deploy/rhel-registration/scripts/rhel-unregistration
+++ b/extraconfig/pre_deploy/rhel-registration/scripts/rhel-unregistration
diff --git a/extraconfig/tasks/yum_update.sh b/extraconfig/tasks/yum_update.sh
index 3d4c772b..9125ca07 100755
--- a/extraconfig/tasks/yum_update.sh
+++ b/extraconfig/tasks/yum_update.sh
@@ -8,6 +8,7 @@
# command_arguments - yum command arguments, defaults to ""
echo "Started yum_update.sh on server $deploy_server_id at `date`"
+echo -n "false" > $heat_outputs_path.update_managed_packages
if [[ -z "$update_identifier" ]]; then
echo "Not running due to unset update_identifier"
@@ -20,6 +21,9 @@ mkdir -p $timestamp_dir
# sanitise to remove unusual characters
update_identifier=${update_identifier//[^a-zA-Z0-9-_]/}
+# seconds to wait for this node to rejoin the cluster after update
+cluster_start_timeout=360
+
timestamp_file="$timestamp_dir/$update_identifier"
if [[ -a "$timestamp_file" ]]; then
echo "Not running for already-run timestamp \"$update_identifier\""
@@ -27,6 +31,34 @@ if [[ -a "$timestamp_file" ]]; then
fi
touch "$timestamp_file"
+command_arguments=${command_arguments:-}
+
+list_updates=$(yum list updates)
+
+if [[ "$list_updates" == "" ]]; then
+ echo "No packages require updating"
+ exit 0
+fi
+
+pacemaker_status=$(systemctl is-active pacemaker)
+
+if [[ "$pacemaker_status" == "active" ]] ; then
+ echo "Pacemaker running, stopping cluster node and doing full package update"
+ node_count=$(pcs status xml | grep -o "<nodes_configured.*/>" | grep -o 'number="[0-9]*"' | grep -o "[0-9]*")
+ if [[ "$node_count" == "1" ]] ; then
+ echo "Active node count is 1, stopping node with --force"
+ pcs cluster stop --force
+ else
+ pcs cluster stop
+ fi
+else
+ echo "Excluding upgrading packages that are handled by config management tooling"
+ command_arguments="$command_arguments --skip-broken"
+ for exclude in $(cat /var/lib/tripleo/installed-packages/* | sort -u); do
+ command_arguments="$command_arguments --exclude $exclude"
+ done
+fi
+
command=${command:-update}
full_command="yum -y $command $command_arguments"
echo "Running: $full_command"
@@ -36,6 +68,27 @@ return_code=$?
echo "$result"
echo "yum return code: $return_code"
+if [[ "$pacemaker_status" == "active" ]] ; then
+ echo "Starting cluster node"
+ pcs cluster start
+
+ hostname=$(hostname -s)
+ tstart=$(date +%s)
+ while [[ "$(pcs status | grep "^Online" | grep -F -o $hostname)" == "" ]]; do
+ sleep 5
+ tnow=$(date +%s)
+ if (( tnow-tstart > cluster_start_timeout )) ; then
+ echo "ERROR $hostname failed to join cluster in $cluster_start_timeout seconds"
+ pcs status
+ exit 1
+ fi
+ done
+ pcs status
+
+else
+ echo -n "true" > $heat_outputs_path.update_managed_packages
+fi
+
echo "Finished yum_update.sh on server $deploy_server_id at `date`"
exit $return_code
diff --git a/extraconfig/tasks/yum_update.yaml b/extraconfig/tasks/yum_update.yaml
index e918149e..d313ca9f 100644
--- a/extraconfig/tasks/yum_update.yaml
+++ b/extraconfig/tasks/yum_update.yaml
@@ -20,7 +20,10 @@ resources:
- name: command_arguments
description: yum command arguments, defaults to ""
default: ''
+ outputs:
+ - name: update_managed_packages
+ description: boolean value indicating whether to upgrade managed packages
outputs:
OS::stack_id:
- value: {get_resource: config} \ No newline at end of file
+ value: {get_resource: config}