Last active
June 14, 2018 19:56
-
-
Save pclose/c24ac269d0513ae424cebcf11866b4ad to your computer and use it in GitHub Desktop.
Generates commands to install Moogsoft on a linux machine
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Generates commands to install Moogsoft on a linux machine -pete 2018-01-23 | |
| host="${1-localhost}" | |
| moog_tar="moog6.3.tgz" | |
| license="123" | |
| java_archive="server-jre-8u172-linux-x64.tar.gz" | |
| java_basedir="jdk1.8.0_172" | |
| if [[ $2 == "" ]]; then | |
| cat - <<END | |
| # Copy over SSH key from local machine | |
| cat ~/.ssh/id_rsa.pub | ssh root@$host 'mkdir -p ~/.ssh && cat - > .ssh/authorized_keys && chmod 0600 .ssh/authorized_keys' | |
| # Copy binaries to server | |
| scp "$moog_tar" root@$host:/root/ | |
| # Install dependencies on $host | |
| yum -y install epel-release | |
| # MySQL | |
| yum -y install http://repo.mysql.com/mysql57-community-release-el7.rpm | |
| yum -y install mysql-community-client mysql-community-common mysql-community-libs mysql-community-libs-compat mysql-community-server | |
| # erlang | |
| yum -y install https://github.com/rabbitmq/erlang-rpm/releases/download/v20.1.4/erlang-20.1.4-1.el7.centos.x86_64.rpm | |
| # RabbitMQ | |
| curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash | |
| yum -y install rabbitmq-server | |
| # ElasticSearch | |
| rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch | |
| cat - <<OHCE > /etc/yum.repos.d/elasticsearch.repo | |
| [elasticsearch-5.x] | |
| name=Elasticsearch repository for 5.x packages | |
| baseurl=https://artifacts.elastic.co/packages/5.x/yum | |
| gpgcheck=1 | |
| gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch | |
| enabled=1 | |
| autorefresh=1 | |
| type=rpm-md | |
| OHCE | |
| yum -y install elasticsearch | |
| # nginx | |
| cat - <<OHCE > /etc/yum.repos.d/nginx.repo | |
| [nginx] | |
| name=nginx repo | |
| baseurl=http://nginx.org/packages/centos/7/\\\$basearch/ | |
| gpgcheck=0 | |
| enabled=1 | |
| OHCE | |
| yum -y install nginx | |
| # apache-tomcat | |
| yum -y install tomcat-native | |
| # Java, or try tar archives from http://www.oracle.com/technetwork/java/javase/downloads/index.html | |
| yum -y install java-1.8.0-openjdk | |
| # unarchive and install java from oracle | |
| scp $java_archive root@$host:/root/ | |
| mkdir /usr/java | |
| tar xvf $java_archive -C /usr/java | |
| cd /usr/java/ && ln -s $java_basedir/ latest && ln -s latest 1.8.0_152 | |
| update-alternatives --install /usr/bin/java java /usr/java/latest/bin/java 1 | |
| #sed -i 's!export JAVA_HOME=/usr/java/jre1.8.0_152!export JAVA_HOME=/usr/java/latest!' /etc/rc.d/init.d/apache-tomcat | |
| # Untar Moogsoft | |
| files="\$(tar tvf $moog_tar |grep tgz | perl -ne 's/\n//;s/\r//;@a=split(/\s+/);\$r="";foreach (@a[5..\$#a]) {\$r.=\$_;} print \$r . "\n";')" | |
| for e in \$files; do | |
| tar zxf "$moog_tar" \$e --to-stdout | tar zxfv - -C / | |
| done | |
| # Setup users and environment, cause we don't have packages so no postinstall scripts | |
| getent group moogsoft > /dev/null || groupadd -r moogsoft | |
| getent passwd moogsoft > /dev/null || useradd -r -g moogsoft moogsoft | |
| getent passwd moogadmin > /dev/null || useradd -g moogsoft moogadmin | |
| usermod -G nginx moogadmin | |
| getent group tomcat > /dev/null || groupadd -r tomcat | |
| getent passwd tomcat > /dev/null || useradd -g tomcat tomcat | |
| useradd -g moogsoft moogtoolrunner | |
| echo moogtoolrunner:moogtoolrunner | chpasswd | |
| echo "export JAVA_HOME=/usr/java/latest" >> /home/moogtoolrunner/.bashrc | |
| echo "export MOOGSOFT_HOME=/usr/share/moogsoft" >> /home/moogtoolrunner/.bashrc | |
| # Disabled selinux | |
| sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/sysconfig/selinux | |
| # Run installation | |
| cat - <<OHCE >> \$HOME/.bashrc | |
| export MOOGSOFT_HOME=/usr/share/moogsoft | |
| export JAVA_HOME=/usr/java/latest | |
| export APPSERVER_HOME=/usr/share/apache-tomcat | |
| export PATH=\\\$PATH:\\\$MOOGSOFT_HOME/bin:\\\$MOOGSOFT_HOME/bin/utils | |
| OHCE | |
| source \$HOME/.bashrc | |
| \$MOOGSOFT_HOME/bin/utils/moog_init.sh -I $host -u root | |
| # Update license key | |
| printf 'insert into licence_info values ("$license");' | mysql -Dmoogdb | |
| # Cleanup dirs | |
| chown -R moogsoft:moogsoft /usr/share/moogsoft /var/log/moogsoft /var/run/moogsoft | |
| chown -R tomcat:tomcat /usr/share/apache-tomcat | |
| mkdir -p /var/run/apache-tomcat && chown -R tomcat:tomcat /var/run/apache-tomcat | |
| chown -R moogsoft:moogsoft /var/log/moogsoft/ | |
| chown -R moogsoft:moogsoft /var/run/moogsoft/ | |
| END | |
| fi | |
| if [[ $2 == "dl-from-moogsoft" ]]; then | |
| secgroup="${3-msoft1}" | |
| aws_ssh_key="${4-your-key}" | |
| cat - <<END | |
| # Search for AWS instance with binaries | |
| aws ec2 describe-images --filters Name=description,Values="Moogsoft*" --query 'Images[*].{ID:ImageId}' | |
| _imageid = "<id from last step>" | |
| # Start AWS intance | |
| aws ec2 create-security-group --group-name $secgroup --description moogsoft # Create security group | |
| aws ec2 describe-security-groups --filters Name=group-name,Values="$secgroup" --query 'SecurityGroups[*].{Name:GroupId}' | |
| _secgid = "<id from last step>" | |
| aws ec2 authorize-security-group-ingress --group-id "\$_secgid" --protocol tcp --port 22 --cidr 0.0.0.0/0 # Add port to rule | |
| aws ec2 run-instances --image-id "\$_imageid" --instance-type t2.large --security-group-ids "\$_secgid" --key-name "$aws_ssh_key" | |
| aws ec2 describe-instances --filters Name=image-id,Values="\$_imageid" --query 'Reservations[*].Instances[*].{ip_address:PublicIpAddress,instance_id:InstanceId,volume_ids:BlockDeviceMappings[*].Ebs.VolumeId} | |
| _ipaddr = "<ip from last step>" | |
| _instid = "<id from last step>" | |
| _volumeid = "<volume id from last step>" | |
| ssh -i ~/.ssh/$aws_ssh_key.pem centos@\$_ipaddr | |
| # Tar all moogsoft binaries | |
| mkdir -p msoft | |
| for e in `rpm -qa |grep moog`; do | |
| rpm -ql \$e | xargs tar zcvf msoft/\$e.tgz; | |
| rpm -q --scripts \$e > msoft/\$e.sh; | |
| rpm -q --requires \$e > msoft/\$e.dep.txt; | |
| done | |
| # Extract temp license key from database | |
| printf 'select raw_licence from licence_info;' | mysql -Dmoogdb > msoft/licence.txt | |
| # Tar it all up again | |
| tar czvf $moog_tar msoft/ | |
| # Remove AWS instance | |
| aws ec2 terminate-instances --instance-ids \$_instid | |
| aws ec2 delete-volume --volume-id \$_volumeid | |
| END | |
| fi | |
| if [[ $2 == "expand-disk" ]]; then | |
| disk_file="${3-/var/lib/libvirt/images/centos1.qcow2}" | |
| temp_host="${4-centos2}" | |
| temp_label="${5-vdc}" | |
| cat - <<END | |
| # Extend existing qcow2 disk image and attach it to another guest | |
| qemu-img resize $disk_file +10G | |
| virsh attach-disk $temp_host $disk_file $temp_label --targetbus virtio --driver qemu --subdriver qcow2 | |
| # SSH to guest | |
| ssh $temp_host | |
| # Remove all LVM | |
| dmsetup remove_all | |
| # Resize device | |
| # manually with fdisk: https://www.howtoforge.com/linux_resizing_ext3_partitions_p2 | |
| #fdisk /dev/vdc | |
| # automatic with sfdisk: https://superuser.com/a/1132834/154998 | |
| sfdisk -d /dev/$temp_label | perl -e '@a=();while(<STDIN>){push @a, \$_;} \$a[\$#a] =~ s/, size=\s*\d+//; print join "", @a;' | sfdisk /dev/$temp_label | |
| # Extend LVM | |
| pvresize /dev/$temp_label | |
| lvextend -l +100%FREE /dev/mapper/centos-root | |
| # Mount and extend drive | |
| mount /dev/mapper/centos-root /mnt | |
| xfs_growfs /dev/mapper/centos-root | |
| # Unmount and sync | |
| umount /mnt | |
| sync;sync; | |
| dmsetup remove_all | |
| # Detach disk | |
| virsh detach-disk $temp_host $temp_label | |
| END | |
| fi | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment