b4cedea2a412189b3ace2a7aa2a9e392b8451564
[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="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=Verbose -o PasswordAuthentication=no -o ConnectionAttempts=32"
14
15 read -a Controller_hosts_a <<< $CONTROLLER_HOSTS
16 read -a Compute_hosts_a <<< $COMPUTE_HOSTS
17 read -a BlockStorage_hosts_a <<< $BLOCKSTORAGE_HOSTS
18 read -a ObjectStorage_hosts_a <<< $OBJECTSTORAGE_HOSTS
19 read -a CephStorage_hosts_a <<< $CEPHSTORAGE_HOSTS
20
21 roles="Controller Compute BlockStorage ObjectStorage CephStorage"
22 admin_user_id=$(openstack user show admin -c id -f value)
23 admin_project_id=$(openstack project show admin -c id -f value)
24
25 function check_stack {
26     local stack_to_check=$1
27
28     if [ "$stack_to_check" = "|" ]; then
29         echo Stack not created
30         return 1
31     fi
32
33     echo Checking if $1 stack is created
34     set +e
35     heat resource-list $stack_to_check
36     rc=$?
37     set -e
38
39     if [ ! "$rc" = "0" ]; then
40         echo Stack $1 not yet created
41     fi
42
43     return $rc
44 }
45
46
47 for role in $roles; do
48     while ! check_stack overcloud; do
49         sleep $SLEEP_TIME
50     done
51
52     rg_stack=$(heat resource-list overcloud | grep " $role " | awk '{print $4}')
53     while ! check_stack $rg_stack; do
54         sleep $SLEEP_TIME
55         rg_stack=$(heat resource-list overcloud | grep " $role " | awk '{print $4}')
56     done
57
58     stacks=$(heat resource-list $rg_stack | grep OS::TripleO::$role | awk '{print $4}')
59
60     i=0
61
62     for stack in $stacks; do
63         server_resource_name=$role
64         if [ "$server_resource_name" = "Compute" ]; then
65             server_resource_name="NovaCompute"
66         fi
67
68         server_stack=$(heat resource-list $stack | grep " $server_resource_name " | awk '{print $4}')
69         while ! check_stack $server_stack; do
70             sleep $SLEEP_TIME
71             server_stack=$(heat resource-list $stack | grep " $server_resource_name " | awk '{print $4}')
72         done
73
74         deployed_server_stack=$(heat resource-list $server_stack | grep "deployed-server" | awk '{print $4}')
75
76         echo "======================"
77         echo "$role$i os-collect-config.conf configuration:"
78
79         config="
80 [DEFAULT]
81 collectors=heat
82 command=os-refresh-config
83 polling_interval=30
84
85 [heat]
86 user_id=$admin_user_id
87 password=$OS_PASSWORD
88 auth_url=$OS_AUTH_URL
89 project_id=$admin_project_id
90 stack_id=$deployed_server_stack
91 resource_name=deployed-server-config"
92
93         echo "$config"
94         echo "======================"
95         echo
96
97
98         host=
99         eval host=\${${role}_hosts_a[i]}
100         if [ -n "$host" ]; then
101             # Delete the os-collect-config.conf template so our file won't get
102             # overwritten
103             ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo /bin/rm -f /usr/libexec/os-apply-config/templates/etc/os-collect-config.conf
104             ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host "echo \"$config\" > os-collect-config.conf"
105             ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo cp os-collect-config.conf /etc/os-collect-config.conf
106             ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo systemctl restart os-collect-config
107         fi
108
109         let i+=1
110
111     done
112
113 done