update per review comments and changing to 7.3.1 config

This commit is contained in:
nidhi0622 2024-05-14 15:38:28 -05:00
Родитель d02b136445
Коммит d474610276
14 изменённых файлов: 145 добавлений и 113 удалений

Просмотреть файл

@ -154,18 +154,19 @@ Please contact azure support for help with this configuration.
You can run install.sh within the folder and it will install python virtual environment at
plugin path like below:
$HF_TOP/$HF_VERSION/providerplugins/azurecc/scripts/venv
If you also need to generate symphony configuration then you can run install.sh with argument generate_config. This will set all the configurations assuming you have only azurecc provider and enable it.
If you also need to generate symphony configuration then you can run install.sh with argument generate_config and other required arguments. This will set all the configurations assuming you have only azurecc provider and enable it.Example:
./install.sh generate_config --cluster <cluster_name> --username <username> --password <password> --web_server <webserver>
## Guide to using scripts
These scripts can be found under $HF_TOP/$HF_VERSION/providerplugins/azurecc/scripts
These scripts can be found under $HF_TOP/$HF_VERSION/providerplugins/azurecc/scripts.
1. generateWeightedTemplates.sh
This script is used to generated weighted template. You need to run this script as root.
./generateWeightedTemplates.sh
This will create a template based on current cyclecloud template selections and print it.
If there are errors please check in /tmp/template_generate.out
You must then store template in $HF_TOP/$HF_VERSION/hostfactory/providers/conf/azurecc_templates.json file.
You must then store template in $HF_TOP/$HF_VERSION/hostfactory/providers/conf/azurecc_templates.json file. After storing the file the change will take effect only after you stop and start HostFactory.
2. testDryRunWeightedTemplates.sh
These are test scripts which has 2 options:
a. validate_templates - this will check the template in default path where azurecc_templates.json is stored
@ -182,31 +183,36 @@ Please contact azure support for help with this configuration.
## Testing capacity issues
You can trigger a capacity issue using following python script.
Run LastFailureTime.py under hostfactory/host_provider/test/ with follwing arguments:
1. Number of seconds before current time
2. Account name
3. region
4. machine name
python LastFailureTime.py 1 AccountName westus2 Standard_D8_v5
Update the offset compared to UTC time to match the time cycle_server is in, like below matches Central US Standard time, that is 5 hrs behind UTC:
def format_time(timestamp):
return datetime.datetime.strftime(timestamp, "%Y-%m-%d %H:%M:%S.%f-05:00")
python LastFailureTime.py 1 <AccountName> westus2 Standard_D8_v5
Output is like below:
AdType = "Cloud.Capacity"
ExpirationTime = `2024-03-01 16:34:54.045927-06:00`
AccountName = "AccountName"
AccountName = "<AccountName>"
StatusUpdatedTime = `2024-03-01 15:34:53.045927-06:00`
Region = "westus2"
HasCapacity = False
Provider = "azure"
Name = "region/AccountName/westus2/Standard_D8_v5"
Name = "region/<AccountName>/westus2/Standard_D8_v5"
MachineType = "Standard_D8_v5"
Copy the above output in /tmp/test.dat file and run below command to update the Cloud.Capacity record
Above output is stored in /tmp/test.dat file and run below command to update the Cloud.Capacity record
curl -k -u ${CC_USER} -X POST -H "Content-Type:application/text" --data-binary "@/tmp/test.dat" localhost:8080/db/Cloud.Capacity?format=text
You can also verify this on CC GUI, HasCapacity is false
![alt text](image.png)
Note: You should run this script from machine where Cyclecloud is installed.
## Additional configs for symphony templates
Following 2 configuration have been added:

Просмотреть файл

@ -1,10 +1,12 @@
#!/bin/bash -e
export HF_LOGDIR=/tmp/log
TEMP_HF_LOGDIR=/tmp/log
export HF_LOGDIR=$TEMP_HF_LOGDIR
export HF_CONFDIR=$HF_TOP/conf
export HF_WORKDIR=/tmp/work
TEMP_HF_WORKDIR=/tmp/work
export HF_WORKDIR=$TEMP_HF_WORKDIR
mkdir -p $HF_LOGDIR
mkdir -p $HF_WORKDIR
cat <<EOF >/tmp/input.json
cat <<EOF >/tmp/genTemplates.input.json
{}
EOF
export PRO_LOG_DIR=${HF_LOGDIR}
@ -17,7 +19,8 @@ venv_path=$HF_TOP/$HF_VERSION/providerplugins/azurecc/venv/bin
scriptDir=`dirname $0`
export PYTHONPATH=$PYTHONPATH:$scriptDir/src
. $venv_path/activate
$venv_path/python3 -m cyclecloud_provider generate_templates -f /tmp/input.json 2>> /tmp/template_generate.out
rm -rf $HF_LOGDIR
rm -rf $HF_WORKDIR
exit 0
$venv_path/python3 -m cyclecloud_provider generate_templates -f /tmp/genTemplates.input.json
exit_status=$?
rm -rf $TEMP_HF_LOGDIR
rm -rf $TEMP_HF_WORKDIR
exit $exit_status

