~juju-qa/juju-ci-tools/trunk

« back to all changes in this revision

Viewing changes to add-remote-machine.bash

  • Committer: Curtis Hovey
  • Date: 2017-04-03 14:22:56 UTC
  • mto: This revision was merged to the branch mainline in revision 1969.
  • Revision ID: curtis@canonical.com-20170403142256-mhzi7vlz00w4htjq
Updated scripts to install and setup a jenkins slave on hardware.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
    echo "Checking $USER_AT_HOST can access $name at $url..."
19
19
    set +e
20
20
    result=$(ssh -i $SSH_KEY $USER_AT_HOST \
21
 
        curl --connect-timeout 5 --silent --head $url || echo "fail")
 
21
        curl --connect-timeout 5 --silent -k --head $url || echo "fail")
22
22
    set -e
23
23
    result=$(echo "$result" | tail -1)
24
24
    if [[ $result == "fail" ]]; then
30
30
}
31
31
 
32
32
 
33
 
check_url_access() {
34
 
    option=$1
35
 
    option_url=$(juju get-env -e $ENV $option | sed -e 's,/tools$,,')
36
 
    if [[ -n "$option_url" ]]; then
37
 
        check_access $option $option_url
38
 
    else
39
 
        echo "! You must verify that $USER_AT_HOST can access $option"
40
 
    fi
41
 
}
42
 
 
43
 
 
44
33
if [[ "$1" == "--dry-run" ]]; then
45
34
    DRY_RUN="true"
46
35
    shift
47
36
else
48
37
    DRY_RUN="false"
49
38
fi
50
 
ENV=$1
 
39
MODEL=$1
51
40
SSH_KEY=$2
52
41
USER_AT_HOST=$3
53
42
NETWORK_ACCESS="true"
54
43
 
55
 
private_dns_name=$(juju ssh -e $ENV 0 'echo "$(hostname).$(dnsdomainname)"')
56
 
public_dns_name=$(juju status -e $ENV | sed -r '/dns-name/!d; 1,1!d; s/.*: (.*)/\1/')
57
 
public_ip=$(dig "$public_dns_name" | sed -r '/^;/d; /IN/!d; s/.*A (.*)/\1/;')
58
 
api_port=$(juju get-env -e $ENV api-port)
59
 
echo "State-server public address: $public_ip $public_dns_name"
60
 
echo "State-server private address: $private_dns_name"
61
 
check_access "state-server" http://$public_ip:$api_port
62
 
check_url_access image-metadata-url
63
 
check_url_access tools-metadata-url
64
 
 
65
 
echo "Checking $USER_AT_HOST can access the cloud provider's storage"
66
 
provider=$(juju get-env -e $ENV "type")
67
 
if [[ $provider == "ec2" ]]; then
68
 
    control_bucket=$(juju get-env -e $ENV control-bucket)
69
 
    check_access "s3" http://s3.amazon.com/$control_bucket
70
 
else
71
 
    echo "! You must verify that $USER_AT_HOST can access the cloud storage."
72
 
fi
73
 
 
 
44
private_dns_name=$(
 
45
    juju ssh -m controller 0 'echo "$(hostname).$(dnsdomainname)"')
 
46
public_ip=$(
 
47
    juju status -m controller --format yaml 0 |
 
48
    sed -e '/dns-name/!d; s/.*: //')
 
49
api_port=$(juju controller-config api-port)
 
50
echo "Controller public address: $public_ip"
 
51
echo "Controller private address: $private_dns_name"
 
52
check_access "controller" https://$public_ip:$api_port
74
53
 
75
54
if [[ $DRY_RUN == "true" || $NETWORK_ACCESS == 'false' ]]; then
76
55
    exit
77
56
fi
78
57
 
79
 
echo "Adding state-server's private dns name to $USER_AT_HOST:/etc/hosts"
 
58
echo "Adding controllers's private dns name to $USER_AT_HOST:/etc/hosts"
80
59
ssh -i $SSH_KEY $USER_AT_HOST \
81
60
    "echo '$public_ip $private_dns_name' | sudo tee -a /etc/hosts"
82
61
 
83
 
echo "Adding $USER_AT_HOST to $ENV"
84
 
juju --show-log add-machine -e $ENV ssh:$USER_AT_HOST
 
62
echo "Adding $USER_AT_HOST to $MODEL"
 
63
juju --show-log add-machine -m $MODEL ssh:$USER_AT_HOST