diff --git a/releasenotes/notes/run-playbooks-refactor-c89400feb692cd91.yaml b/releasenotes/notes/run-playbooks-refactor-c89400feb692cd91.yaml new file mode 100644 index 0000000000..9bd4e4c319 --- /dev/null +++ b/releasenotes/notes/run-playbooks-refactor-c89400feb692cd91.yaml @@ -0,0 +1,6 @@ +--- +other: + - The ``run-playbooks.sh`` script has been refactored to run all playbooks + using our core tool set and run order. The refactor work updates the old + special case script to a tool that simply runs the integrated playbooks + as they've been designed. diff --git a/scripts/gate-check-commit.sh b/scripts/gate-check-commit.sh index 08a66c6a2c..d7374474c7 100755 --- a/scripts/gate-check-commit.sh +++ b/scripts/gate-check-commit.sh @@ -99,6 +99,7 @@ popd log_instance_info # Execute the Playbooks +export DEPLOY_AIO=true bash $(dirname ${0})/run-playbooks.sh # Log some data about the instance and the rest of the system diff --git a/scripts/run-playbooks.sh b/scripts/run-playbooks.sh index 4e99332c05..ff1c6af64a 100755 --- a/scripts/run-playbooks.sh +++ b/scripts/run-playbooks.sh @@ -14,136 +14,74 @@ # limitations under the License. ## Shell Opts ---------------------------------------------------------------- -set -e -u -x - +set -e -u ## Variables ----------------------------------------------------------------- -DEPLOY_HOST=${DEPLOY_HOST:-"yes"} -DEPLOY_LB=${DEPLOY_LB:-"yes"} -DEPLOY_INFRASTRUCTURE=${DEPLOY_INFRASTRUCTURE:-"yes"} -DEPLOY_LOGGING=${DEPLOY_LOGGING:-"yes"} -DEPLOY_OPENSTACK=${DEPLOY_OPENSTACK:-"yes"} -DEPLOY_SWIFT=${DEPLOY_SWIFT:-"yes"} -DEPLOY_CEILOMETER=${DEPLOY_CEILOMETER:-"yes"} -DEPLOY_TEMPEST=${DEPLOY_TEMPEST:-"yes"} -DEPLOY_IRONIC=${DEPLOY_IRONIC:-"no"} +DEPLOY_AIO=${DEPLOY_AIO:-false} COMMAND_LOGS=${COMMAND_LOGS:-"/openstack/log/ansible_cmd_logs/"} -ADD_NEUTRON_AGENT_CHECKSUM_RULE=${ADD_NEUTRON_AGENT_CHECKSUM_RULE:-"yes"} - - -## Functions ----------------------------------------------------------------- -info_block "Checking for required libraries." 2> /dev/null || source $(dirname ${0})/scripts-library.sh - ## Main ---------------------------------------------------------------------- +function run_play_book_exit_message { +echo -e "\e[1;5;97m*** NOTICE ***\e[0m + +The \"\e[1;31m${0}\e[0m\" script has exited. This script is no longer needed from now on. +If you need to re-run parts of the stack, adding new nodes to the environment, +or have encountered an error you will no longer need this application to +interact with the environment. All jobs should be executed out of the +\"\e[1;33m${PLAYBOOK_DIR}\e[0m\" directory using the \"\e[1;32mopenstack-ansible\e[0m\" +command line wrapper. + +For more information about OpenStack-Ansible please review our documentation at: + \e[1;36mhttp://docs.openstack.org/developer/openstack-ansible\e[0m + +Additionally if there's ever a need for information on common operational tasks please +see the following information: + \e[1;36mhttp://docs.openstack.org/developer/openstack-ansible/install-guide/index.html#operations\e[0m + + +If you ever have any questions please join the community conversation on IRC at +#openstack-ansible on freenode. +" +} + +function playbook_run { + for root_include in $(awk -F'include:' '{print $2}' setup-everything.yml); do + for include in $(awk -F'include:' '{print $2}' "${root_include}"); do + echo "[Executing \"${include}\" playbook]" + if [[ "${DEPLOY_AIO}" = true ]] && [[ "${include}" == "security-hardening.yml" ]]; then + # NOTE(mattt): We have to skip V-38462 as openstack-infra are now building + # images with apt config Apt::Get::AllowUnauthenticated set + # to true. + install_bits "${include}" --skip-tag V-38462 + else + install_bits "${include}" + fi + done + done +} + +trap run_play_book_exit_message EXIT + +info_block "Checking for required libraries." 2> /dev/null || source $(dirname ${0})/scripts-library.sh # Initiate the deployment pushd "playbooks" - ansible localhost -m setup -a 'gather_subset=!facter,!ohai' + PLAYBOOK_DIR="$(pwd)" - if [ "${DEPLOY_HOST}" == "no" ]; then - ansible all -m setup -a 'gather_subset=!facter,!ohai' - fi + # Execute setup everything + playbook_run - if [ "${DEPLOY_HOST}" == "yes" ]; then - # Install all host bits - install_bits openstack-hosts-setup.yml - install_bits lxc-hosts-setup.yml - - # Apply security hardening - # NOTE(mattt): We have to skip V-38462 as openstack-infra are now building - # images with apt config Apt::Get::AllowUnauthenticated set - # to true. - install_bits --skip-tag "V-38462" security-hardening.yml - - # Bring the lxc bridge down and back up to ensures the iptables rules are in-place - # This also will ensure that the lxc dnsmasq rules are active. - mkdir -p "${COMMAND_LOGS}/host_net_bounce" - ansible hosts -m shell \ - -a '(ifdown lxcbr0 || true); ifup lxcbr0' \ - -t "${COMMAND_LOGS}/host_net_bounce" \ - &> ${COMMAND_LOGS}/host_net_bounce.log - - # If run-playbooks is executed more than once, the above lxcbr0 network - # restart will break any existing container networks. The lxc_host role - # places a convenience script on the host which fixes that, so let's use - # it to repair the container networks. - if [ -f /usr/local/bin/lxc-veth-check ]; then - /usr/local/bin/lxc-veth-check - fi - - # Create the containers. - install_bits lxc-containers-create.yml - ansible all -m setup -a 'gather_subset=!facter,!ohai' + if [[ "${DEPLOY_AIO}" = true ]]; then # Log some data about the instance and the rest of the system log_instance_info - fi - - if [ "${DEPLOY_LB}" == "yes" ]; then - # Install haproxy for dev purposes only - install_bits haproxy-install.yml - fi - - if [ "${DEPLOY_INFRASTRUCTURE}" == "yes" ]; then - # Install all of the infra bits - install_bits memcached-install.yml - install_bits repo-install.yml - + # Log repo data mkdir -p "${COMMAND_LOGS}/repo_data" ansible 'repo_all[0]' -m raw \ -a 'find /var/www/repo/os-releases -type l' \ -t "${COMMAND_LOGS}/repo_data" - install_bits galera-install.yml - install_bits rabbitmq-install.yml - install_bits utility-install.yml - - if [ "${DEPLOY_LOGGING}" == "yes" ]; then - install_bits rsyslog-install.yml - fi + openstack-ansible os-tempest-install.yml + print_report fi - - if [ "${DEPLOY_OPENSTACK}" == "yes" ]; then - # install all of the compute Bits - install_bits os-keystone-install.yml - install_bits os-glance-install.yml - install_bits os-cinder-install.yml - install_bits os-nova-install.yml - install_bits os-neutron-install.yml - install_bits os-heat-install.yml - install_bits os-horizon-install.yml - fi - - # If ceilometer is deployed, it must be run before - # swift, since the swift playbooks will make reference - # to the ceilometer user when applying the reselleradmin - # role - if [ "${DEPLOY_CEILOMETER}" == "yes" ]; then - install_bits os-ceilometer-install.yml - install_bits os-aodh-install.yml - fi - - if [ "${DEPLOY_SWIFT}" == "yes" ]; then - if [ "${DEPLOY_OPENSTACK}" == "no" ]; then - # When os install is no, make sure we still have keystone for use in swift. - install_bits os-keystone-install.yml - fi - # install all of the swift Bits - install_bits os-swift-install.yml - fi - - if [ "${DEPLOY_IRONIC}" == "yes" ]; then - # install all of the ironic Bits - install_bits os-ironic-install.yml - fi - - if [ "${DEPLOY_TEMPEST}" == "yes" ]; then - # Deploy tempest - install_bits os-tempest-install.yml - fi - popd - -# print the report data -set +x && print_report