aio: more flexible script

we can now chose the install source

Signed-off-by: Sébastien Han <seb@redhat.com>
pull/894/head
Sébastien Han 2016-07-20 16:47:53 +02:00
parent 578768cc23
commit 8142c461b2
2 changed files with 116 additions and 32 deletions

View File

@ -5,41 +5,113 @@
# to work properly. # to work properly.
set -e set -e
if [[ -z $1 ]]; then
CEPH_BRANCH_DEFAULT=master # VARIABLES
else
CEPH_BRANCH_DEFAULT=$1 SOURCE=stable
fi IP=$(ip -4 -o a | awk '/eth|ens|eno|enp|em|p.p./ { sub ("/..", "", $4); print $4 }' | head -1)
CEPH_BRANCH=${CEPH_BRANCH:-$CEPH_BRANCH_DEFAULT}
SUBNET=$(ip r | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/[0-9]\{1,2\}' | head -1) SUBNET=$(ip r | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/[0-9]\{1,2\}' | head -1)
MON_IP=$(ip -4 -o a | awk '/eth/ { sub ("/..", "", $4); print $4 }')
if [[ $EUID -ne 0 ]]; then
echo "You are NOT running this script as root." # FUNCTIONS
echo "You should."
echo "Really." show_help() {
echo "PLEASE RUN IT WITH SUDO ONLY :)" PROG=$(basename $0)
exit 1 echo ""
echo "Usage of ${PROG}:"
cat << EOF
None of the following options are mandatory!
-h : HELP, show this help & exit
-s stable : INSTALL SOURCE, valid values are 'stable' or 'dev' (DEFAULT: stable)
-b master : DEV BRANCH, only valid when '-s dev' (DEFAULT: master)
-i 192.168.0.1 : IP, if not set the first IP of the stack will be used
-n 192.168.0.0/24 : Subnet, if not set the first subnet of the stack will be used
Examples:
${PROG} -s stable # installs latest stable version and detects IP/SUBNET
${PROG} -s stable -i 192.168.0.1 -n 192.168.0.0/24 # installs latest stable version and use the provided IP/SUBNET
${PROG} -s dev -b master # installs master branch version and detects IP/SUBNET
${PROG} -s dev -b master -i 192.168.0.1 -n 192.168.0.0/24 # installs master branch version and use the provided IP/SUBNET
EOF
}
parse_cmdline() {
while getopts "hs:b:i:n:" opt; do
case $opt in
h)
show_help
exit 0
;;
s)
SOURCE=${OPTARG}
;;
b)
BRANCH=${OPTARG}
;;
i)
IP=${OPTARG}
;;
n)
SUBNET=${OPTARG}
;;
\?)
exit 1
;;
: )
exit 1
;;
esac
done
if [ $# -eq 0 ]; then
show_help
exit 0
fi fi
sudo bash install-ansible.sh if [[ ${SOURCE} == 'stable' && ! -z ${BRANCH} ]]; then
echo "You can not use a stable install source and a specific branch!"
echo "A branch can be specified when a 'dev' source is desired".
echo "Run the script with -h for examples."
exit 1
fi
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa }
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
cp group_vars/all.sample group_vars/all
cp group_vars/osds.sample group_vars/osds
sed -i "s/#osd_auto_discovery: false/osd_auto_discovery: true/" group_vars/osds function install_ansible {
sed -i "s/#journal_collocation: false/journal_collocation: true/" group_vars/osds sudo bash install-ansible.sh
sed -i "s/#ceph_dev: false/ceph_dev: true/" group_vars/all }
sed -i "s/#pool_default_size: 3/pool_default_size: 2/" group_vars/all
sed -i "s/#monitor_address: 0.0.0.0/monitor_address: ${MON_IP}/" group_vars/all
sed -i "s/#journal_size: 0/journal_size: 100/" group_vars/all
sed -i "s|#public_network: 0.0.0.0\/0|public_network: ${SUBNET}|" group_vars/all
sed -i "s/#common_single_host_mode: true/common_single_host_mode: true/" group_vars/all
sed -i "s|#ceph_dev_branch: master|ceph_dev_branch: ${CEPH_BRANCH}|" group_vars/all
cat > /etc/ansible/hosts <<EOF function ssh_setup {
echo -e 'y\n'|ssh-keygen -q -t rsa -N "" -f ~/.ssh/id_rsa
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
}
function cp_var {
cp group_vars/all.sample group_vars/all
cp group_vars/osds.sample group_vars/osds
cp site.yml.sample site.yml
}
function populate_vars {
sed -i "s/#osd_auto_discovery: false/osd_auto_discovery: true/" group_vars/osds
sed -i "s/#journal_collocation: false/journal_collocation: true/" group_vars/osds
sed -i "s/#pool_default_size: 3/pool_default_size: 2/" group_vars/all
sed -i "s/#monitor_address: 0.0.0.0/monitor_address: ${IP}/" group_vars/all
sed -i "s/#journal_size: 0/journal_size: 100/" group_vars/all
sed -i "s|#public_network: 0.0.0.0\/0|public_network: ${SUBNET}|" group_vars/all
sed -i "s/#common_single_host_mode: true/common_single_host_mode: true/" group_vars/all
if [[ ${SOURCE} == 'stable' ]]; then
sed -i "s/#ceph_stable: false/ceph_stable: true/" group_vars/all
else
sed -i "s/#ceph_dev: false/ceph_dev: true/" group_vars/all
sed -i "s|#ceph_dev_branch: master|ceph_dev_branch: ${BRANCH}|" group_vars/all
fi
}
function create_inventory {
cat > /etc/ansible/hosts <<EOF
[mons] [mons]
localhost localhost
[osds] [osds]
@ -49,7 +121,19 @@ localhost
[rgws] [rgws]
localhost localhost
EOF EOF
}
cp site.yml.sample site.yml function test_and_run {
ansible all -m ping ansible all -m ping
ansible-playbook site.yml ansible-playbook site.yml
}
# MAIN
parse_cmdline $@
install_ansible
ssh_setup
cp_var
populate_vars
create_inventory
test_and_run

View File

@ -9,7 +9,7 @@ if ansible --version &> /dev/null ; then
echo "Ansible is already installed." echo "Ansible is already installed."
echo "Doing nothing." echo "Doing nothing."
echo "Exiting now." echo "Exiting now."
exit 1 exit 0
fi fi
if [[ $EUID -ne 0 ]]; then if [[ $EUID -ne 0 ]]; then