Merge "Correct gnocchi-upgrade command quotes"
[apex-tripleo-heat-templates.git] / deployed-server / scripts / get-occ-config.sh
1 #!/bin/bash
2
3 set -eux
4
5 SLEEP_TIME=5
6
7 CONTROLLER_HOSTS=${CONTROLLER_HOSTS:-""}
8 COMPUTE_HOSTS=${COMPUTE_HOSTS:-""}
9 BLOCKSTORAGE_HOSTS=${BLOCKSTORAGE_HOSTS:-""}
10 OBJECTSTORAGE_HOSTS=${OBJECTSTORAGE_HOSTS:-""}
11 CEPHSTORAGE_HOSTS=${CEPHSTORAGE_HOSTS:-""}
12 SUBNODES_SSH_KEY=${SUBNODES_SSH_KEY:-"~/.ssh/id_rsa"}
13 SSH_OPTIONS="-tt -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=Verbose -o PasswordAuthentication=no -o ConnectionAttempts=32"
14 OVERCLOUD_ROLES=${OVERCLOUD_ROLES:-"Controller Compute BlockStorage ObjectStorage CephStorage"}
15 STACK_NAME=${STACK_NAME:-"overcloud"}
16
17 # Set the _hosts vars for the default roles based on the old var names that
18 # were all caps for backwards compatibility.
19 Controller_hosts=${Controller_hosts:-"$CONTROLLER_HOSTS"}
20 Compute_hosts=${Compute_hosts:-"$COMPUTE_HOSTS"}
21 BlockStorage_hosts=${BlockStorage_hosts:-"$BLOCKSTORAGE_HOSTS"}
22 ObjectStorage_hosts=${ObjectStorage_hosts:-"$OBJECTSTORAGE_HOSTS"}
23 CephStorage_hosts=${CephStorage_hosts:-"$CEPHSTORAGE_HOSTS"}
24
25 # Set the _hosts_a vars for each role defined
26 for role in $OVERCLOUD_ROLES; do
27     eval hosts=\${${role}_hosts}
28     read -a ${role}_hosts_a <<< $hosts
29 done
30
31 admin_user_id=$(openstack user show admin -c id -f value)
32 admin_project_id=$(openstack project show admin -c id -f value)
33
34 function check_stack {
35     local stack_to_check=${1:-""}
36
37     if [ "$stack_to_check" = "" ]; then
38         echo Stack not created
39         return 1
40     fi
41
42     echo Checking if $1 stack is created
43     set +e
44     openstack stack resource list $stack_to_check
45     rc=$?
46     set -e
47
48     if [ ! "$rc" = "0" ]; then
49         echo Stack $1 not yet created
50     fi
51
52     return $rc
53 }
54
55
56 for role in $OVERCLOUD_ROLES; do
57     while ! check_stack $STACK_NAME; do
58         sleep $SLEEP_TIME
59     done
60
61     rg_stack=$(openstack stack resource show $STACK_NAME $role -c physical_resource_id -f value)
62     while ! check_stack $rg_stack; do
63         sleep $SLEEP_TIME
64         rg_stack=$(openstack stack resource show $STACK_NAME $role -c physical_resource_id -f value)
65     done
66
67     stacks=$(openstack stack resource list $rg_stack -c resource_name -c physical_resource_id -f json | jq -r "sort_by(.resource_name) | .[] | .physical_resource_id")
68
69     i=0
70
71     for stack in $stacks; do
72         server_resource_name=$role
73         if [ "$server_resource_name" = "Compute" ]; then
74             server_resource_name="NovaCompute"
75         fi
76
77         server_stack=$(openstack stack resource show $stack $server_resource_name -c physical_resource_id -f value)
78         while ! check_stack $server_stack; do
79             sleep $SLEEP_TIME
80             server_stack=$(openstack stack resource show $stack $server_resource_name -c physical_resource_id -f value)
81         done
82
83         while true; do
84             deployed_server_metadata_url=$(openstack stack resource metadata $server_stack deployed-server | jq -r '.["os-collect-config"].request.metadata_url')
85             if [ "$deployed_server_metadata_url" = "null" ]; then
86                 continue
87             else
88                 break
89             fi
90         done
91
92         echo "======================"
93         echo "$role$i deployed-server.json configuration:"
94
95         config="{
96   \"os-collect-config\": {
97     \"collectors\": [\"request\", \"local\"],
98     \"request\": {
99       \"metadata_url\": \"$deployed_server_metadata_url\"
100     }
101   }
102 }"
103
104         echo "$config"
105         echo "======================"
106         echo
107
108
109         host=
110         eval host=\${${role}_hosts_a[i]}
111         if [ -n "$host" ]; then
112             ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host "echo '$config' > deployed-server.json"
113             ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo mkdir -p -m 0700 /var/lib/os-collect-config/local-data/ || true
114             ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo cp deployed-server.json /var/lib/os-collect-config/local-data/deployed-server.json
115             ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo systemctl start os-collect-config
116             ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo systemctl enable os-collect-config
117         fi
118
119         let i+=1
120
121     done
122
123 done