Fix keystone to manage the OSM users/projects

Keystone was not used by default by OSM NBI. Instead, internal
authentication is used.

When NBI is configured to use Keystone as auth backend, we found that it
didn't bootstrap properly because there were no data in the MySQL DB
used by Keystone. The initilization of DB was supposed to be done by the
Keystone containers in keystone-deployment. However, those container
were not able to initialize the DB because they were running as regular
users instead of root users.

Keystone is thought as an infra solution, not as an application
solution. The community behind Keystone development agreed on that
behaviour.

Based on that, Keystone containers were adapted to run as root.

In addition, we decided to disable Keystone and MySQL as part of the
default values for OSM helm chart.

Change-Id: I0e7078b809abe858a69323d6e3e493e862d6e6ab
Signed-off-by: vegall <lvega@whitestack.com>
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
8 files changed
tree: faab42b865af90f5004c7a13de4cc6d4e7197f35
  1. .gitignore
  2. .gitlab-ci.yml
  3. .gitmodules
  4. .groovylintrc.json
  5. Dockerfile
  6. Jenkinsfile
  7. LICENSE
  8. README.md
  9. common/
  10. debian/
  11. devops-stages/
  12. docker/
  13. installers/
  14. jenkins/
  15. packer/
  16. tools/
README.md

osm-devops

Scripts and artifacts for OSM installation and CI/CD pipelines.

Folder structure

  • jenkins: scripts run by jenkins. All OSM modules rely on these scripts.
  • installers: scripts to be executed to install OSM. It also includes the OSM helm chart.

Instructions to test new code in the same way is done in OSM CI/CD pipeline

Create folder

mkdir osm
cd osm

Clone projects

Clone the projects that you would like to test

git clone "https://osm.etsi.org/gerrit/osm/devops"
git clone "https://osm.etsi.org/gerrit/osm/common"
git clone "https://osm.etsi.org/gerrit/osm/N2VC"
git clone "https://osm.etsi.org/gerrit/osm/LCM"
...

Update repos to use a specific branch or a Gerrit patch

If needed, update code in the repos. An example for N2VC is shown below

cd N2VC
git pull "https://osm.etsi.org/gerrit/osm/N2VC" refs/changes/22/14222/2
cd ..
cd LCM
git pull "https://osm.etsi.org/gerrit/osm/LCM" refs/changes/24/14224/3
cd ..

Start an HTTP server to host the intermediate artifacts (deb packages)

./devops/tools/local-build.sh --run-httpserver
ps -ef |grep python3

Run stage2 to build artifacts

# Clean previous artifacts
rm $HOME/.osm/httpd/*.deb
# Build new artifacts
./devops/tools/local-build.sh --module common,N2VC,LCM stage-2
# Check that artifacts were created
ls $HOME/.osm/httpd

Note: Artifacts need to be cleaned every time we want to try new patches

Run stage3 to build docker images

./devops/tools/local-build.sh --module LCM stage-3
docker image ls
# Copy the image to your image resistry, e.g.: "your-registry/osm/osm-testing/opensourcemano/lcm:myfeature"

Update OSM Helm release to use the new image

helm3 -n osm list
helm3 -n osm get values osm

Upgrade with kubectl:

kubectl -n osm patch deployment lcm --patch '{"spec": {"template": {"spec": {"containers": [{"name": "lcm", "image": "your-registry/osm/osm-testing/opensourcemano/lcm:myfeature}]}}}}'
kubectl -n osm get all

Upgrade with Helm:

helm3 -n osm list
helm3 -n osm history osm
helm3 -n osm upgrade --reuse-values --set lcm.image.repository="your-registry/osm/osm-testing/opensourcemano/lcm" --set lcm.image.tag="myfeature" osm ./helm-chart-dir
helm3 -n osm status osm
kubectl -n osm get all

Test OSM Helm Chart independently

git clone "https://osm.etsi.org/gerrit/osm/devops"
cd devops/
# Get a patch from Gerrit
# git pull "https://osm.etsi.org/gerrit/osm/devops" refs/changes/25/14325/17
./installers/install_helm_client.sh -D . --debug
./devops-stages/stage-test.sh
./installers/full_install_osm.sh -D . --debug -R testing-daily -t testing-daily -r testing -y  2>&1 | tee osm_install_log.txt
kubectl -n osm get all
kubectl -n osm get ingress