Airavata ansible scripts
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/56384a1a Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/56384a1a Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/56384a1a Branch: refs/heads/develop Commit: 56384a1a028acf50e3111234d0ab5f15c8aadf70 Parents: 02021d3 Author: Shameera Rathnayaka <[email protected]> Authored: Thu Jul 28 12:12:54 2016 -0400 Committer: scnakandala <[email protected]> Committed: Fri Nov 4 11:04:38 2016 -0400 ---------------------------------------------------------------------- group_vars/all | 51 ++++ hosts | 18 ++ .../files/mysql-connector-java-5.1.37-bin.jar | Bin 0 -> 985603 bytes roles/api-orch/handlers/main.yml | 10 + roles/api-orch/tasks/main.yml | 54 ++++ .../templates/airavata-server.properties.j2 | 278 +++++++++++++++++++ roles/api-orch/templates/gfac-config.yaml.j2 | 111 ++++++++ roles/api-orch/vars/main.yml | 3 + roles/common/files/airavata.jks | Bin 0 -> 1410 bytes roles/common/files/client_truststore.jks | Bin 0 -> 3558 bytes roles/common/handlers/main.yml | 45 +++ roles/common/tasks/main.yml | 40 +++ roles/common/vars/main.yml | 5 + .../files/mysql-connector-java-5.1.37-bin.jar | Bin 0 -> 985603 bytes roles/gfac/handlers/main.yml | 8 + roles/gfac/tasks/main.yml | 53 ++++ .../templates/airavata-server.properties.j2 | 278 +++++++++++++++++++ roles/gfac/templates/gfac-config.yaml.j2 | 111 ++++++++ roles/gfac/vars/main.yml | 3 + roles/rabbitmq/handlers/main.yml | 10 + roles/rabbitmq/tasks/main.yml | 44 +++ roles/setup/tasks/main.yml | 44 +++ roles/setup/tasks/redhat.yml | 12 + roles/setup/vars/main.yml | 15 + roles/zookeeper/handlers/main.yml | 19 ++ roles/zookeeper/tasks/main.yml | 15 + roles/zookeeper/templates/zoo.cfg.j2 | 28 ++ roles/zookeeper/vars/main.yml | 17 ++ site.yml | 25 ++ 29 files changed, 1297 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/group_vars/all ---------------------------------------------------------------------- diff --git a/group_vars/all b/group_vars/all new file mode 100644 index 0000000..2c2cb95 --- /dev/null +++ b/group_vars/all @@ -0,0 +1,51 @@ +--- +ansible_connection: ssh +ansible_ssh_user: root +ansible_ssh_private_key_file: /Users/syodage/Projects/scigap/JetCloud/jetcloud.key + +user: airavata +group: airavata +user_home: "/home/{{ user }}" +deployment_dir: "{{ user_home }}/master-deployment" + +airavata_dist: "apache-airavata-server-0.17-SNAPSHOT" +airavata_dist_name: "{{ airavata_dist }}-bin.tar.gz" + +db_server: "gw62.iu.xsede.org" +db_user: "SciGaP15Deploy" +db_password: "xxxxxxxxxxx" +app_catalog: "app_catalog" +exp_catalog: "exp_catalog" +replica_catalog: "replica_catalog" +workflow_catalog: "wf_catalog" +credential_store: "credential_store" + +rabbitmq_server: "localhost" +rabbitmq_vhost: "master" +rabbitmq_user: "airavata" +rabbitmq_password: "airavata" +rabbitmq_broker_url: "amqp://{{ rabbitmq_user }}:{{ rabbitmq_password }}@{{ rabbitmq_server}}:5672/{{ rabbitmq_vhost }}" + +key_store: "airavata.jks" +cred_key_store: "client_truststore.jks" +cred_store_server_host: "gw77.iu.xsede.org" +key_stores_location: "{{ deployment_dir }}/keystores" + +mysql_connector_jar: "mysql-connector-java-5.1.37-bin.jar" + +api_server_name: "apiserver-node0" +api_server_host: "{{ host_address }}" +api_server_port: "8930" + +orchestrator_name: "orchestrator-node0" +orchestrator_host: "{{ host_address }}" +orchestrator_port: "8940" + +gfac_name: "gfac-node0" +gfac_host: "{{ host_address }}" +gfac_port: "8950" + +monitor_email_address: "[email protected]" +monitor_email_password: "xxxxx" + +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/hosts ---------------------------------------------------------------------- diff --git a/hosts b/hosts new file mode 100644 index 0000000..11a03c7 --- /dev/null +++ b/hosts @@ -0,0 +1,18 @@ +# inventory file : production + +[api-orch] +149.165.156.196 host_name=js-156-196 host_address=149.165.156.196 +#149.165.171.11 host_name=js-171-11 host_address=149.165.171.11 + +[gfac] +149.165.156.196 host_name=js-156-196 host_address=149.165.156.196 +#149.165.171.11 host_name=js-171-11 host_address=149.165.171.11 + +[pga] +149.165.156.196 + +[zookeeper] +149.165.156.196 host_name=js-156-196 host_address=149.165.156.196 + +[rabbitmq] +149.165.156.196 host_name=js-156-196 host_address=149.165.156.196 http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/api-orch/files/mysql-connector-java-5.1.37-bin.jar ---------------------------------------------------------------------- diff --git a/roles/api-orch/files/mysql-connector-java-5.1.37-bin.jar b/roles/api-orch/files/mysql-connector-java-5.1.37-bin.jar new file mode 100644 index 0000000..465af67 Binary files /dev/null and b/roles/api-orch/files/mysql-connector-java-5.1.37-bin.jar differ http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/api-orch/handlers/main.yml ---------------------------------------------------------------------- diff --git a/roles/api-orch/handlers/main.yml b/roles/api-orch/handlers/main.yml new file mode 100644 index 0000000..c1a828d --- /dev/null +++ b/roles/api-orch/handlers/main.yml @@ -0,0 +1,10 @@ +--- + +# Api server, Orchestrator related handlers +- name: start api-orch + command: ./bin/airavata-server-start.sh api-orch -d chdir="{{ api_orch_dir }}/{{ airavata_dist }}/" creates="{{ api_orch_dir }}/{{ airavata_dist }}/bin/server_start_*" + +- name: stop api-orch + command: ./bin/airavata-server-stop.sh -f chdir="{{ api_orch_dir }}/{{ airavata_dist }}/" removes="{{ api_orch_dir }}/{{ airavata_dist }}/bin/server_start_*" + +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/api-orch/tasks/main.yml ---------------------------------------------------------------------- diff --git a/roles/api-orch/tasks/main.yml b/roles/api-orch/tasks/main.yml new file mode 100644 index 0000000..827f520 --- /dev/null +++ b/roles/api-orch/tasks/main.yml @@ -0,0 +1,54 @@ +--- +################################################################################ +# api-orch deployment +- name: Create api-orchestrator deployment directory + file: path="{{ api_orch_dir }}" state=directory owner="{{ user }}" group="{{ group }}" + when: build|success + tags: deploy, update_api_orch, update + +- name: Check previous deployments + stat: path="{{ api_orch_dir }}/{{ airavata_dist }}" get_md5=no get_checksum=no + register: pp + tags: deploy, update_api_orch, update + +- block: + - name: stop api-orch + command: ./bin/airavata-server-stop.sh -f chdir="{{ api_orch_dir }}/{{ airavata_dist }}/" removes="{{ api_orch_dir }}/{{ airavata_dist }}/bin/server_start_*" + + - name: Delete previous deployments + file: path="{{ gfac_dir }}/{{ airavata_dist }}" state=absent + + when: pp.stat.exists == True + tags: deploy, update_api_orch, update +# +# - block: +# - name: Remove pervious backup directory +# file: path="{{ api_orch_dir }}/backup" state=absent +# notify: +# - stop api-orch +# +# - name: Backup previous deployment directory +# copy: src="{{ api_orch_dir }}/{{ airavata_dist }}" dest="{{ api_orch_dir }}/backup" copy=no +# +# when: p.stat.exist == True +# tags: deploy update_api_orch update + +- name: Copy distribution to api-orcheatrator deployment directory + unarchive: src="{{ airavata_source_dir }}/distribution/target/{{ airavata_dist_name }}" dest="{{ api_orch_dir }}/" copy=no + become: yes + become_user: "{{ user }}" + tags: deploy, update_api_orch, update + +- name: Copy Airavata server properties file + template: src=airavata-server.properties.j2 dest="{{ api_orch_dir }}/{{ airavata_dist }}/bin/airavata-server.properties" owner="{{ user }}" group="{{ group }}" mode="u=rw,g=r,o=r" + tags: deploy, update_api_orch, update + +- name: Copy Gfac configuration file + template: src=gfac-config.yaml.j2 dest="{{ api_orch_dir }}/{{ airavata_dist }}/bin/gfac-config.yaml" owner="{{ user }}" group="{{ group }}" mode="u=rw,g=r,o=r" + tags: deploy, update_api_orch, update + +- name: Copy Mysql jar to lib + copy: src="{{ mysql_connector_jar }}" dest="{{ api_orch_dir }}/{{ airavata_dist }}/lib/{{ mysql_connector_jar }}" owner="{{ user }}" group="{{ group }}" + tags: deploy, update_api_orch, update + +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/api-orch/templates/airavata-server.properties.j2 ---------------------------------------------------------------------- diff --git a/roles/api-orch/templates/airavata-server.properties.j2 b/roles/api-orch/templates/airavata-server.properties.j2 new file mode 100644 index 0000000..449a7fd --- /dev/null +++ b/roles/api-orch/templates/airavata-server.properties.j2 @@ -0,0 +1,278 @@ +# +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +########################################################################### +# +# This properties file provides configuration for all Airavata Services: +# API Server, Registry, Workflow Interpreter, GFac, Orchestrator +# +########################################################################### + +########################################################################### +# API Server Registry Configuration +########################################################################### + +#for derby [AiravataJPARegistry] +#registry.jdbc.driver=org.apache.derby.jdbc.ClientDriver +#registry.jdbc.url=jdbc:derby://localhost:1527/experiment_catalog;create=true;user=airavata;password=airavata +# MySql database configuration +registry.jdbc.driver=com.mysql.jdbc.Driver +registry.jdbc.url=jdbc:mysql://{{ db_server }}:3306/{{ exp_catalog }} +registry.jdbc.user={{ db_user }} +registry.jdbc.password={{ db_password }} +#FIXME: Probably the following property should be removed. +start.derby.server.mode=false +validationQuery=SELECT 1 from CONFIGURATION +cache.enable=false +jpa.cache.size=-1 +#jpa.connection.properties=MaxActive=10,MaxIdle=5,MinIdle=2,MaxWait=60000,testWhileIdle=true,testOnBorrow=true + +# Properties for default user mode +default.registry.user=admin +default.registry.password=admin +default.registry.password.hash.method=SHA +default.registry.gateway=default + +########################################################################### +# Application Catalog DB Configuration +########################################################################### +#for derby [AiravataJPARegistry] +#appcatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver +#appcatalog.jdbc.url=jdbc:derby://localhost:1527/app_catalog;create=true;user=airavata;password=airavata +# MySql database configuration +appcatalog.jdbc.driver=com.mysql.jdbc.Driver +appcatalog.jdbc.url=jdbc:mysql://{{ db_server }}:3306/{{ app_catalog }} +appcatalog.jdbc.user={{ db_user }} +appcatalog.jdbc.password={{ db_password }} +appcatalog.validationQuery=SELECT 1 from CONFIGURATION + +########################################################################## +# Replica Catalog DB Configuration +########################################################################### +#for derby [AiravataJPARegistry] +#replicacatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver +#replicacatalog.jdbc.url=jdbc:derby://localhost:1527/replica_catalog;create=true;user=airavata;password=airavata +# MySql database configuration +replicacatalog.jdbc.driver=com.mysql.jdbc.Driver +replicacatalog.jdbc.url=jdbc:mysql://{{ db_server }}:3306/{{ replica_catalog }} +replicacatalog.jdbc.user={{ db_user }} +replicacatalog.jdbc.password={{ db_password }} +replicacatalog.validationQuery=SELECT 1 from CONFIGURATION + +########################################################################### +# Workflow Catalog DB Configuration +########################################################################### +#for derby [AiravataJPARegistry] +#workflowcatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver +#workflowcatalog.jdbc.url=jdbc:derby://localhost:1527/workflow_catalog;create=true;user=airavata;password=airavata +# MySql database configuration +workflowcatalog.jdbc.driver=com.mysql.jdbc.Driver +workflowcatalog.jdbc.url=jdbc:mysql://{{ db_server }}:3306/{{ replica_catalog }} +workflowcatalog.jdbc.user={{ db_user }} +workflowcatalog.jdbc.password={{ db_password }} +workflowcatalog.validationQuery=SELECT 1 from CONFIGURATION + +########################################################################### +# User Profile MongoDB Configuration +########################################################################### +userprofile.mongodb.host=localhost +userprofile.mongodb.port=27017 + + +########################################################################### +# Server module Configuration +########################################################################### +#credential store server should be started before API server +#This is obsolete property with new script files. +#servers=credentialstore,apiserver,orchestrator + + +########################################################################### +# API Server Configurations +########################################################################### +apiserver.name={{ api_server_name }} +apiserver.host={{ api_server_host }} +apiserver.port={{ api_server_port }} +apiserver.min.threads=50 + +########################################################################### +# API Server SSL Configurations +########################################################################### +apiserver.tls.enabled=true +apiserver.keystore={{ key_stores_location }}/{{ key_store }} +apiserver.keystore.password=airavata + +########################################################################### +# Orchestrator Server Configurations +########################################################################### +orchestrator.server.name={{ orchestrator_name }} +orchestrator.server.host={{ orchestrator_host }} +orchestrator.server.port={{ orchestrator_port }} +orchestrator.server.min.threads=50 +job.validators=org.apache.airavata.orchestrator.core.validator.impl.BatchQueueValidator,org.apache.airavata.orchestrator.core.validator.impl.ExperimentStatusValidator +submitter.interval=10000 +threadpool.size=10 +start.submitter=true +embedded.mode=true +enable.validation=true + + +########################################################################### +# GFac Server Configurations +########################################################################### +gfac.server.name={{ gfac_name }} +gfac.server.host={{ gfac_host }} +gfac.server.port={{ gfac_port }} +gfac.thread.pool.size=50 +host.scheduler=org.apache.airavata.gfac.impl.DefaultHostScheduler + + + +########################################################################### +# Airavata Workflow Interpreter Configurations +########################################################################### +workflowserver=org.apache.airavata.api.server.WorkflowServer +enactment.thread.pool.size=10 + +#to define custom workflow parser user following property +#workflow.parser=org.apache.airavata.workflow.core.parser.AiravataWorkflowBuilder + + + +########################################################################### +# Job Scheduler can send informative email messages to you about the status of your job. +# Specify a string which consists of either the single character "n" (no mail), or one or more +# of the characters "a" (send mail when job is aborted), "b" (send mail when job begins), +# and "e" (send mail when job terminates). The default is "a" if not specified. +########################################################################### + +job.notification.enable=true +#Provide comma separated email ids as a string if more than one +job.notification.emailids= +job.notification.flags=abe + +########################################################################### +# Credential Store module Configuration +########################################################################### +credential.store.keystore.url=/home/airavata/airavata_sym.jks +credential.store.keystore.alias=airavata +credential.store.keystore.password=airavata +credential.store.jdbc.url=jdbc:mysql://{{ db_server }}:3306/{{ credential_store }} +credential.store.jdbc.user={{ db_user }} +credential.store.jdbc.password={{ db_password }} +credential.store.jdbc.driver=com.mysql.jdbc.Driver +credential.store.server.host={{ cred_store_server_host }} +credential.store.server.port=8960 +credentialstore=org.apache.airavata.credential.store.server.CredentialStoreServer + +# these properties used by credential store email notifications +email.server=smtp.googlemail.com +email.server.port=465 +email.user=airavata +email.password=xxx +email.ssl=true [email protected] + +# SSH PKI key pair or ssh password can be used SSH based sshKeyAuthentication is used. +# if user specify both password sshKeyAuthentication gets the higher preference + +################# ---------- For ssh key pair sshKeyAuthentication ------------------- ################ +#ssh.public.key=/path to public key for ssh +#ssh.private.key=/path to private key file for ssh +#ssh.keypass=passphrase for the private key +#ssh.username=username for ssh connection +## If you set "yes" for ssh.strict.hostKey.checking, then you must provide known hosts file path +#ssh.strict.hostKey.checking=yes/no +#ssh.known.hosts.file=/path to known hosts file +### Incase of password sshKeyAuthentication. +#ssh.password=Password for ssh connection + +################ ---------- BES Properties ------------------- ############### +#bes.ca.cert.path=<location>/certificates/cacert.pem +#bes.ca.key.path=<location>/certificates/cakey.pem +#bes.ca.key.pass=passphrase + +########################################################################### +# Monitoring module Configuration +########################################################################### + +#This will be the primary monitoring tool which runs in airavata, in future there will be multiple monitoring +#mechanisms and one would be able to start a monitor +monitors=org.apache.airavata.gfac.monitor.impl.pull.qstat.QstatMonitor,org.apache.airavata.gfac.monitor.impl.LocalJobMonitor + +#These properties will used to enable email base monitoring +email.based.monitor.host=imap.gmail.com +email.based.monitor.address={{ monitor_email_address }} +email.based.monitor.password={{ monitor_email_password }} +email.based.monitor.folder.name=INBOX +# either imaps or pop3 +email.based.monitor.store.protocol=imaps +#These property will be used to query the email server periodically. value in milliseconds(ms). +email.based.monitoring.period=10000 + +########################################################################### +# AMQP Notification Configuration +########################################################################### +#for simple scenarios we can use the guest user +#rabbitmq.broker.url=amqp://localhost:5672 +#for production scenarios, give url as amqp://userName:password@hostName:portNumber/virtualHost, create user, virtualhost +# and give permissions, refer: http://blog.dtzq.com/2012/06/rabbitmq-users-and-virtual-hosts.html +rabbitmq.broker.url={{ rabbitmq_broker_url }} +status.publisher=org.apache.airavata.messaging.core.impl.RabbitMQStatusPublisher +task.launch.publisher=org.apache.airavata.messaging.core.impl.RabbitMQProcessLaunchPublisher +rabbitmq.status.exchange.name=airavata_rabbitmq_exchange +rabbitmq.task.launch.exchange.name=airavata_task_launch_rabbitmq_exchange +durable.queue=false +prefetch.count=200 +launch.queue.name=launch.queue +cancel.queue.name=cancel.queue +activity.publisher=org.apache.airavata.messaging.core.impl.RabbitMQStatusPublisher +rabbitmq.exchange.name=airavata_rabbitmq_exchange + +########################################################################### +# Zookeeper Server Configuration +########################################################################### +embedded.zk=false +zookeeper.server.connection=localhost:2181 +zookeeper.timeout=30000 + +######################################################################## +## API Security Configuration +######################################################################## +api.secured=true +security.manager.class=org.apache.airavata.api.server.security.DefaultAiravataSecurityManager +### TLS related configuration #### +TLS.enabled=true +TLS.api.server.port=9930 +TLS.client.timeout=10000 +#### keystore configuration #### +keystore.path={{ key_stores_location }}/{{ key_store }} +keystore.password=airavata +#### trust store configuration #### +trust.store={{ key_stores_location }}/{{ cred_key_store }} +trust.store.password=airavata +#### remote authorization server url #### +remote.oauth.authorization.server=https://idp.scigap.org:9443/services/ +#### xacml based authorization policy #### +authorization.policy=airavata-default-xacml-policy +#### authorization cache related configuration #### +authz.cache.enabled=true +authz.cache.manager.class=org.apache.airavata.api.server.security.authzcache.DefaultAuthzCacheManager +in.memory.cache.size=1000 http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/api-orch/templates/gfac-config.yaml.j2 ---------------------------------------------------------------------- diff --git a/roles/api-orch/templates/gfac-config.yaml.j2 b/roles/api-orch/templates/gfac-config.yaml.j2 new file mode 100644 index 0000000..3df5832 --- /dev/null +++ b/roles/api-orch/templates/gfac-config.yaml.j2 @@ -0,0 +1,111 @@ +################################################################## +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +################################################################ + +jobSubmitters: + - submissionProtocol: SSH + taskClass: org.apache.airavata.gfac.impl.task.DefaultJobSubmissionTask +# properties: +# - userName: airavata +# passPhrase: airavata +# privateKey: /path/to/the/privatekey +# publicKey: /path/to/the/publickey +# hostName: remote.client.hostName + + - submissionProtocol: SSH_FORK + taskClass: org.apache.airavata.gfac.impl.task.ForkJobSubmissionTask + + - submissionProtocol: LOCAL + taskClass: org.apache.airavata.gfac.impl.task.DefaultJobSubmissionTask + +# Following job subbmitters are not yet implemented. + + # - submissionProtocol: GSISSH + # taskClass: org.apache.airavata.task.adapters.GSISSHJobSubmissionTask +commonTasks: + - type: SETUP + taskClass: org.apache.airavata.task.common.SetupTask + + - type: CLEANUP + taskClass: org.apache.airavata.task.common.CleanupTask + +fileTransferTasks: +# - transferProtocol: SCP +# taskClass: org.apache.airavata.gfac.impl.task.DataStageTask + +# If your client doen't run the same instance where airavata server is running then you need to comment above +# DataStageTask and uncomment SCPDataStageTask. To work with SCPDataStageTask, you either need to +# provide ssh keys or password. + + - transferProtocol: SCP + taskClass: org.apache.airavata.gfac.impl.task.SCPDataStageTask + properties: + - userName: root + passPhrase: ultrascan + privateKeyPath: /home/airavata/.ssh/id_rsa + publicKeyPath: /home/airavata/.ssh/id_rsa.pub + hostName: gw75.iu.xsede.org + inputPath: /var/www/portal/experimentData/ +# password: password + +# Following transfer tasks are not yet implemented. + #- transferProtocol: SFTP + # taskClass: org.apache.airavata.task.adapters.SFTPFileTransferTask + + #- transferProtocol: GRIDFTP + # taskClass: org.apache.airavata.task.adapters.GRIDFTPFileTransferTask + + #- transferProtocol: LOCAL + # taskClass: org.apache.airavata.task.adapters.LocalFileTransferTask + +resources: + - jobManagerType: PBS + commandOutputParser: org.apache.airavata.gfac.impl.job.PBSOutputParser + emailParser: org.apache.airavata.gfac.monitor.email.parser.PBSEmailParser + resourceEmailAddresses: + - [email protected] # gordon + - [email protected] # Bigred2 + - root <[email protected]> # Bigred2 + - root <[email protected]> # alamo + - root <[email protected]> #karst + + - jobManagerType: SLURM + commandOutputParser: org.apache.airavata.gfac.impl.job.SlurmOutputParser + emailParser: org.apache.airavata.gfac.monitor.email.parser.SLURMEmailParser + resourceEmailAddresses: + - SDSC Admin <[email protected]> # comet + - [email protected] # stampede + - SDSC Admin <[email protected]> # comet new + - Slurm <[email protected]> # bridges + - Slurm Daemon <[email protected]> # OU Schooner + + - jobManagerType: UGE + commandOutputParser: org.apache.airavata.gfac.impl.job.UGEOutputParser + emailParser: org.apache.airavata.gfac.monitor.email.parser.UGEEmailParser + resourceEmailAddresses: + - ls4.tacc.utexas.edu # contain Lonestar + + - jobManagerType: LSF + commandOutputParser: org.apache.airavata.gfac.impl.job.LSFOutputParser + emailParser: org.apache.airavata.gfac.monitor.email.parser.LSFEmailParser + resourceEmailAddresses: + - iu.xsede.edu # test resource mail address + + - jobManagerType: FORK + commandOutputParser: org.apache.airavata.gfac.impl.job.ForkOutputParser http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/api-orch/vars/main.yml ---------------------------------------------------------------------- diff --git a/roles/api-orch/vars/main.yml b/roles/api-orch/vars/main.yml new file mode 100644 index 0000000..16b85b0 --- /dev/null +++ b/roles/api-orch/vars/main.yml @@ -0,0 +1,3 @@ +--- +# API Server and Orchestrator related variables +api_orch_dir: "{{ deployment_dir }}/api-orchestrator" http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/common/files/airavata.jks ---------------------------------------------------------------------- diff --git a/roles/common/files/airavata.jks b/roles/common/files/airavata.jks new file mode 100644 index 0000000..e0e46e2 Binary files /dev/null and b/roles/common/files/airavata.jks differ http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/common/files/client_truststore.jks ---------------------------------------------------------------------- diff --git a/roles/common/files/client_truststore.jks b/roles/common/files/client_truststore.jks new file mode 100644 index 0000000..4d39906 Binary files /dev/null and b/roles/common/files/client_truststore.jks differ http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/common/handlers/main.yml ---------------------------------------------------------------------- diff --git a/roles/common/handlers/main.yml b/roles/common/handlers/main.yml new file mode 100644 index 0000000..d5c99e94 --- /dev/null +++ b/roles/common/handlers/main.yml @@ -0,0 +1,45 @@ +--- +# Handler file +# Can have multiple handlers + +# Zookeeper related handlers +- name: start zookeeper + command: ./bin/zkServer.sh start chdir={{zookeeper_dir}}/ creates={{zookeeper_data_dir}}/zookeeper_server.pid + become: true + become_user: "{{ user }}" + +- name: stop zookeeper + command: ./bin/zkServer.sh stop chdir={{zookeeper_dir}}/ removes={{zookeeper_data_dir}}/zookeeper_server.pid + become: true + become_user: "{{ user }}" + +- name: restart zookeeper + command: ./bin/zkServer.sh restart chdir={{zookeeper_dir}}/ removes={{zookeeper_data_dir}}/zookeeper_server.pid + become: true + become_user: "{{ user }}" + +# Rabbitmq related handlers +- name: start rabbitmq + service: name=rabbitmq-server state=started + +- name: stop rabbitmq + service: name=rabbitmq-server state=stopped + +- name: restart rabbitmq + service: name=rabbitmq-server state=restarted + +# Gfac related handlers +- name: start gfac + command: ./bin/airavata-server-start.sh gfac -d chdir="{{ gfac_dir }}/{{ airavata_dist }}/" creates="{{ gfac_dir }}/{{ airavata_dist }}/bin/server_start_*" + +- name: stop gfac + command: ./bin/airavata-server-stop.sh -f chdir="{{ gfac_dir }}/{{ airavata_dist }}/" removes="{{ gfac_dir }}/{{ airavata_dist }}/bin/server_start_*" + +# Gfac related handlers +- name: start api-orch + command: ./bin/airavata-server-start.sh api-orch -d chdir="{{ api_orch_dir }}/{{ airavata_dist }}/" creates="{{ api_orch_dir }}/{{ airavata_dist }}/bin/server_start_*" + +- name: stop api-orch + command: ./bin/airavata-server-stop.sh -f chdir="{{ api_orch_dir }}/{{ airavata_dist }}/" removes="{{ api_orch_dir }}/{{ airavata_dist }}/bin/server_start_*" + +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/common/tasks/main.yml ---------------------------------------------------------------------- diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml new file mode 100644 index 0000000..18d628d --- /dev/null +++ b/roles/common/tasks/main.yml @@ -0,0 +1,40 @@ +--- +# Setup airavata source +- name: Create deployment directory {{ deployment_dir }} + file: path={{ deployment_dir }} state=directory mode=0755 + become: true + become_user: "{{ user }}" + tags: deploy + +- name: Create source directory + file: path={{airavata_source_dir}} state=directory mode=0755 owner={{ user }} group={{ group }} + tags: deploy + +- name: git checkout from airavata github + git: repo=https://git-wip-us.apache.org/repos/asf/airavata.git dest="{{ airavata_source_dir }}" version=master + register: checkout + become: true + become_user: "{{ user }}" + tags: deploy, update_gfac, update_api_orch, update + +- name: Run maven build + command: mvn clean install -Dmaven.test.skip=true chdir="{{ airavata_source_dir }}/" + when: (checkout|success) or (checkout|skipped) + register: build + become: true + become_user: "{{ user }}" + tags: deploy, update_gfac, update_api_orch, update + +################################################################################ +# copy key store and trust store files +- name: Create KeyStores directory + file: path="{{ key_stores_location }}" state=directory owner="{{ user }}" group="{{ group }}" + tags: deploy + +- name: Transfer airavata.jks KeyStore file + copy: src="{{ key_store }}" dest="{{ key_stores_location }}/{{ key_store }}" owner="{{ user }}" group="{{ group }}" + tags: deploy + +- name: Transfer client trust store KeyStore file + copy: src="{{ cred_key_store }}" dest="{{ key_stores_location }}/{{ cred_key_store }}" owner="{{ user }}" group="{{ group }}" + tags: deploy http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/common/vars/main.yml ---------------------------------------------------------------------- diff --git a/roles/common/vars/main.yml b/roles/common/vars/main.yml new file mode 100644 index 0000000..0071b42 --- /dev/null +++ b/roles/common/vars/main.yml @@ -0,0 +1,5 @@ +--- +# Common variables +airavata_source_dir: "{{ user_home }}/source" + +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/gfac/files/mysql-connector-java-5.1.37-bin.jar ---------------------------------------------------------------------- diff --git a/roles/gfac/files/mysql-connector-java-5.1.37-bin.jar b/roles/gfac/files/mysql-connector-java-5.1.37-bin.jar new file mode 100644 index 0000000..465af67 Binary files /dev/null and b/roles/gfac/files/mysql-connector-java-5.1.37-bin.jar differ http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/gfac/handlers/main.yml ---------------------------------------------------------------------- diff --git a/roles/gfac/handlers/main.yml b/roles/gfac/handlers/main.yml new file mode 100644 index 0000000..b3d85a9 --- /dev/null +++ b/roles/gfac/handlers/main.yml @@ -0,0 +1,8 @@ +--- + +# Gfac related handlers +- name: start gfac + command: ./bin/airavata-server-start.sh gfac -d chdir="{{ gfac_dir }}/{{ airavata_dist }}/" creates="{{ gfac_dir }}/{{ airavata_dist }}/bin/server_start_*" + +- name: stop gfac + command: ./bin/airavata-server-stop.sh -f chdir="{{ gfac_dir }}/{{ airavata_dist }}/" removes="{{ gfac_dir }}/{{ airavata_dist }}/bin/server_start_*" http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/gfac/tasks/main.yml ---------------------------------------------------------------------- diff --git a/roles/gfac/tasks/main.yml b/roles/gfac/tasks/main.yml new file mode 100644 index 0000000..bae85cf --- /dev/null +++ b/roles/gfac/tasks/main.yml @@ -0,0 +1,53 @@ +--- + +################################################################################ +# gfac deployments +- name: Create Gfac deployment directory + file: path="{{ gfac_dir }}" state=directory owner="{{ user }}" group="{{ group }}" + when: build|success + tags: deploy, update_gfac, update + +- name: Check previous deployments + stat: path="{{ gfac_dir }}/{{ airavata_dist }}" get_md5=no get_checksum=no + register: p + tags: deploy, update_gfac, update + +- block: + - name: stop gfac + command: ./bin/airavata-server-stop.sh -f chdir="{{ gfac_dir }}/{{ airavata_dist }}/" removes="{{ gfac_dir }}/{{ airavata_dist }}/bin/server_start_*" + + - name: Delete previous deployments + file: path="{{ gfac_dir }}/{{ airavata_dist }}" state=absent + + when: p.stat.exists == True + tags: deploy, update_gfac, update + +# - block: +# - name: Remove pervious backup directory +# file: path="{{ gfac_dir }}/backup" state=absent +# notify: +# - stop gfac +# +# - name: Backup previous deployment directory +# copy: src="{{ gfac_dir }}/{{ airavata_dist }}" dest="{{ gfac_dir }}/backup" copy=no +# +# when: p.stat.exists == True +# tags: deploy, update_gfac, update + +- name: Copy distribution to gfac deployment directory + unarchive: src="{{ airavata_source_dir }}/distribution/target/{{ airavata_dist_name }}" dest="{{ gfac_dir }}/" copy=no + become: yes + become_user: "{{ user }}" + tags: deploy, update_gfac, update + +- name: Copy Airavata server properties file + template: src=airavata-server.properties.j2 dest="{{ gfac_dir }}/{{ airavata_dist }}/bin/airavata-server.properties" owner="{{ user }}" group="{{ group }}" mode="u=rw,g=r,o=r" + tags: deploy, update_gfac, update + +- name: Copy Gfac configuration file + template: src=gfac-config.yaml.j2 dest="{{ gfac_dir }}/{{ airavata_dist }}/bin/gfac-config.yaml" owner="{{ user }}" group="{{ group }}" mode="u=rw,g=r,o=r" + tags: deploy, update_gfac, update + +- name: Copy Mysql jar to lib + copy: src="{{ mysql_connector_jar }}" dest="{{ gfac_dir }}/{{ airavata_dist }}/lib/{{ mysql_connector_jar }}" owner="{{ user }}" group="{{ group }}" + tags: deploy, update_gfac, update http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/gfac/templates/airavata-server.properties.j2 ---------------------------------------------------------------------- diff --git a/roles/gfac/templates/airavata-server.properties.j2 b/roles/gfac/templates/airavata-server.properties.j2 new file mode 100644 index 0000000..449a7fd --- /dev/null +++ b/roles/gfac/templates/airavata-server.properties.j2 @@ -0,0 +1,278 @@ +# +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +########################################################################### +# +# This properties file provides configuration for all Airavata Services: +# API Server, Registry, Workflow Interpreter, GFac, Orchestrator +# +########################################################################### + +########################################################################### +# API Server Registry Configuration +########################################################################### + +#for derby [AiravataJPARegistry] +#registry.jdbc.driver=org.apache.derby.jdbc.ClientDriver +#registry.jdbc.url=jdbc:derby://localhost:1527/experiment_catalog;create=true;user=airavata;password=airavata +# MySql database configuration +registry.jdbc.driver=com.mysql.jdbc.Driver +registry.jdbc.url=jdbc:mysql://{{ db_server }}:3306/{{ exp_catalog }} +registry.jdbc.user={{ db_user }} +registry.jdbc.password={{ db_password }} +#FIXME: Probably the following property should be removed. +start.derby.server.mode=false +validationQuery=SELECT 1 from CONFIGURATION +cache.enable=false +jpa.cache.size=-1 +#jpa.connection.properties=MaxActive=10,MaxIdle=5,MinIdle=2,MaxWait=60000,testWhileIdle=true,testOnBorrow=true + +# Properties for default user mode +default.registry.user=admin +default.registry.password=admin +default.registry.password.hash.method=SHA +default.registry.gateway=default + +########################################################################### +# Application Catalog DB Configuration +########################################################################### +#for derby [AiravataJPARegistry] +#appcatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver +#appcatalog.jdbc.url=jdbc:derby://localhost:1527/app_catalog;create=true;user=airavata;password=airavata +# MySql database configuration +appcatalog.jdbc.driver=com.mysql.jdbc.Driver +appcatalog.jdbc.url=jdbc:mysql://{{ db_server }}:3306/{{ app_catalog }} +appcatalog.jdbc.user={{ db_user }} +appcatalog.jdbc.password={{ db_password }} +appcatalog.validationQuery=SELECT 1 from CONFIGURATION + +########################################################################## +# Replica Catalog DB Configuration +########################################################################### +#for derby [AiravataJPARegistry] +#replicacatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver +#replicacatalog.jdbc.url=jdbc:derby://localhost:1527/replica_catalog;create=true;user=airavata;password=airavata +# MySql database configuration +replicacatalog.jdbc.driver=com.mysql.jdbc.Driver +replicacatalog.jdbc.url=jdbc:mysql://{{ db_server }}:3306/{{ replica_catalog }} +replicacatalog.jdbc.user={{ db_user }} +replicacatalog.jdbc.password={{ db_password }} +replicacatalog.validationQuery=SELECT 1 from CONFIGURATION + +########################################################################### +# Workflow Catalog DB Configuration +########################################################################### +#for derby [AiravataJPARegistry] +#workflowcatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver +#workflowcatalog.jdbc.url=jdbc:derby://localhost:1527/workflow_catalog;create=true;user=airavata;password=airavata +# MySql database configuration +workflowcatalog.jdbc.driver=com.mysql.jdbc.Driver +workflowcatalog.jdbc.url=jdbc:mysql://{{ db_server }}:3306/{{ replica_catalog }} +workflowcatalog.jdbc.user={{ db_user }} +workflowcatalog.jdbc.password={{ db_password }} +workflowcatalog.validationQuery=SELECT 1 from CONFIGURATION + +########################################################################### +# User Profile MongoDB Configuration +########################################################################### +userprofile.mongodb.host=localhost +userprofile.mongodb.port=27017 + + +########################################################################### +# Server module Configuration +########################################################################### +#credential store server should be started before API server +#This is obsolete property with new script files. +#servers=credentialstore,apiserver,orchestrator + + +########################################################################### +# API Server Configurations +########################################################################### +apiserver.name={{ api_server_name }} +apiserver.host={{ api_server_host }} +apiserver.port={{ api_server_port }} +apiserver.min.threads=50 + +########################################################################### +# API Server SSL Configurations +########################################################################### +apiserver.tls.enabled=true +apiserver.keystore={{ key_stores_location }}/{{ key_store }} +apiserver.keystore.password=airavata + +########################################################################### +# Orchestrator Server Configurations +########################################################################### +orchestrator.server.name={{ orchestrator_name }} +orchestrator.server.host={{ orchestrator_host }} +orchestrator.server.port={{ orchestrator_port }} +orchestrator.server.min.threads=50 +job.validators=org.apache.airavata.orchestrator.core.validator.impl.BatchQueueValidator,org.apache.airavata.orchestrator.core.validator.impl.ExperimentStatusValidator +submitter.interval=10000 +threadpool.size=10 +start.submitter=true +embedded.mode=true +enable.validation=true + + +########################################################################### +# GFac Server Configurations +########################################################################### +gfac.server.name={{ gfac_name }} +gfac.server.host={{ gfac_host }} +gfac.server.port={{ gfac_port }} +gfac.thread.pool.size=50 +host.scheduler=org.apache.airavata.gfac.impl.DefaultHostScheduler + + + +########################################################################### +# Airavata Workflow Interpreter Configurations +########################################################################### +workflowserver=org.apache.airavata.api.server.WorkflowServer +enactment.thread.pool.size=10 + +#to define custom workflow parser user following property +#workflow.parser=org.apache.airavata.workflow.core.parser.AiravataWorkflowBuilder + + + +########################################################################### +# Job Scheduler can send informative email messages to you about the status of your job. +# Specify a string which consists of either the single character "n" (no mail), or one or more +# of the characters "a" (send mail when job is aborted), "b" (send mail when job begins), +# and "e" (send mail when job terminates). The default is "a" if not specified. +########################################################################### + +job.notification.enable=true +#Provide comma separated email ids as a string if more than one +job.notification.emailids= +job.notification.flags=abe + +########################################################################### +# Credential Store module Configuration +########################################################################### +credential.store.keystore.url=/home/airavata/airavata_sym.jks +credential.store.keystore.alias=airavata +credential.store.keystore.password=airavata +credential.store.jdbc.url=jdbc:mysql://{{ db_server }}:3306/{{ credential_store }} +credential.store.jdbc.user={{ db_user }} +credential.store.jdbc.password={{ db_password }} +credential.store.jdbc.driver=com.mysql.jdbc.Driver +credential.store.server.host={{ cred_store_server_host }} +credential.store.server.port=8960 +credentialstore=org.apache.airavata.credential.store.server.CredentialStoreServer + +# these properties used by credential store email notifications +email.server=smtp.googlemail.com +email.server.port=465 +email.user=airavata +email.password=xxx +email.ssl=true [email protected] + +# SSH PKI key pair or ssh password can be used SSH based sshKeyAuthentication is used. +# if user specify both password sshKeyAuthentication gets the higher preference + +################# ---------- For ssh key pair sshKeyAuthentication ------------------- ################ +#ssh.public.key=/path to public key for ssh +#ssh.private.key=/path to private key file for ssh +#ssh.keypass=passphrase for the private key +#ssh.username=username for ssh connection +## If you set "yes" for ssh.strict.hostKey.checking, then you must provide known hosts file path +#ssh.strict.hostKey.checking=yes/no +#ssh.known.hosts.file=/path to known hosts file +### Incase of password sshKeyAuthentication. +#ssh.password=Password for ssh connection + +################ ---------- BES Properties ------------------- ############### +#bes.ca.cert.path=<location>/certificates/cacert.pem +#bes.ca.key.path=<location>/certificates/cakey.pem +#bes.ca.key.pass=passphrase + +########################################################################### +# Monitoring module Configuration +########################################################################### + +#This will be the primary monitoring tool which runs in airavata, in future there will be multiple monitoring +#mechanisms and one would be able to start a monitor +monitors=org.apache.airavata.gfac.monitor.impl.pull.qstat.QstatMonitor,org.apache.airavata.gfac.monitor.impl.LocalJobMonitor + +#These properties will used to enable email base monitoring +email.based.monitor.host=imap.gmail.com +email.based.monitor.address={{ monitor_email_address }} +email.based.monitor.password={{ monitor_email_password }} +email.based.monitor.folder.name=INBOX +# either imaps or pop3 +email.based.monitor.store.protocol=imaps +#These property will be used to query the email server periodically. value in milliseconds(ms). +email.based.monitoring.period=10000 + +########################################################################### +# AMQP Notification Configuration +########################################################################### +#for simple scenarios we can use the guest user +#rabbitmq.broker.url=amqp://localhost:5672 +#for production scenarios, give url as amqp://userName:password@hostName:portNumber/virtualHost, create user, virtualhost +# and give permissions, refer: http://blog.dtzq.com/2012/06/rabbitmq-users-and-virtual-hosts.html +rabbitmq.broker.url={{ rabbitmq_broker_url }} +status.publisher=org.apache.airavata.messaging.core.impl.RabbitMQStatusPublisher +task.launch.publisher=org.apache.airavata.messaging.core.impl.RabbitMQProcessLaunchPublisher +rabbitmq.status.exchange.name=airavata_rabbitmq_exchange +rabbitmq.task.launch.exchange.name=airavata_task_launch_rabbitmq_exchange +durable.queue=false +prefetch.count=200 +launch.queue.name=launch.queue +cancel.queue.name=cancel.queue +activity.publisher=org.apache.airavata.messaging.core.impl.RabbitMQStatusPublisher +rabbitmq.exchange.name=airavata_rabbitmq_exchange + +########################################################################### +# Zookeeper Server Configuration +########################################################################### +embedded.zk=false +zookeeper.server.connection=localhost:2181 +zookeeper.timeout=30000 + +######################################################################## +## API Security Configuration +######################################################################## +api.secured=true +security.manager.class=org.apache.airavata.api.server.security.DefaultAiravataSecurityManager +### TLS related configuration #### +TLS.enabled=true +TLS.api.server.port=9930 +TLS.client.timeout=10000 +#### keystore configuration #### +keystore.path={{ key_stores_location }}/{{ key_store }} +keystore.password=airavata +#### trust store configuration #### +trust.store={{ key_stores_location }}/{{ cred_key_store }} +trust.store.password=airavata +#### remote authorization server url #### +remote.oauth.authorization.server=https://idp.scigap.org:9443/services/ +#### xacml based authorization policy #### +authorization.policy=airavata-default-xacml-policy +#### authorization cache related configuration #### +authz.cache.enabled=true +authz.cache.manager.class=org.apache.airavata.api.server.security.authzcache.DefaultAuthzCacheManager +in.memory.cache.size=1000 http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/gfac/templates/gfac-config.yaml.j2 ---------------------------------------------------------------------- diff --git a/roles/gfac/templates/gfac-config.yaml.j2 b/roles/gfac/templates/gfac-config.yaml.j2 new file mode 100644 index 0000000..3df5832 --- /dev/null +++ b/roles/gfac/templates/gfac-config.yaml.j2 @@ -0,0 +1,111 @@ +################################################################## +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +################################################################ + +jobSubmitters: + - submissionProtocol: SSH + taskClass: org.apache.airavata.gfac.impl.task.DefaultJobSubmissionTask +# properties: +# - userName: airavata +# passPhrase: airavata +# privateKey: /path/to/the/privatekey +# publicKey: /path/to/the/publickey +# hostName: remote.client.hostName + + - submissionProtocol: SSH_FORK + taskClass: org.apache.airavata.gfac.impl.task.ForkJobSubmissionTask + + - submissionProtocol: LOCAL + taskClass: org.apache.airavata.gfac.impl.task.DefaultJobSubmissionTask + +# Following job subbmitters are not yet implemented. + + # - submissionProtocol: GSISSH + # taskClass: org.apache.airavata.task.adapters.GSISSHJobSubmissionTask +commonTasks: + - type: SETUP + taskClass: org.apache.airavata.task.common.SetupTask + + - type: CLEANUP + taskClass: org.apache.airavata.task.common.CleanupTask + +fileTransferTasks: +# - transferProtocol: SCP +# taskClass: org.apache.airavata.gfac.impl.task.DataStageTask + +# If your client doen't run the same instance where airavata server is running then you need to comment above +# DataStageTask and uncomment SCPDataStageTask. To work with SCPDataStageTask, you either need to +# provide ssh keys or password. + + - transferProtocol: SCP + taskClass: org.apache.airavata.gfac.impl.task.SCPDataStageTask + properties: + - userName: root + passPhrase: ultrascan + privateKeyPath: /home/airavata/.ssh/id_rsa + publicKeyPath: /home/airavata/.ssh/id_rsa.pub + hostName: gw75.iu.xsede.org + inputPath: /var/www/portal/experimentData/ +# password: password + +# Following transfer tasks are not yet implemented. + #- transferProtocol: SFTP + # taskClass: org.apache.airavata.task.adapters.SFTPFileTransferTask + + #- transferProtocol: GRIDFTP + # taskClass: org.apache.airavata.task.adapters.GRIDFTPFileTransferTask + + #- transferProtocol: LOCAL + # taskClass: org.apache.airavata.task.adapters.LocalFileTransferTask + +resources: + - jobManagerType: PBS + commandOutputParser: org.apache.airavata.gfac.impl.job.PBSOutputParser + emailParser: org.apache.airavata.gfac.monitor.email.parser.PBSEmailParser + resourceEmailAddresses: + - [email protected] # gordon + - [email protected] # Bigred2 + - root <[email protected]> # Bigred2 + - root <[email protected]> # alamo + - root <[email protected]> #karst + + - jobManagerType: SLURM + commandOutputParser: org.apache.airavata.gfac.impl.job.SlurmOutputParser + emailParser: org.apache.airavata.gfac.monitor.email.parser.SLURMEmailParser + resourceEmailAddresses: + - SDSC Admin <[email protected]> # comet + - [email protected] # stampede + - SDSC Admin <[email protected]> # comet new + - Slurm <[email protected]> # bridges + - Slurm Daemon <[email protected]> # OU Schooner + + - jobManagerType: UGE + commandOutputParser: org.apache.airavata.gfac.impl.job.UGEOutputParser + emailParser: org.apache.airavata.gfac.monitor.email.parser.UGEEmailParser + resourceEmailAddresses: + - ls4.tacc.utexas.edu # contain Lonestar + + - jobManagerType: LSF + commandOutputParser: org.apache.airavata.gfac.impl.job.LSFOutputParser + emailParser: org.apache.airavata.gfac.monitor.email.parser.LSFEmailParser + resourceEmailAddresses: + - iu.xsede.edu # test resource mail address + + - jobManagerType: FORK + commandOutputParser: org.apache.airavata.gfac.impl.job.ForkOutputParser http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/gfac/vars/main.yml ---------------------------------------------------------------------- diff --git a/roles/gfac/vars/main.yml b/roles/gfac/vars/main.yml new file mode 100644 index 0000000..f5451c3 --- /dev/null +++ b/roles/gfac/vars/main.yml @@ -0,0 +1,3 @@ +--- +# Gfac related variables +gfac_dir: "{{ deployment_dir }}/gfac-instance" http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/rabbitmq/handlers/main.yml ---------------------------------------------------------------------- diff --git a/roles/rabbitmq/handlers/main.yml b/roles/rabbitmq/handlers/main.yml new file mode 100644 index 0000000..4515589 --- /dev/null +++ b/roles/rabbitmq/handlers/main.yml @@ -0,0 +1,10 @@ +--- +# Rabbitmq related handlers +- name: start rabbitmq + service: name=rabbitmq-server state=started + +- name: stop rabbitmq + service: name=rabbitmq-server state=stopped + +- name: restart rabbitmq + service: name=rabbitmq-server state=restarted http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/rabbitmq/tasks/main.yml ---------------------------------------------------------------------- diff --git a/roles/rabbitmq/tasks/main.yml b/roles/rabbitmq/tasks/main.yml new file mode 100644 index 0000000..1d0647b --- /dev/null +++ b/roles/rabbitmq/tasks/main.yml @@ -0,0 +1,44 @@ +--- + + +################################################################################ +# Setup and run rabbitmq +- name: Install erlang latest version + yum: name=https://www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm state=present + tags: rabbitmq, dependency + + +- name: Install Rabbitmq rpm + yum: name=https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.3/rabbitmq-server-3.6.3-1.noarch.rpm state=present + tags: rabbimq, dependency + + # add hostname to /etc/hosts file +- name: Edit /etc/hosts file + lineinfile: dest=/etc/hosts line="{{ host_address }} {{host_name}}" + notify: + - restart rabbitmq + tags: rabbitmq, dependency + +- name: Start Rabbitmq server + service: name=rabbitmq-server state=started + tags: rabbitmq, dependency + +- name: Enable rabbitmq management plugin + rabbitmq_plugin: names=rabbitmq_management state=enabled + tags: rabbitmq, dependency + +- name: Create rabbitmq vhost {{ rabbitmq_vhost }} + rabbitmq_vhost: name="{{ rabbitmq_vhost }}" state=present + tags: rabbitmq, dependency + +- name: Add user {{ rabbitmq_user }} to vhost {{ rabbitmq_vhost }} and give permission + rabbitmq_user: user="{{ rabbitmq_user }}" + password="{{ rabbitmq_password }}" + vhost="{{ rabbitmq_vhost }}" + configure_priv=.* + read_priv=.* + write_priv=.* + state=present + tags: rabbitmq, dependency + +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/setup/tasks/main.yml ---------------------------------------------------------------------- diff --git a/roles/setup/tasks/main.yml b/roles/setup/tasks/main.yml new file mode 100644 index 0000000..a20b018 --- /dev/null +++ b/roles/setup/tasks/main.yml @@ -0,0 +1,44 @@ +--- +#Tasks file can include smaller files if wanted +#All commons tasks goes here +- name: Create a new user group "{{ group }}" + group: name={{ group }} + tags: user + +- name: Create a new user "{{ user }}" + user: name={{ user }} group={{ group }} + tags: user + +################################################################################ +- name: Install git latest version + yum: name=git state=latest update_cache=yes + tags: env + +- name: Install maven latest version + yum: name=maven state=latest update_cache=yes + tags: env + +################################################################################ +# Install Orcal Java +- name: download oracle java 8 rpm + get_url: url="{{ java_rpm_url }}" dest="{{ java_dir_source }}" headers='Cookie:oraclelicense=accept-securebackup-cookie' + tags: env + +- name: Install oracle java 8 + yum: name="{{ java_dir_source }}/{{ java_rpm_filename }}" state=present + tags: env + +- name: set Java version as default + alternatives: + name="{{ item.exe }}" + link="/usr/bin/{{ item.exe }}" + path="{{ item.path }}/{{ item.exe }}" + with_items: + - { path: "{{ java_home }}/jre/bin", exe: 'java' } + - { path: "{{ java_home }}/jre/bin", exe: 'keytool' } + - { path: "{{ java_home }}/bin", exe: 'javac' } + - { path: "{{ java_home }}/bin", exe: 'javadoc' } + tags: env + +# End +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/setup/tasks/redhat.yml ---------------------------------------------------------------------- diff --git a/roles/setup/tasks/redhat.yml b/roles/setup/tasks/redhat.yml new file mode 100644 index 0000000..a0e56c7 --- /dev/null +++ b/roles/setup/tasks/redhat.yml @@ -0,0 +1,12 @@ +--- +- name: Install git latest version + yum: name=git state=latest update_cache=yes +# become: true +# become_user: airavata + tags: env_setup + +- name: Install maven latest version + yum: name=maven state=latest update_cache=yes + tags: env_setup + +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/setup/vars/main.yml ---------------------------------------------------------------------- diff --git a/roles/setup/vars/main.yml b/roles/setup/vars/main.yml new file mode 100644 index 0000000..a995684 --- /dev/null +++ b/roles/setup/vars/main.yml @@ -0,0 +1,15 @@ +--- +#Variables associated with this role +# Oracle Java 8 +java_dir_source: "/usr/local/src" + +java_version: 8 +java_version_update: 91 +java_version_build: '14' +java_version_string: "1.{{ java_version }}.0_{{ java_version_update }}" +java_home: "/usr/java/jdk1.{{ java_version }}.0_{{ java_version_update }}" + +java_rpm_filename: "jdk-{{ java_version }}u{{ java_version_update }}-linux-x64.rpm" +java_rpm_url: "http://download.oracle.com/otn-pub/java/jdk/{{ java_version }}u{{ java_version_update }}-b{{ java_version_build }}/{{ java_rpm_filename }}" + +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/zookeeper/handlers/main.yml ---------------------------------------------------------------------- diff --git a/roles/zookeeper/handlers/main.yml b/roles/zookeeper/handlers/main.yml new file mode 100644 index 0000000..c6d7c34 --- /dev/null +++ b/roles/zookeeper/handlers/main.yml @@ -0,0 +1,19 @@ +--- + +# Zookeeper related handlers +- name: start zookeeper + command: ./bin/zkServer.sh start chdir={{zookeeper_dir}}/ creates={{zookeeper_data_dir}}/zookeeper_server.pid + become: true + become_user: "{{ user }}" + +- name: stop zookeeper + command: ./bin/zkServer.sh stop chdir={{zookeeper_dir}}/ removes={{zookeeper_data_dir}}/zookeeper_server.pid + become: true + become_user: "{{ user }}" + +- name: restart zookeeper + command: ./bin/zkServer.sh restart chdir={{zookeeper_dir}}/ removes={{zookeeper_data_dir}}/zookeeper_server.pid + become: true + become_user: "{{ user }}" + +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/zookeeper/tasks/main.yml ---------------------------------------------------------------------- diff --git a/roles/zookeeper/tasks/main.yml b/roles/zookeeper/tasks/main.yml new file mode 100644 index 0000000..c1fd86b --- /dev/null +++ b/roles/zookeeper/tasks/main.yml @@ -0,0 +1,15 @@ +--- +################################################################################ +# Setup and run Zookeeper +- name: Download and unarchive zookeeper + unarchive: src="{{ zookeeper_url }}" dest="{{ user_home }}" copy=no owner="{{ user }}" group="{{ group }}" + tags: zookeeper, dependency + +- name: Copy zoo.cfg file + template: src=zoo.cfg.j2 dest="{{ zookeeper_dir }}/conf/zoo.cfg" owner="{{ user }}" group="{{ group }}" mode="u=rw,g=r,o=r" + notify: + - start zookeeper + - restart zookeeper + tags: zookeeper, dependency + +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/zookeeper/templates/zoo.cfg.j2 ---------------------------------------------------------------------- diff --git a/roles/zookeeper/templates/zoo.cfg.j2 b/roles/zookeeper/templates/zoo.cfg.j2 new file mode 100644 index 0000000..8426b98 --- /dev/null +++ b/roles/zookeeper/templates/zoo.cfg.j2 @@ -0,0 +1,28 @@ +# The number of milliseconds of each tick +tickTime={{tick_time}} +# The number of ticks that the initial +# synchronization phase can take +initLimit={{init_limit}} +# The number of ticks that can pass between +# sending a request and getting an acknowledgement +syncLimit={{sync_limit}} +# the directory where the snapshot is stored. +# do not use /tmp for storage, /tmp here is just +# example sakes. +dataDir={{zookeeper_data_dir}} +# the port at which the clients will connect +clientPort={{ client_port }} +# the maximum number of client connections. +# increase this if you need to handle more clients +#maxClientCnxns=60 +# +# Be sure to read the maintenance section of the +# administrator guide before turning on autopurge. +# +# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance +# +# The number of snapshots to retain in dataDir +#autopurge.snapRetainCount=3 +# Purge task interval in hours +# Set to "0" to disable auto purge feature +#autopurge.purgeInterval=1 http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/roles/zookeeper/vars/main.yml ---------------------------------------------------------------------- diff --git a/roles/zookeeper/vars/main.yml b/roles/zookeeper/vars/main.yml new file mode 100644 index 0000000..dd40e56 --- /dev/null +++ b/roles/zookeeper/vars/main.yml @@ -0,0 +1,17 @@ +--- +#Variables associated with this role +# zookeeper related variable +zookeeper_version: 3.4.8 +zookeeper_url: http://www.us.apache.org/dist/zookeeper/zookeeper-{{zookeeper_version}}/zookeeper-{{zookeeper_version}}.tar.gz + +apt_cache_timeout: 3600 +client_port: 2183 +init_limit: 5 +sync_limit: 2 +tick_time: 2000 +data_dir: /var/lib/zookeeper +log_dir: /var/log/zookeeper +zookeeper_dir: "{{ user_home }}/zookeeper-{{zookeeper_version}}" +zookeeper_data_dir: "{{ zookeeper_dir }}/data" + +... http://git-wip-us.apache.org/repos/asf/airavata/blob/56384a1a/site.yml ---------------------------------------------------------------------- diff --git a/site.yml b/site.yml new file mode 100644 index 0000000..cf71290 --- /dev/null +++ b/site.yml @@ -0,0 +1,25 @@ +--- +#Master playbook +- hosts: zookeeper + roles: + - setup + - zookeeper + +- hosts: rabbitmq + roles: + - setup + - rabbitmq + +- hosts: gfac + roles: + - setup + - common + - gfac + +- hosts: api-orch + roles: + - setup + - common + - api-orch + +...