Просмотреть файл

@ -17,41 +17,26 @@ venv_path=$HF_TOP/$HF_VERSION/providerplugins/azurecc/venv/bin
if [ -e $venv_path ]; then
# Check group membership
touch /opt/cycle/jetpack/logs/jetpack.log 1>&2 2> /dev/null
groups $(whoami) | grep -q cyclecloud
if [ $? != 0 ]; then
. $venv_path/activate
$venv_path/python3 -m cyclecloud_provider $@ 2>>$STDERR_FILE
echo $(whoami) must be added to the cyclecloud group.
exit 1
else
args=$@
sg cyclecloud ". $venv_path/activate"
sg cyclecloud "$venv_path/python3 -m cyclecloud_provider $args 2>>$STDERR_FILE"
exit $?
else
groups $(whoami) | grep -q cyclecloud
if [ $? != 0 ]; then
echo $(whoami) must be added to the cyclecloud group.
exit 1
else
args=$@
sg cyclecloud ". $venv_path/activate"
sg cyclecloud "$venv_path/python3 -m cyclecloud_provider $args 2>>$STDERR_FILE"
exit $?
fi
fi
elif [ -e $embedded_python ]; then
# Check group membership
touch /opt/cycle/jetpack/logs/jetpack.log 1>&2 2> /dev/null
if [ $? == 0 ]; then
$embedded_python -m cyclecloud_provider $@ 2>>$STDERR_FILE
groups $(whoami) | grep -q cyclecloud
if [ $? != 0 ]; then
echo $(whoami) must be added to the cyclecloud group.
exit 1
else
args=$@
sg cyclecloud "/opt/cycle/jetpack/system/embedded/bin/python -m cyclecloud_provider $args 2>>$STDERR_FILE"
exit $?
else
groups $(whoami) | grep -q cyclecloud
if [ $? != 0 ]; then
echo $(whoami) must be added to the cyclecloud group.
exit 1
else
args=$@
sg cyclecloud "/opt/cycle/jetpack/system/embedded/bin/python -m cyclecloud_provider $args 2>>$STDERR_FILE"
exit $?
fi
fi
else
# you'll need requests==2.5.1 installed.

Просмотреть файл

