X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=deploy%2Fmetal3%2Fscripts%2Fmetal3.sh;h=48f350ec59a9aa7770a517d270d429ff045b2632;hb=2d1ee64f68cd36284bd180559e91b84a8c10dd3c;hp=f268d8bd0e6d3fb3719482a3c3f0b50ef76d9e2e;hpb=933a4fc772ef3b0e96ad3517027441d3997555c3;p=icn.git diff --git a/deploy/metal3/scripts/metal3.sh b/deploy/metal3/scripts/metal3.sh index f268d8b..48f350e 100755 --- a/deploy/metal3/scripts/metal3.sh +++ b/deploy/metal3/scripts/metal3.sh @@ -1,5 +1,4 @@ #!/bin/bash -set -ex LIBDIR="$(dirname "$(dirname "$(dirname "$PWD")")")" @@ -14,7 +13,7 @@ if [[ $EUID -ne 0 ]]; then exit 1 fi -function get_default_inteface_ipaddress() { +function get_default_inteface_ipaddress { local _ip=$1 local _default_interface=$(awk '$2 == 00000000 { print $1 }' /proc/net/route) local _ipv4address=$(ip addr show dev $_default_interface | awk '$1 == "inet" { sub("/.*", "", $2); print $2 }') @@ -22,10 +21,10 @@ function get_default_inteface_ipaddress() { } create_ssh_key() { - #ssh key for compute node to communicate back to bootstrap server - mkdir -p $BUILD_DIR/ssh_key - ssh-keygen -C "compute.icn.akraino.lfedge.org" -f $BUILD_DIR/ssh_key/id_rsa - cat $BUILD_DIR/ssh_key/id_rsa.pub >> $HOME/.ssh/authorized_keys + #ssh key for compute node to communicate back to bootstrap server + mkdir -p $BUILD_DIR/ssh_key + ssh-keygen -C "compute.icn.akraino.lfedge.org" -f $BUILD_DIR/ssh_key/id_rsa + cat $BUILD_DIR/ssh_key/id_rsa.pub >> $HOME/.ssh/authorized_keys } set_compute_key() { @@ -33,38 +32,38 @@ _SSH_LOCAL_KEY=$(cat $BUILD_DIR/ssh_key/id_rsa) cat << EOF write_files: - path: /opt/ssh_id_rsa - owner: root:root - permissions: '0600' - content: | + owner: root:root + permissions: '0600' + content: | $_SSH_LOCAL_KEY EOF } provision_compute_node() { - IMAGE_URL=http://172.22.0.1/images/${BM_IMAGE} - IMAGE_CHECKSUM=http://172.22.0.1/images/${BM_IMAGE}.md5sum - - if [ ! -d $GOPATH/src/github.com/metal3-io/baremetal-operator ]; then - go get github.com/metal3-io/baremetal-operator - fi - - go run $GOPATH/src/github.com/metal3-io/baremetal-operator/cmd/make-bm-worker/main.go \ - -address "ipmi://$COMPUTE_IPMI_ADDRESS" \ - -user "$COMPUTE_IPMI_USER" \ - -password "$COMPUTE_IPMI_PASSWORD" \ - "$COMPUTE_NODE_NAME" > $COMPUTE_NODE_NAME-bm-node.yaml - - printf " image:" >> $COMPUTE_NODE_NAME-bm-node.yaml - printf "\n url: ""%s" "$IMAGE_URL" >> $COMPUTE_NODE_NAME-bm-node.yaml - printf "\n checksum: ""%s" "$IMAGE_CHECKSUM" >> $COMPUTE_NODE_NAME-bm-node.yaml - printf "\n userData:" >> $COMPUTE_NODE_NAME-bm-node.yaml - printf "\n name: ""%s" "$COMPUTE_NODE_NAME""-user-data" >> $COMPUTE_NODE_NAME-bm-node.yaml - printf "\n namespace: metal3\n" >> $COMPUTE_NODE_NAME-bm-node.yaml - kubectl apply -f $COMPUTE_NODE_NAME-bm-node.yaml + IMAGE_URL=http://172.22.0.1/images/${BM_IMAGE} + IMAGE_CHECKSUM=http://172.22.0.1/images/${BM_IMAGE}.md5sum + + if [ ! -d $GOPATH/src/github.com/metal3-io/baremetal-operator ]; then + go get github.com/metal3-io/baremetal-operator + fi + + go run $GOPATH/src/github.com/metal3-io/baremetal-operator/cmd/make-bm-worker/main.go \ + -address "ipmi://$COMPUTE_IPMI_ADDRESS" \ + -user "$COMPUTE_IPMI_USER" \ + -password "$COMPUTE_IPMI_PASSWORD" \ + "$COMPUTE_NODE_NAME" > $COMPUTE_NODE_NAME-bm-node.yaml + + printf " image:" >> $COMPUTE_NODE_NAME-bm-node.yaml + printf "\n url: ""%s" "$IMAGE_URL" >> $COMPUTE_NODE_NAME-bm-node.yaml + printf "\n checksum: ""%s" "$IMAGE_CHECKSUM" >> $COMPUTE_NODE_NAME-bm-node.yaml + printf "\n userData:" >> $COMPUTE_NODE_NAME-bm-node.yaml + printf "\n name: ""%s" "$COMPUTE_NODE_NAME""-user-data" >> $COMPUTE_NODE_NAME-bm-node.yaml + printf "\n namespace: metal3\n" >> $COMPUTE_NODE_NAME-bm-node.yaml + kubectl apply -f $COMPUTE_NODE_NAME-bm-node.yaml -n metal3 } deprovision_compute_node() { - kubectl patch baremetalhost $COMPUTE_NODE_NAME -n metal3 --type merge \ + kubectl patch baremetalhost $COMPUTE_NODE_NAME -n metal3 --type merge \ -p '{"spec":{"image":{"url":"","checksum":""}}}' } @@ -72,67 +71,67 @@ set_compute_ssh_config() { get_default_inteface_ipaddress default_addr cat << EOF - path: /root/.ssh/config - owner: root:root - permissions: '0600' - content: | + owner: root:root + permissions: '0600' + content: | Host bootstrapmachine $default_addr HostName $default_addr IdentityFile /opt/ssh_id_rsa User $USER - path: /etc/apt/sources.list - owner: root:root - permissions: '0665' - content: | - deb [trusted=yes] ssh://$USER@$default_addr:$LOCAL_APT_REPO ./ + owner: root:root + permissions: '0665' + content: | + deb [trusted=yes] ssh://$USER@$default_addr:$LOCAL_APT_REPO ./ EOF } create_userdata() { - printf "#cloud-config\n" > userdata.yaml - if [ -n "$COMPUTE_NODE_PASSWORD" ]; then - printf "password: ""%s" "$COMPUTE_NODE_PASSWORD" >> userdata.yaml - printf "\nchpasswd: {expire: False}\n" >> userdata.yaml - printf "ssh_pwauth: True\n" >> userdata.yaml - fi - - if [ -n "$COMPUTE_NODE_FQDN" ]; then - printf "fqdn: ""%s" "$COMPUTE_NODE_FQDN" >> userdata.yaml - printf "\n" >> userdata.yaml - fi - - printf "ssh_authorized_keys:\n - " >> userdata.yaml - - if [ -f $HOME/.ssh/id_rsa.pub ]; then - yes y | ssh-keygen -t rsa -N "" -f $HOME/.ssh/id_rsa - fi - - cat $HOME/.ssh/id_rsa.pub >> userdata.yaml - printf "\n" >> userdata.yaml + printf "#cloud-config\n" > userdata.yaml + if [ -n "$COMPUTE_NODE_PASSWORD" ]; then + printf "password: ""%s" "$COMPUTE_NODE_PASSWORD" >> userdata.yaml + printf "\nchpasswd: {expire: False}\n" >> userdata.yaml + printf "ssh_pwauth: True\n" >> userdata.yaml + fi + + if [ -n "$COMPUTE_NODE_FQDN" ]; then + printf "fqdn: ""%s" "$COMPUTE_NODE_FQDN" >> userdata.yaml + printf "\n" >> userdata.yaml + fi + printf "disable_root: false\n" >> userdata.yaml + printf "ssh_authorized_keys:\n - " >> userdata.yaml + + if [ ! -f $HOME/.ssh/id_rsa.pub ]; then + yes y | ssh-keygen -t rsa -N "" -f $HOME/.ssh/id_rsa + fi + + cat $HOME/.ssh/id_rsa.pub >> userdata.yaml + printf "\n" >> userdata.yaml } apply_userdata_credential() { - cat < ./$COMPUTE_NODE_NAME-user-data.yaml + cat < ./$COMPUTE_NODE_NAME-user-data.yaml apiVersion: v1 data: - userData: $(base64 -w 0 userdata.yaml) + userData: $(base64 -w 0 userdata.yaml) kind: Secret metadata: - name: $COMPUTE_NODE_NAME-user-data - namespace: metal3 + name: $COMPUTE_NODE_NAME-user-data + namespace: metal3 type: Opaque EOF - kubectl apply -n metal3 -f $COMPUTE_NODE_NAME-user-data.yaml + kubectl apply -n metal3 -f $COMPUTE_NODE_NAME-user-data.yaml } launch_baremetal_operator() { - if [ ! -d $GOPATH/src/github.com/metal3-io/baremetal-operator ]; then + if [ ! -d $GOPATH/src/github.com/metal3-io/baremetal-operator ]; then go get github.com/metal3-io/baremetal-operator fi - pushd $GOPATH/src/github.com/metal3-io/baremetal-operator - make deploy - popd - + pushd $GOPATH/src/github.com/metal3-io/baremetal-operator + make deploy + popd + } if [ "$1" == "launch" ]; then @@ -147,8 +146,8 @@ fi if [ "$1" == "provision" ]; then create_userdata - apply_userdata_credential - provision_compute_node + apply_userdata_credential + provision_compute_node exit 0 fi