From 56d8af9363c4c0c091610097a8d94f952924c453 Mon Sep 17 00:00:00 2001 From: frsauvage Date: Tue, 3 Mar 2020 13:31:43 +0100 Subject: [PATCH] synchro with bitbucket 2.0.7 --- add_ansible_playbooks_and_plugins.sh | 121 ++++++++++++++++++ add_awx_playbooks.sh | 7 + .../firmware/update_firmware_from_file.yml | 4 +- .../openbmc/firmware/update_firmwares.yml | 4 +- ansible/readme.md | 9 +- install.sh | 12 ++ install_awx.sh | 2 +- install_awx_from_atos_dockerhub.sh | 5 +- prerequisites/tzlocal-2.0.0.tar.gz | Bin 0 -> 22040 bytes zabbix/readme.md | 2 +- 10 files changed, 154 insertions(+), 12 deletions(-) create mode 100755 add_ansible_playbooks_and_plugins.sh create mode 100755 add_awx_playbooks.sh create mode 100644 prerequisites/tzlocal-2.0.0.tar.gz diff --git a/add_ansible_playbooks_and_plugins.sh b/add_ansible_playbooks_and_plugins.sh new file mode 100755 index 0000000..bc67c33 --- /dev/null +++ b/add_ansible_playbooks_and_plugins.sh @@ -0,0 +1,121 @@ +#!/bin/sh + +echo "checking ansible prerequisite" +ansible_version=$(ansible --version|grep "ansible python module location") +if [ -z "$ansible_version" ] +then + echo -e "\033[31mansible is NOT installed\033[0m" + exit -1 +fi + +if [ -z $ANSIBLE_CONFIG ] +then + export ANSIBLE_CONFIG=/etc/ansible/ansible.cfg +fi +echo "your ansible configuration file is $ANSIBLE_CONFIG" + +if [ -z $ANSIBLE_INVENTORY ] +then + export ANSIBLE_INVENTORY=/etc/ansible/hosts #default +fi +echo "your ansible inventory hosts file is $ANSIBLE_INVENTORY" + +add_lines() +{ + echo -e "\033[32m---------------------------------------------------------------------------------------\033[0m" + echo -e "\033[31mPlease change yourself the following configuration in your $ANSIBLE_CONFIG:\033[0m" + echo "# MANDATORY: for atos module plugin to work, uncomment line at the begining of the file:" + echo -e "\033[31mlibrary = /usr/share/ansible/plugins/modules\033[0m" + echo "# MANDATORY: for atos module utils to work, uncomment line at the begining of the file:" + echo -e "\033[31mmodule_utils = /usr/share/ansible/plugins/module_utils\033[0m" + echo "# OPTION for a better Atos sensors / log / yaml rendering" + echo -e "stdout_callback = \033[32mmismunixy\033[0m" + echo "# OPTION if you wish a more human-readable rendering" + echo "See https://docs.ansible.com/ansible/2.5/plugins/callback.html#managing-adhoc" + echo -e "bin_ansible_callbacks = \033[32mTrue\033[0m" + echo "# to enable Atos python3 playbboks" + echo -e "ansible_python_interpreter = \033[32m/usr/bin/python3\033[0m" + echo "# if target certificates are self-signed" + echo "host_key_checking = False" + echo -e "\033[32m----------------------------------------------------------------------------------------\033[0m" +} + +while true; do + read -p "Do you wish to overwrite your $ANSIBLE_CONFIG file ? y yes / n no: " yn + case $yn in + [Yy]* ) cp ansible/inventory/ansible.cfg $ANSIBLE_CONFIG ; break;; + [Nn]* ) add_lines; break;; + * ) echo "Please answer yes or no.";; + esac +done + +# add ANSIBLE_PASSWORDS=/ansible/vars/passwords.yml to hosts file +# add ANSIBLE_EXTERNAL_VARS=/ansible/vars/external_vars.yml to hosts file +pwd=$(pwd) +export ANSIBLE_PASSWORDS=$pwd/ansible/vars/passwords.yml +export ANSIBLE_EXTERNAL_VARS=$pwd/ansible/vars/external_vars.yml + +if [ ! -f $pwd/ansible/vars/passwords.yml ] +then + echo -e "\033[32mansible/vars/passwords.yml was successfully created\033[0m" + touch $pwd/ansible/vars/passwords.yml +fi + +# delete old ANSIBLE_PASSWORDS path +grep -q ANSIBLE_PASSWORDS= $ANSIBLE_INVENTORY && sed -i.bak '/ANSIBLE_PASSWORDS=.*/d' $ANSIBLE_INVENTORY +# add the new ANSIBLE_PASSWORDS path +sed -i "/all:vars/a ANSIBLE_PASSWORDS=$ANSIBLE_PASSWORDS" $ANSIBLE_INVENTORY +echo "The following line was added in your $ANSIBLE_INVENTORY:" +echo -e "\033[32mANSIBLE_PASSWORDS=$ANSIBLE_PASSWORDS\033[0m" +echo -e "your passwords.yml file is now $ANSIBLE_PASSWORDS" +echo -e "you should copy your passwords in $ANSIBLE_PASSWORDS" +echo -e "\033[32m----------------------------------------------------------------------------------------\033[0m" + +# delete old ANSIBLE_EXTERNAL_VARS path +grep -q ANSIBLE_EXTERNAL_VARS= $ANSIBLE_INVENTORY && sed -i.bak '/ANSIBLE_EXTERNAL_VARS=.*/d' $ANSIBLE_INVENTORY +# add the new ANSIBLE_EXTERNAL_VARS path +sed -i "/all:vars/a ANSIBLE_EXTERNAL_VARS=$ANSIBLE_EXTERNAL_VARS" $ANSIBLE_INVENTORY +echo "The following line was added in your $ANSIBLE_INVENTORY :" +echo -e "\033[32mANSIBLE_EXTERNAL_VARS=$ANSIBLE_EXTERNAL_VARS\033[0m" +echo -e "your external_vars.yml file is now $ANSIBLE_EXTERNAL_VARS" +echo -e "you should edit your var preferences in $ANSIBLE_EXTERNAL_VARS" + echo -e "\033[32m----------------------------------------------------------------------------------------\033[0m" +# ansible plugin inventory is copied in default directory /usr/lib/python./site-packages/ansible/modules +# you can adapt it if you have another ansible plugin inventory directory + +# ansible plugin module is copied in default shared directory /usr/share/ansible/plugins/modules/ +# you can adapt it if you have another ansible plugin module directory + + +if [ ! -d "/usr/share/ansible/plugins/callback/ansible_stdout_compact_logger" ] +then + mkdir -p /usr/share/ansible/plugins/callback/ansible_stdout_compact_logger +fi + +cp -r ansible/plugins/callback/ansible_stdout_compact_logger/mismunixy.py /usr/share/ansible/plugins/callback/ansible_stdout_compact_logger/mismunixy.py + + +if [ ! -d "/usr/share/ansible/plugins/modules" ] +then + mkdir -p /usr/share/ansible/plugins/modules +fi + +if [ ! -d "/usr/share/ansible/plugins/module_utils" ] +then + mkdir -p /usr/share/ansible/plugins/module_utils +fi + +cp ansible/plugins/modules/remote_management/openbmc/atos_openbmc.py /usr/share/ansible/plugins/modules/atos_openbmc.py +cp ansible/plugins/modules/remote_management/openbmc/atos_openbmc_utils.py /usr/share/ansible/plugins/module_utils/atos_openbmc_utils.py +cp ansible/plugins/modules/remote_management/openbmc/__init__.py /usr/share/ansible/plugins/modules/__init__.py + +# previous install issue +if [ -d "/usr/share/ansible/plugins/callback/ansible_stdout_compact_logger/ansible_stdout_compact_logger" ] +then + rm -rf /usr/share/ansible/plugins/callback/ansible_stdout_compact_logger/ansible_stdout_compact_logger +fi + +if [ -d "/usr/share/ansible/plugins/callback/ansible_stdout_compact_logger/callback" ] +then + rm -rf /usr/share/ansible/plugins/callback/ansible_stdout_compact_logger/callback +fi diff --git a/add_awx_playbooks.sh b/add_awx_playbooks.sh new file mode 100755 index 0000000..cd7f1d1 --- /dev/null +++ b/add_awx_playbooks.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +echo "adding playbooks ..." +docker exec -it awx_web projects/add_playbooks.py + +echo -e "\033[32mif you get an error: check https://localhost/api/v2/ on the docker host and re-run this script\033[0m" + diff --git a/ansible/playbooks/openbmc/firmware/update_firmware_from_file.yml b/ansible/playbooks/openbmc/firmware/update_firmware_from_file.yml index d40b0cd..f002464 100644 --- a/ansible/playbooks/openbmc/firmware/update_firmware_from_file.yml +++ b/ansible/playbooks/openbmc/firmware/update_firmware_from_file.yml @@ -148,9 +148,9 @@ body_format: json when: reboot == true - - name: pause {{ reboot_countdown }} minuts for BMC to reboot + - name: pause {{ reboot_countdown }} minutes for BMC to reboot pause: - minuts: "{{ reboot_countdown }}" + minutes: "{{ reboot_countdown }}" when: reboot == True and item.value.Activation is defined and item.value.Purpose is defined and item.value.Activation == "xyz.openbmc_project.Software.Activation.Activations.Ready" and item.value.Purpose == "xyz.openbmc_project.Software.Version.VersionPurpose.BMC" with_dict: "{{ firmware_inventory }}" diff --git a/ansible/playbooks/openbmc/firmware/update_firmwares.yml b/ansible/playbooks/openbmc/firmware/update_firmwares.yml index 8e61008..7ab6436 100644 --- a/ansible/playbooks/openbmc/firmware/update_firmwares.yml +++ b/ansible/playbooks/openbmc/firmware/update_firmwares.yml @@ -102,9 +102,9 @@ var: evaluate_firmware_update when: evaluate_firmware_update is defined - - name: pause {{ reboot_countdown }} minuts for BMC to reboot + - name: pause {{ reboot_countdown }} minutes for BMC to reboot pause: - minuts: "{{ reboot_countdown }}" + minutes: "{{ reboot_countdown }}" when: reboot == True and item.value.Purpose is defined and item.value.RequestedActivation is defined and item.value.Purpose == "xyz.openbmc_project.Software.Version.VersionPurpose.BMC" and item.value.RequestedActivation == "xyz.openbmc_project.Software.Activation.RequestedActivations.Active" with_dict: "{{ firmware_inventory }}" diff --git a/ansible/readme.md b/ansible/readme.md index 3b5ccd9..13ed03b 100644 --- a/ansible/readme.md +++ b/ansible/readme.md @@ -10,6 +10,7 @@ Ansible playbooks can be used as is with following prerequisites: * AWX 4.0+ * Ansible 2.8.5+ * Python 3.6.8+ + * modules Python : ansible-vault and tzlocal (delivered in "prerequisites" directory) Optionaly, 2 ready-to-go AWX-Ansible images are available on Dockerhub * Dockerhub AWX images @@ -116,7 +117,7 @@ git clone https://github.com/atosorigin/bullsequana-edge-system-management.git Bull Sequana Edge Ansible Extensions has 3 AWX installers and an option to try it Just choose your favorite installation for your environment `on existing AWX:` nothing to install: go to the next section to add playbooks and plugins -`full install: /install.sh` it will build full docker containers and install all containers with your local Dockerfiles that you can adapt as needed => use **stop.sh** and **start.sh** after +`full install: /install.sh` Full install : it will load all docker containers and optionnaly install Ansible playbooks and plugins => use **stop.sh** and **start.sh** after `partial install AWX: /install_awx.sh` it will build docker containers and install Ansible/AWX docker containers with your local Dockerfiles that you can adapt as needed => use **stop_awx.sh** and **start_awx.sh** after `try it: /install_awx_from_dockerhub.sh` mainly dedicated to try bullsequana edge system management tool, it will install dockerhub atosorigin images, you cannot adapt the local Dockerfiles => use **stop_awx.sh*** and **start_awx.sh** after @@ -134,7 +135,7 @@ run a browser with: ` https://` ### add your playbooks If you did not already add your playbooks, just run: -`/add_playbooks.sh` +`/add_awx_playbooks.sh` ![alt text](https://raw.githubusercontent.com/atosorigin/bullsequana-edge-system-management/master/ansible/doc/awx_playbooks.png) @@ -147,7 +148,7 @@ You should have now: - 1 Credential : Bull Sequana Edge Vault - Bull playbooks -![#f03c15](https://placehold.it/15/f03c15/000000?text=+) Warning: on existing installation, tower-cli should be installed to run add_playbooks.sh +![#f03c15](https://placehold.it/15/f03c15/000000?text=+) Warning: on existing installation, tower-cli should be installed to run add_awx_playbooks.sh ### complete your inventory first 1. go to Inventory @@ -249,7 +250,7 @@ Following playbooks need these variables: ### use your credential #### - change your vault password -The *add_playbooks.sh* script already creates a vault for you and associates every templates to this vault. +The *add_awx_playbooks.sh* script already creates a vault for you and associates every templates to this vault. ![alt text](https://raw.githubusercontent.com/atosorigin/bullsequana-edge-system-management/master/ansible/doc/create_vault_playbooks.png) diff --git a/install.sh b/install.sh index 8437ed5..c7b3259 100755 --- a/install.sh +++ b/install.sh @@ -1,5 +1,17 @@ #!/bin/sh +echo -e "\033[32mThis will install AWX and Zabbix\033[0m" + +while true; do + read -p "Do you wish to install Ansible playbooks and plugins too: [yn yes no] " yn + case $yn in + [Yy]* ) ./install_ansible_playbooks_and_plugins.sh; break;; + [Nn]* ) break;; + * ) echo "Please answer y yes or n no.";; + esac +done + ./install_awx.sh ./install_zabbix.sh + diff --git a/install_awx.sh b/install_awx.sh index 103bddc..ea7d4e0 100755 --- a/install_awx.sh +++ b/install_awx.sh @@ -98,7 +98,7 @@ docker-compose -f docker_compose_awx.yml up -d echo "----------------------------------------------------------------------------------------------------" echo "now wait 10 minutes for the migration to complete...." echo "check the login page at https://localhost" -echo "and run ./add_playbooks.sh" +echo "and run ./add_awx_playbooks.sh" echo "AWX is available on https://localhost" echo "pgadmin is available on http://localhost:7070" echo "for more info, refer to github site https://github.com/atosorigin/bullsequana-edge-system-management" diff --git a/install_awx_from_atos_dockerhub.sh b/install_awx_from_atos_dockerhub.sh index add8880..5cf3719 100755 --- a/install_awx_from_atos_dockerhub.sh +++ b/install_awx_from_atos_dockerhub.sh @@ -9,10 +9,11 @@ echo "starting BullSequana Edge Ansible AWX containers ...." docker-compose -f docker_compose_awx_from_atos_dockerhub.yml up -d echo "----------------------------------------------------------------------------------------------------" +echo "now wait 10 minutes for the migration to complete...." +echo "check the login page at https://localhost" +echo "and run ./add_awx_playbooks.sh" echo "AWX is available on https://localhost" echo "pgadmin is available on http://localhost:7070" echo "for more info, refer to github site https://github.com/atosorigin/bullsequana-edge-system-management" echo "----------------------------------------------------------------------------------------------------" - - diff --git a/prerequisites/tzlocal-2.0.0.tar.gz b/prerequisites/tzlocal-2.0.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..4eeb2849bd9f026ec57491bff7fa966308890cdd GIT binary patch literal 22040 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 AYybcN literal 0 HcmV?d00001 diff --git a/zabbix/readme.md b/zabbix/readme.md index e4e6d39..f19e3db 100644 --- a/zabbix/readme.md +++ b/zabbix/readme.md @@ -74,7 +74,7 @@ For more details, read the [How to change your Proxy](#howto_proxy) section Bull Sequana Edge Zabbix Extensions has 3 Zabbix installers and an option to try it Just choose your favorite installation for your environment `on existing zabbix: import Atos templates`: you can import Atos templates in your Zabbix environment if you have an existing Zabbix installation -`full: /install.sh` it will build and install Ansible and Zabbix Bull Sequana Edge Extensions docker containers at once from your local Dockerfiles => use **stop.sh** and **start.sh** after +`full install: /install.sh` Full install - All in Once - it will load all docker containers and optionnaly install Ansible playbooks and plugins => use **stop.sh** and **start.sh** after `partial: /install_zabbix.sh` it will build and install only Zabbix docker containers from your local Dockerfiles that you can adapt as needed => use **stop_zabbix.sh** and **start_zabbix.sh** after `try it: /install_zabbix_from_dockerhub.sh` mainly dedicated to try bullsequana edge system management tool, it will install dockerhub atosorigin images, you cannot adapt the local Dockerfiles => use **stop_zabbix.sh*** and **start_zabbix.sh** after For more information about dockerhub installation Visit https://hub.docker.com/repository/docker/atosorigin/bull-sequana-edge-zabbix-server