@ -41,7 +41,9 @@ class Cluster:
def get_buckets(self):
buckets = self.node_mgr.get_buckets()
self.logger.debug("Buckets %s", buckets)
self.logger.debug("Buckets: count=%d", len(buckets))
for b in buckets:
self.logger.debug(f"{b.nodearray}/{b.vm_size} available={b.available_count} based on {b.limits} bucket_id={b.bucket_id}")
return buckets
def add_nodes_scalelib(self, request, template_id, use_weighted_templates=False, vmTypes={}, dry_run=False):
@ -50,7 +52,7 @@ class Cluster:
if use_weighted_templates:
self.logger.debug("Using weighted templates")
self.node_mgr.add_default_resource(selection={}, resource_name="template_id", default_value="node.nodearray")
self.logger.debug("vmTypes %s", vmTypes.items())
self.logger.debug("Current weightings: %s", ", ".join([f"{x}={y}" for x,y in vmTypes.items()]))
for vm_size, weight in vmTypes.items():
self.node_mgr.add_default_resource(selection={"node.vm_size": vm_size},
resource_name="weight",
@ -74,7 +76,7 @@ class Cluster:
print("Allocation result:")
print (key, len(value))
return True
if not dry_run and result:
if result:
request_id_start = f"{request['requestId']}-start"
request_id_create = f"{request['requestId']}-create"
return self.node_mgr.bootup(request_id_start=request_id_start, request_id_create=request_id_create)

Просмотреть файл

@ -67,7 +67,7 @@ class CycleCloudProvider:
# BUGFIX: exiting non-zero code will make symphony retry.
def templates(self):
try:
pro_conf_dir=os.getenv('PRO_CONF_DIR', os.getcwd())
pro_conf_dir = os.getenv('PRO_CONF_DIR', os.getcwd())
conf_path = os.path.join(pro_conf_dir, "conf", "azureccprov_templates.json")
with open(conf_path, 'r') as json_file:
templates_json = json.load(json_file)
@ -75,7 +75,7 @@ class CycleCloudProvider:
return self.json_writer(templates_json, debug_output=False)
except:
logger.warning("Exiting Non-zero so that symphony will retry")
logger.exception("Could not get templates_json")
logger.exception(f"Could not get azureccprov_templates.json at {conf_path}")
sys.exit(1)
def generate_sample_template(self):
@ -84,13 +84,13 @@ class CycleCloudProvider:
for bucket in buckets:
autoscale_enabled = bucket.software_configuration.get("autoscaling", {}).get("enabled", False)
if not autoscale_enabled:
print("Autoscaling is disabled in CC for nodearray %s" % bucket.nodearray)
print("Autoscaling is disabled in CC for nodearray %s" % bucket.nodearray, file=sys.stderr)
continue
if template_dict.get(bucket.nodearray) is None:
template_dict[bucket.nodearray] = {}
template_dict[bucket.nodearray]["templateId"] = bucket.nodearray
template_dict[bucket.nodearray]["attributes"] = {}
# Assuming slot size with ncpus=1 and nram=4096
# Assuming slot size with ncpus = 1 and nram = 4096
template_dict[bucket.nodearray]["attributes"]["type"] = ["String", "X86_64"]
template_dict[bucket.nodearray]["attributes"]["nram"] = ["Numeric", "4096"]
template_dict[bucket.nodearray]["attributes"]["ncpus"] = ["Numeric", "1"]
@ -139,12 +139,12 @@ class CycleCloudProvider:
use_weighted_templates = False
vmTypes = {}
if self.config.get("symphony.enable_weighted_templates", True):
pro_conf_dir=os.getenv('PRO_CONF_DIR', os.getcwd())
pro_conf_dir = os.getenv('PRO_CONF_DIR', os.getcwd())
conf_path = os.path.join(pro_conf_dir, "conf", "azureccprov_templates.json")
with open(conf_path, 'r') as json_file:
templates_json = json.load(json_file)
vmTypes = self.weighted_template.parse_weighted_template(input_json, templates_json["templates"])
logger.debug("vmTypes %s", vmTypes)
logger.debug("Current weightings: %s", ", ".join([f"{x}={y}" for x,y in vmTypes.items()]))
use_weighted_templates = True
request_set = { 'count': input_json["template"]["machineCount"],
'definition':{'templateId':input_json["template"]["templateId"]}}
@ -934,17 +934,18 @@ class CycleCloudProvider:
def validate_template(self):
cluster_status = self.cluster.status()
nodearrays = cluster_status["nodearrays"]
pro_conf_dir=os.getenv('PRO_CONF_DIR', os.getcwd())
pro_conf_dir = os.getenv('PRO_CONF_DIR', os.getcwd())
conf_path = os.path.join(pro_conf_dir, "conf", "azureccprov_templates.json")
with open(conf_path, 'r') as json_file:
templates_json = json.load(json_file)
if "templates" not in templates_json:
print("List templates not present in azureccprov_templates.json")
print("List templates not present in azureccprov_templates.json", file=sys.stderr)
return False
templates_json = templates_json["templates"]
if len(templates_json) == 0:
print("Length of list templates is 0")
print("Length of list templates is 0", file=sys.stderr)
return False
template_name_found = False
for template in templates_json:
for nodearray_root in nodearrays:
template_name_found = False
@ -952,21 +953,21 @@ class CycleCloudProvider:
template_name_found = True
bucket_machineType = [bucket.get("definition")["machineType"].strip() for bucket in nodearray_root.get("buckets")]
if "vmTypes" not in template:
print("Template validation failed")
print("vmTypes not present in template %s" % template["templateId"])
print("Template validation failed", file=sys.stderr)
print("vmTypes not present in template %s" % template["templateId"], file=sys.stderr)
return False
vmTypes = [key.strip() for key in template["vmTypes"].keys()]
bucket_machineType = set(bucket_machineType)
vmTypes = set(vmTypes)
diff = bucket_machineType.symmetric_difference(vmTypes)
if len(diff) > 0:
print("Template validation failed")
print(f"Difference in vmTypes and buckets {diff} for template {template['templateId']}")
print("Template validation failed", file=sys.stderr)
print(f"Difference in vmTypes and buckets {diff} for template {template['templateId']}", file=sys.stderr)
return False
break
if not template_name_found:
print("Template validation failed")
print("Template %s does not exist in nodearray" % template["templateId"])
print("Template validation failed", file=sys.stderr)
print("Template %s does not exist in nodearray" % template["templateId"], file=sys.stderr)
return False
print("Template validation passed")
return True
@ -986,6 +987,7 @@ def true_gmt_clock(): # pragma: no cover
def main(argv=sys.argv, json_writer=simple_json_writer): # pragma: no cover
operation_id = int(time.time())
try:
global logger
@ -1011,7 +1013,7 @@ def main(argv=sys.argv, json_writer=simple_json_writer): # pragma: no cover
input_json = util.load_json(input_json_path)
operation_id = int(time.time())
logger.info("BEGIN %s %s - %s %s", operation_id, cmd, ignore, input_json_path)
logger.debug("Input: %s", json.dumps(input_json))

Просмотреть файл

@ -134,7 +134,7 @@ class JsonStore:
return True
iter = 0
while iter < 18:
iter+=1
iter += 1
try:
self.lockfp = open(self.lockpath, 'w')
if os.name == 'nt':

Просмотреть файл

@ -7,7 +7,7 @@ status_updated_time = now - datetime.timedelta(seconds=seconds)
expiration_time = now + datetime.timedelta(hours=1)
def format_time(timestamp):
return datetime.datetime.strftime(timestamp, "%Y-%m-%d %H:%M:%S.%f-06:00")
return datetime.datetime.strftime(timestamp, "%Y-%m-%d %H:%M:%S.%f-05:00")
account_name = sys.argv[2]
region_name = sys.argv[3]
@ -22,3 +22,15 @@ HasCapacity = {seconds <= 0}
Provider = "azure"
Name = "region/{account_name}/{region_name}/{machine_name}"
MachineType = "{machine_name}" ''')
file = open('/tmp/test.dat', 'w')
file.write(f'''AdType = "Cloud.Capacity"
ExpirationTime = `{format_time(expiration_time)}`
AccountName = "{account_name}"
StatusUpdatedTime = `{format_time(status_updated_time)}`
Region = "{region_name}"
HasCapacity = {seconds <= 0}
Provider = "azure"
Name = "region/{account_name}/{region_name}/{machine_name}"
MachineType = "{machine_name}"''')
file.close()

Просмотреть файл

@ -1,29 +1,29 @@
#!/bin/bash
if [[ ! -d $EGO_TOP ]] ; then
EGO_TOP="/opt/ibm/spectrumcomputing"
export EGO_TOP="/opt/ibm/spectrumcomputing"
mkdir -p $EGO_TOP
echo $EGO_TOP
fi
# In Symphony 7.2 and earlier: HF_TOP=$EGO_TOP/eservice/hostfactory
if [[ ! -d $HF_TOP ]] ; then
HF_TOP="$EGO_TOP/hostfactory"
export HF_TOP="$EGO_TOP/hostfactory"
mkdir -p $HF_TOP
fi
if [[ -z $HF_CONFDIR ]] ; then
HF_CONFDIR="$EGO_TOP/hostfactory/conf"
export HF_CONFDIR="$EGO_TOP/hostfactory/conf"
fi
if [[ -z $HF_WORKDIR ]] ; then
HF_WORKDIR="$EGO_TOP/hostfactory/work"
export HF_WORKDIR="$EGO_TOP/hostfactory/work"
fi
if [[ -z $HF_LOGDIR ]] ; then
HF_LOGDIR="$EGO_TOP/hostfactory/log"
export HF_LOGDIR="$EGO_TOP/hostfactory/log"
fi
if [[ -z $HF_VERSION ]] ; then
HF_VERSION="1.2"
export HF_VERSION="1.1"
fi
pluginSrcPath=$HF_TOP/$HF_VERSION/providerplugins/azurecc
@ -59,12 +59,12 @@ function Generate-Provider-Config {
\"log_level\": \"debug\",
\"cyclecloud\": {
\"cluster\": {
\"name\": \"$(jetpack config cyclecloud.cluster.name)\"
\"name\": \"$cluster\"
},
\"config\": {
\"username\": \"$(jetpack config cyclecloud.config.username)\",
\"password\": \"$(jetpack config cyclecloud.config.password)\",
\"web_server\": \"$(jetpack config cyclecloud.config.web_server)\"
\"username\": \"$username\",
\"password\": \"$password\",
\"web_server\": \"$web_server\"
}
}
}"
@ -74,28 +74,6 @@ function Generate-Provider-Config {
fi
echo "$azureccprov_config_json" > "$azureccProviderConfPath/azureccprov_config.json"
azureccprov_template_json='{"message" : "Get available templates success.",
"templates" : [
{
"templateId" : "executestandardf2sv2",
"maxNumber" : 10,
"attributes" : {
"nram" : [ "Numeric", "1024" ],
"ncpus" : [ "Numeric", "1" ],
"ncores" : [ "Numeric", "1" ],
"type" : [ "String", "X86_64" ],
"nodearray" : [ "String", "execute" ],
"machinetypefull" : ["String", "Standard_F2s_v2"]
}
} ]
}'
if [ ! -e $azureccProviderConfPath ]
then
mkdir -p $azureccProviderConfPath
fi
echo "$azureccprov_template_json" > "$azureccProviderConfPath/azureccprov_templates.json"
#as this will be updated by HF we need to change user to egoadmin
chown egoadmin:egoadmin $azureccProviderConfPath/azureccprov_templates.json
}
@ -159,14 +137,20 @@ function Update-Requestors-Config
}"
echo "$hostRequestorsJson" > "$requestorConfPath/hostRequestors.json"
}
function UpdateSymAReturnPolicy
{
jq '.host_return_policy = "immediate"' "$requestorConfPath/symAinst/symAinstreq_config.json" > temp.json && mv temp.json "$requestorConfPath/symAinst/symAinstreq_config.json"
}
function Install-Python-Packages
{
echo "Installing python packages..."
PKG_NAME=$( jetpack config symphony.pkg_plugin )
cd /tmp
pluginSrcPath=$HF_TOP/$HF_VERSION/providerplugins/azurecc
mkdir -p $pluginSrcPath
mkdir -p $pluginSrcPath/scripts
cp -r /tmp/hostfactory/host_provider/* $pluginSrcPath/scripts
VENV=$pluginSrcPath/venv
# remove jetpack python from PATH so default python3 is used.
export PATH=$(echo $PATH | sed -e 's/\/opt\/cycle\/jetpack\/system\/embedded\/bin://g' | sed -e 's/:\/opt\/cycle\/jetpack\/system\/embedded\/bin//g')
@ -182,7 +166,6 @@ function Install-Python-Packages
python3 -m virtualenv $VENV
source $VENV/bin/activate
pip install --upgrade packages/*
if [ -f $PKG_NAME ]; then
rm -f $PKG_NAME
rm -rf packages
@ -190,16 +173,51 @@ function Install-Python-Packages
fi
echo "Python plugin virtualenv created at $VENV"
}
#check for command line argument for generate_config
if [ $# -eq 1 ]; then
function Generate-Template
{
cd $pluginSrcPath/scripts
echo "In scripts dir at $pluginSrcPath/scripts"
output=$(./generateWeightedTemplates.sh)
echo $output
echo $output > $azureccProviderConfPath/azureccprov_templates.json
# as this will be updated by HF we need to change user to egoadmin
chown egoadmin:egoadmin $azureccProviderConfPath/azureccprov_templates.json
}
# check for command line argument for generate_config
if [ $# -gt 1 ]; then
if [ $1 == "generate_config" ]; then
echo "Parsing parameters for generating config files"
if [ $2 == "--cluster" ]; then
cluster=$3
else
echo "Cluster name is required"
fi
if [ $4 == "--username" ]; then
username=$5
else
echo "Username is required"
fi
if [ $6 == "--password" ]; then
password=$7
else
echo "Password is required"
fi
if [ $8 == "--web_server" ]; then
web_server=$9
else
echo "Web server is required"
fi
Generate-Provider-Config
Generate-Provider-Plugins-Config
Update-Requestors-Config
UpdateSymAReturnPolicy
Install-Python-Packages
Generate-Template
else
echo "Argument $1 is invalid"
fi
else
Install-Python-Packages
fi

Двоичные данные
image.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 46 KiB

Просмотреть файл

@ -3,11 +3,11 @@ version = 3.0.0
name = symphony
type = scheduler
[blobs symeval_7.3.2.0]
Files = symphony/sym.entitlement.keys.eval, symphony/symeval-7.3.2.0_x86_64.bin, symphony/symeval-7.3.2.0.exe, symphony/cyclecloud-symphony-pkg-3.0.0.zip
#[blobs symeval_7.3.2.0]
#Files = symphony/sym.entitlement.keys.eval, symphony/symeval-7.3.2.0_x86_64.bin, symphony/symeval-7.3.2.0.exe, symphony/cyclecloud-symphony-pkg-3.0.0.zip
# [blobs sym_7.3.1.0]
# Files = symphony/sym_adv_entitlement.dat, symphony/sym-7.3.1.0_x86_64.bin, symphony/cyclecloud-symphony-pkg-2.0.0.zip
[blobs sym_7.3.1.0]
Files = symphony/sym_adv_entitlement.dat, symphony/sym-7.3.1.0_x86_64.bin, symphony/cyclecloud-symphony-pkg-3.0.0.zip
# [blobs sym_7.3.0.0]
# Files = symphony/sym_adv_entitlement.dat, symphony/sym-7.3.0.0_x86_64.bin
@ -22,4 +22,4 @@ Files = symphony/sym.entitlement.keys.eval, symphony/symeval-7.3.2.0_x86_64.bin,
run_list = recipe[symphony::default]
[spec master]
run_list = recipe[symphony::default], recipe[symphony::autostart], recipe[symphony::autostop], recipe[symphony::hostfactory]
run_list = recipe[symphony::default], recipe[symphony::hostfactory]

Просмотреть файл

@ -1,6 +1,6 @@
default['symphony']['version'] = "7.3.2.0"
default['symphony']['eval'] = true
default['symphony']['version'] = "7.3.1.0"
default['symphony']['eval'] = false
default['symphony']['pkg']['linux'] = "sym-#{node['symphony']['version']}_x86_64.bin"
default['symphony']['pkg']['windows'] = "sym-#{node['symphony']['version']}.exe"
default['symphony']['pkg_plugin'] = "cyclecloud-symphony-pkg-3.0.0.zip"
@ -54,7 +54,7 @@ else
default['symphony']['hostfactory']['templates_dir'] = 'hostfactory/7.2'
end
default['symphony']['hostfactory']['confdir'] = "#{node['symphony']['hostfactory']['top']}/conf"
default['symphony']['hostfactory']['version'] = "1.2"
default['symphony']['hostfactory']['version'] = "1.1"
# IP or Hostname for REST API URLs
default['symphony']['hostfactory']['rest_address'] = '127.0.0.1'

Просмотреть файл

@ -139,7 +139,7 @@ bash 'Installing HostFactory Package...' do
code <<-EOH
cd /tmp/hostfactory
chmod +x install.sh
./install.sh generate_config
./install.sh generate_config --cluster #{node['cyclecloud']['cluster']['name']} --username #{node['cyclecloud']['config']['username']} --password #{node['cyclecloud']['config']['password']} --web_server #{node['cyclecloud']['config']['web_server']}
EOH
user "root"
group "root"

Просмотреть файл

@ -29,7 +29,11 @@ fi
set -e
su - -c "source /etc/profile.d/symphony.sh && yes | egoconfig setpassword -x Admin && egoconfig setentitlement ${SYM_ENTITLEMENT_FILE}" egoadmin
# for 7.3.2
#su - -c "source /etc/profile.d/symphony.sh && yes | egoconfig setpassword -x Admin && egoconfig setentitlement ${SYM_ENTITLEMENT_FILE}" egoadmin
#7.3.1
su - -c "source /etc/profile.d/symphony.sh && yes | egoconfig setentitlement ${SYM_ENTITLEMENT_FILE}" egoadmin
# Enable automatic startup after reboot (TODO: might want to move restart to chef so volumes are mounted)
egosetrc.sh

Просмотреть файл

@ -7,7 +7,7 @@ SOAM_PASSWORD=$( jetpack config symphony.soam.password )
USE_HOSTFACTORY=$( jetpack config symphony.host_factory.enabled )
if [ "${USE_HOSTFACTORY,,}" != "true"]; then
if [ "${USE_HOSTFACTORY,,}" != "true" ]; then
echo "Skipping Host Factory configuration: symphony.host_factory.enabled = ${USE_HOSTFACTORY,,}"
exit 0
fi