From 0493747f5d1b30008b4170b3d48080abfa224700 Mon Sep 17 00:00:00 2001 From: ckonstanski Date: Tue, 24 Oct 2017 18:27:27 -0600 Subject: make it work for all 4 git branches --- .../openbook/admin_api_server/files/installdeps.sh | 2 +- salt/openbook/admin_web_ui/files/installdeps.sh | 2 +- salt/openbook/ansible/files/deploy-branch.sh | 13 ++ salt/openbook/ansible/files/deploy-dev-env.sh | 12 -- .../ansible/files/env.yaml.docker_registry.example | 12 +- .../ansible/files/env.yaml.openbook.example | 146 ++++++++++++++++++--- .../files/env.yaml.openbook_docker_slave.example | 18 +-- salt/openbook/ansible/files/inventory_json.rb | 29 +++- salt/openbook/ansible/init.sls | 15 ++- salt/openbook/ci/files/build.sh | 16 ++- .../customer_api_server/files/installdeps.sh | 2 +- salt/openbook/customer_web_ui/files/installdeps.sh | 2 +- .../job_scheduler_server/files/installdeps.sh | 2 +- salt/openbook/workflow_server/files/installdeps.sh | 2 +- 14 files changed, 206 insertions(+), 67 deletions(-) create mode 100644 salt/openbook/ansible/files/deploy-branch.sh delete mode 100644 salt/openbook/ansible/files/deploy-dev-env.sh (limited to 'salt') diff --git a/salt/openbook/admin_api_server/files/installdeps.sh b/salt/openbook/admin_api_server/files/installdeps.sh index e1f2651..a4ac323 100644 --- a/salt/openbook/admin_api_server/files/installdeps.sh +++ b/salt/openbook/admin_api_server/files/installdeps.sh @@ -8,6 +8,6 @@ apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--fo curl -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ -o "{{ pillar["admin_api_server"]["jar_name"] }}" \ - "{{ pillar["jars"]["url"] }}{{ pillar["admin_api_server"]["jar_name"] }}" + "{{ pillar["jars"]["url"] }}/{{ pillar["admin_api_server"]["jar_name"] }}" exit 0 diff --git a/salt/openbook/admin_web_ui/files/installdeps.sh b/salt/openbook/admin_web_ui/files/installdeps.sh index 9485ce1..807b0f7 100644 --- a/salt/openbook/admin_web_ui/files/installdeps.sh +++ b/salt/openbook/admin_web_ui/files/installdeps.sh @@ -8,6 +8,6 @@ apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--fo curl -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ -o "{{ pillar["admin_web_ui"]["jar_name"] }}" \ - "{{ pillar["jars"]["url"] }}{{ pillar["admin_web_ui"]["jar_name"] }}" + "{{ pillar["jars"]["url"] }}/{{ pillar["admin_web_ui"]["jar_name"] }}" exit 0 diff --git a/salt/openbook/ansible/files/deploy-branch.sh b/salt/openbook/ansible/files/deploy-branch.sh new file mode 100644 index 0000000..3a1a72e --- /dev/null +++ b/salt/openbook/ansible/files/deploy-branch.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +env="${1}" +buildroot="$(pwd)" + +pushd ${buildroot}/conf +cp ${HOME}/env.yaml.openbook . +rm -f env.yaml +ln -s env.yaml.openbook env.yaml +popd +pushd ${buildroot} +ansible-playbook -i inventory_${env}.rb openbook_installer.yaml +popd diff --git a/salt/openbook/ansible/files/deploy-dev-env.sh b/salt/openbook/ansible/files/deploy-dev-env.sh deleted file mode 100644 index b47774e..0000000 --- a/salt/openbook/ansible/files/deploy-dev-env.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -buildroot="$(pwd)" - -pushd ${buildroot}/conf -cp ${HOME}/env.yaml.openbook . -rm -f env.yaml -ln -s env.yaml.openbook env.yaml -popd -pushd ${buildroot} -ansible-playbook -i inventory_json.rb openbook_installer.yaml -popd diff --git a/salt/openbook/ansible/files/env.yaml.docker_registry.example b/salt/openbook/ansible/files/env.yaml.docker_registry.example index ccdef39..f00e29c 100644 --- a/salt/openbook/ansible/files/env.yaml.docker_registry.example +++ b/salt/openbook/ansible/files/env.yaml.docker_registry.example @@ -1,10 +1,12 @@ --- globals: ansible_ssh_user: root + ansible_private_key_file: /var/lib/jenkins/.ssh/id_rsa ansible_python_interpreter: /usr/bin/python2 -hosts: - - host1: - cn: ~ - username: ~ - password: ~ +environments: + - master: + - host1: + cn: ~ + username: ~ + password: ~ diff --git a/salt/openbook/ansible/files/env.yaml.openbook.example b/salt/openbook/ansible/files/env.yaml.openbook.example index 9fd4894..ef791ad 100644 --- a/salt/openbook/ansible/files/env.yaml.openbook.example +++ b/salt/openbook/ansible/files/env.yaml.openbook.example @@ -1,25 +1,131 @@ --- globals: ansible_ssh_user: root + ansible_private_key_file: /var/lib/jenkins/.ssh/id_rsa ansible_python_interpreter: /usr/bin/python2 - openbook_gcomm_addresses: ~ - openbook_install_database: True|False - openbook_start_app: True|False -hosts: - - host1: - openbook_database_password: ~ - openbook_customer_web_ui_port: 8080 - openbook_customer_api_server_port: 8081 - openbook_admin_web_ui_port: 8082 - openbook_admin_api_server_port: 8083 - openbook_job_server: True|False - openbook_workflow_server: True|False - - host2: - openbook_database_password: ~ - openbook_customer_web_ui_port: 8080 - openbook_customer_api_server_port: 8081 - openbook_admin_web_ui_port: 8082 - openbook_admin_api_server_port: 8083 - openbook_job_server: True|False - openbook_workflow_server: True|False +environments: + - unstable: + - host1: + openbook_database_password: ~ + openbook_gcomm_addresses: ~ + openbook_install_database: True|False + openbook_start_app: True|False + openbook_install_admin_api_server: True|False + openbook_install_customer_api_server: True|False + openbook_install_admin_web_ui: True|False + openbook_install_customer_web_ui: True|False + openbook_install_job_scheduler_server: True|False + openbook_install_workflow_server: True|False + openbook_admin_web_ui_port: ~ + openbook_admin_api_server_port: ~ + openbook_customer_web_ui_port: ~ + openbook_customer_api_server_port: ~ + - host2: + openbook_database_password: ~ + openbook_gcomm_addresses: ~ + openbook_install_database: True|False + openbook_start_app: True|False + openbook_install_admin_api_server: True|False + openbook_install_customer_api_server: True|False + openbook_install_admin_web_ui: True|False + openbook_install_customer_web_ui: True|False + openbook_install_job_scheduler_server: True|False + openbook_install_workflow_server: True|False + openbook_admin_web_ui_port: ~ + openbook_admin_api_server_port: ~ + openbook_customer_web_ui_port: ~ + openbook_customer_api_server_port: ~ + - develop: + - host1: + openbook_database_password: ~ + openbook_gcomm_addresses: ~ + openbook_install_database: True|False + openbook_start_app: True|False + openbook_install_admin_api_server: True|False + openbook_install_customer_api_server: True|False + openbook_install_admin_web_ui: True|False + openbook_install_customer_web_ui: True|False + openbook_install_job_scheduler_server: True|False + openbook_install_workflow_server: True|False + openbook_admin_web_ui_port: ~ + openbook_admin_api_server_port: ~ + openbook_customer_web_ui_port: ~ + openbook_customer_api_server_port: ~ + - host2: + openbook_database_password: ~ + openbook_gcomm_addresses: ~ + openbook_install_database: True|False + openbook_start_app: True|False + openbook_install_admin_api_server: True|False + openbook_install_customer_api_server: True|False + openbook_install_admin_web_ui: True|False + openbook_install_customer_web_ui: True|False + openbook_install_job_scheduler_server: True|False + openbook_install_workflow_server: True|False + openbook_admin_web_ui_port: ~ + openbook_admin_api_server_port: ~ + openbook_customer_web_ui_port: ~ + openbook_customer_api_server_port: ~ + - stage: + - host1: + openbook_database_password: ~ + openbook_gcomm_addresses: ~ + openbook_install_database: True|False + openbook_start_app: True|False + openbook_install_admin_api_server: True|False + openbook_install_customer_api_server: True|False + openbook_install_admin_web_ui: True|False + openbook_install_customer_web_ui: True|False + openbook_install_job_scheduler_server: True|False + openbook_install_workflow_server: True|False + openbook_admin_web_ui_port: ~ + openbook_admin_api_server_port: ~ + openbook_customer_web_ui_port: ~ + openbook_customer_api_server_port: ~ + - host2: + openbook_database_password: ~ + openbook_gcomm_addresses: ~ + openbook_install_database: True|False + openbook_start_app: True|False + openbook_install_admin_api_server: True|False + openbook_install_customer_api_server: True|False + openbook_install_admin_web_ui: True|False + openbook_install_customer_web_ui: True|False + openbook_install_job_scheduler_server: True|False + openbook_install_workflow_server: True|False + openbook_admin_web_ui_port: ~ + openbook_admin_api_server_port: ~ + openbook_customer_web_ui_port: ~ + openbook_customer_api_server_port: ~ + - master: + - host1: + openbook_database_password: ~ + openbook_gcomm_addresses: ~ + openbook_install_database: True|False + openbook_start_app: True|False + openbook_install_admin_api_server: True|False + openbook_install_customer_api_server: True|False + openbook_install_admin_web_ui: True|False + openbook_install_customer_web_ui: True|False + openbook_install_job_scheduler_server: True|False + openbook_install_workflow_server: True|False + openbook_admin_web_ui_port: ~ + openbook_admin_api_server_port: ~ + openbook_customer_web_ui_port: ~ + openbook_customer_api_server_port: ~ + - host2: + openbook_database_password: ~ + openbook_gcomm_addresses: ~ + openbook_install_database: True|False + openbook_start_app: True|False + openbook_install_admin_api_server: True|False + openbook_install_customer_api_server: True|False + openbook_install_admin_web_ui: True|False + openbook_install_customer_web_ui: True|False + openbook_install_job_scheduler_server: True|False + openbook_install_workflow_server: True|False + openbook_admin_web_ui_port: ~ + openbook_admin_api_server_port: ~ + openbook_customer_web_ui_port: ~ + openbook_customer_api_server_port: ~ diff --git a/salt/openbook/ansible/files/env.yaml.openbook_docker_slave.example b/salt/openbook/ansible/files/env.yaml.openbook_docker_slave.example index 72a8549..51592e9 100644 --- a/salt/openbook/ansible/files/env.yaml.openbook_docker_slave.example +++ b/salt/openbook/ansible/files/env.yaml.openbook_docker_slave.example @@ -1,14 +1,16 @@ --- globals: ansible_ssh_user: root - locale: en_US.utf8 + ansible_private_key_file: /var/lib/jenkins/.ssh/id_rsa ansible_python_interpreter: /usr/bin/python2 + locale: en_US.utf8 salt_master: localhost -hosts: - - host1: - database_root_password: ~ - docker_username: ~ - docker_password: ~ - webdav_username: ~ - webdav_password: ~ +environments: + - master: + - host1: + database_root_password: ~ + docker_username: ~ + docker_password: ~ + webdav_username: ~ + webdav_password: ~ diff --git a/salt/openbook/ansible/files/inventory_json.rb b/salt/openbook/ansible/files/inventory_json.rb index 8a01004..e4a5938 100644 --- a/salt/openbook/ansible/files/inventory_json.rb +++ b/salt/openbook/ansible/files/inventory_json.rb @@ -9,23 +9,38 @@ def doit() STDERR.puts "Unable to find env.yaml. Exiting." exit(1) end + environ = "" + ["unstable", "develop", "stage", "master"].each do |env| + if File.basename($0).include?(env) + environ = env + break + end + end + if environ == "" + STDERR.puts "Unable to determine environment. Exiting." + exit(1) + end globs = {} hostvars = {} outobj = {} - hosts = [] + hosts_arr = [] yml = YAML.load_file(env_yaml_path) yml["globals"].each do |key, value| globs[key] = value end - yml["hosts"].each do |h| - h.each do |host, attributes| - hosts.push(host) - attributes.each do |attribute, value| - hostvars[host] = globs.merge(attributes) + yml["environments"].each do |ee| + ee.each do |e, hosts| + if e == environ + hosts.each do |host_hash| + host_hash.each do |host, attributes| + hosts_arr.push(host) + hostvars[host] = globs.merge(attributes) + end + end end end end - outobj["target"] = {"hosts" => hosts} + outobj["target"] = {"hosts" => hosts_arr} outobj["_meta"] = {"hostvars" => hostvars} puts outobj.to_json end diff --git a/salt/openbook/ansible/init.sls b/salt/openbook/ansible/init.sls index e337964..b446c33 100644 --- a/salt/openbook/ansible/init.sls +++ b/salt/openbook/ansible/init.sls @@ -1,5 +1,5 @@ {% for dir in pillar["ansible"]["dirs"].items() %} -anaible_dirs_{{ dir[0] }}: +ansible_dirs_{{ dir[0] }}: file.directory: {% if dir[1]["relative_to_buildroot"] %} - name: {{ pillar["ansible"]["build_dir"] }}/{{ dir[1]["name"] }} @@ -12,6 +12,18 @@ anaible_dirs_{{ dir[0] }}: - makedirs: True {% endfor %} +{% for symlink in pillar["ansible"]["symlinks"].items() %} +ansible_symlinks_{{ symlink[0] }}: + file.symlink: +{% if symlink[1]["relative_to_buildroot"] %} + - name: {{ pillar["ansible"]["build_dir"] }}/{{ symlink[1]["name"] }} + - target: {{ pillar["ansible"]["build_dir"] }}/{{ symlink[1]["target"] }} +{% else %} + - name: {{ symlink[1]["name"] }} + - target: {{ symlink[1]["target"] }} +{% endif %} +{% endfor %} + {% for file in pillar["ansible"]["files"].items() %} ansible_files_{{ file[0] }}: file.managed: @@ -24,4 +36,3 @@ ansible_files_{{ file[0] }}: - group: root - mode: {{ file[1]["mode"] }} {% endfor %} - diff --git a/salt/openbook/ci/files/build.sh b/salt/openbook/ci/files/build.sh index 3faef38..abcba51 100644 --- a/salt/openbook/ci/files/build.sh +++ b/salt/openbook/ci/files/build.sh @@ -1,5 +1,7 @@ #!/bin/bash +artifact="${1}" + for i in $(docker images | grep -v CREATED | awk '{print $3}'); do docker rmi --force $i done @@ -16,19 +18,19 @@ docker login --username {{ pillar["registry"]["username"] }} --password {{ pilla # curl -u '{{ pillar["registry"]["username"] }}:{{ pillar["registry"]["password"] }}' -X DELETE https://{{ pillar["registry"]["url"] }}/v2/${i}/manifests/${digest} # done -if [ "${1}" == "database" ]; then +if [ "${artifact}" == "database" ]; then {{ pillar["database"]["build_dir"] }}/build.sh -elif [ "${1}" == "admin-api-server" ]; then +elif [ "${artifact}" == "admin-api-server" ]; then {{ pillar["admin_api_server"]["build_dir"] }}/build.sh -elif [ "${1}" == "customer-api-server" ]; then +elif [ "${artifact}" == "customer-api-server" ]; then {{ pillar["customer_api_server"]["build_dir"] }}/build.sh -elif [ "${1}" == "admin-web-ui" ]; then +elif [ "${artifact}" == "admin-web-ui" ]; then {{ pillar["admin_web_ui"]["build_dir"] }}/build.sh -elif [ "${1}" == "customer-web-ui" ]; then +elif [ "${artifact}" == "customer-web-ui" ]; then {{ pillar["customer_web_ui"]["build_dir"] }}/build.sh -elif [ "${1}" == "job-scheduler-server" ]; then +elif [ "${artifact}" == "job-scheduler-server" ]; then {{ pillar["job_scheduler_server"]["build_dir"] }}/build.sh -elif [ "${1}" == "workflow-server" ]; then +elif [ "${artifact}" == "workflow-server" ]; then {{ pillar["workflow_server"]["build_dir"] }}/build.sh else {{ pillar["database"]["build_dir"] }}/build.sh diff --git a/salt/openbook/customer_api_server/files/installdeps.sh b/salt/openbook/customer_api_server/files/installdeps.sh index e0dc20f..d14d7a2 100644 --- a/salt/openbook/customer_api_server/files/installdeps.sh +++ b/salt/openbook/customer_api_server/files/installdeps.sh @@ -8,6 +8,6 @@ apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--fo curl -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ -o "{{ pillar["customer_api_server"]["jar_name"] }}" \ - "{{ pillar["jars"]["url"] }}{{ pillar["customer_api_server"]["jar_name"] }}" + "{{ pillar["jars"]["url"] }}/{{ pillar["customer_api_server"]["jar_name"] }}" exit 0 diff --git a/salt/openbook/customer_web_ui/files/installdeps.sh b/salt/openbook/customer_web_ui/files/installdeps.sh index 7ec1f67..e1a5532 100644 --- a/salt/openbook/customer_web_ui/files/installdeps.sh +++ b/salt/openbook/customer_web_ui/files/installdeps.sh @@ -8,6 +8,6 @@ apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--fo curl -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ -o "{{ pillar["customer_web_ui"]["jar_name"] }}" \ - "{{ pillar["jars"]["url"] }}{{ pillar["customer_web_ui"]["jar_name"] }}" + "{{ pillar["jars"]["url"] }}/{{ pillar["customer_web_ui"]["jar_name"] }}" exit 0 diff --git a/salt/openbook/job_scheduler_server/files/installdeps.sh b/salt/openbook/job_scheduler_server/files/installdeps.sh index 27f0936..64ba328 100644 --- a/salt/openbook/job_scheduler_server/files/installdeps.sh +++ b/salt/openbook/job_scheduler_server/files/installdeps.sh @@ -8,6 +8,6 @@ apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--fo curl -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ -o "{{ pillar["job_scheduler_server"]["jar_name"] }}" \ - "{{ pillar["jars"]["url"] }}{{ pillar["job_scheduler_server"]["jar_name"] }}" + "{{ pillar["jars"]["url"] }}/{{ pillar["job_scheduler_server"]["jar_name"] }}" exit 0 diff --git a/salt/openbook/workflow_server/files/installdeps.sh b/salt/openbook/workflow_server/files/installdeps.sh index adb184f..2bba1b0 100644 --- a/salt/openbook/workflow_server/files/installdeps.sh +++ b/salt/openbook/workflow_server/files/installdeps.sh @@ -8,6 +8,6 @@ apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--fo curl -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ -o "{{ pillar["workflow_server"]["jar_name"] }}" \ - "{{ pillar["jars"]["url"] }}{{ pillar["workflow_server"]["jar_name"] }}" + "{{ pillar["jars"]["url"] }}/{{ pillar["workflow_server"]["jar_name"] }}" exit 0 -- cgit v1.3