adding mysql flavor (untested)
This commit is contained in:
parent
823e18fda2
commit
ffab3354ca
3
flavours/mysql/README.md
Normal file
3
flavours/mysql/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Sets up a MySQL server install in the image.
|
||||||
|
|
||||||
|
TODO: auto-tune settings based on host resources or metadata service.
|
5
flavours/mysql/first-boot.d/05-ipforwarding
Executable file
5
flavours/mysql/first-boot.d/05-ipforwarding
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
set -o xtrace
|
||||||
|
sed -i -r 's/^\s*#(net\.ipv4\.ip_forward=1.*)/\1/' /etc/sysctl.conf
|
||||||
|
echo 1 > /proc/sys/net/ipv4/ip_forward
|
11
flavours/mysql/first-boot.d/10-ntp
Executable file
11
flavours/mysql/first-boot.d/10-ntp
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
ntpfile=`mktemp`
|
||||||
|
cat << EOF > $ntpfile
|
||||||
|
server ntp.ubuntu.com iburst
|
||||||
|
server 127.127.1.0
|
||||||
|
fudge 127.127.1.0 stratum 10
|
||||||
|
EOF
|
||||||
|
|
||||||
|
mv /etc/ntp.conf /etc/ntp.conf.orig
|
||||||
|
mv $ntpfile /etc/ntp.conf
|
||||||
|
service ntp restart
|
24
flavours/mysql/first-boot.d/50-mysql
Executable file
24
flavours/mysql/first-boot.d/50-mysql
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# get MYSQL_PASS and HOST_IP
|
||||||
|
source $(dirname $0)/defaults
|
||||||
|
|
||||||
|
service mysql stop || true
|
||||||
|
|
||||||
|
MYSQL_BOOTSTRAP="/usr/sbin/mysqld --bootstrap --user=mysql --skip-grant-tables"
|
||||||
|
|
||||||
|
sqltfile=`mktemp`
|
||||||
|
cat <<EOF > $sqltfile
|
||||||
|
USE mysql;
|
||||||
|
UPDATE user SET password=PASSWORD("$MYSQL_PASS") WHERE user='root';
|
||||||
|
EOF
|
||||||
|
$MYSQL_BOOTSTRAP < $sqltfile
|
||||||
|
rm -f $sqltfile
|
||||||
|
|
||||||
|
CNF=/etc/mysql/my.cnf
|
||||||
|
cp -f $(dirname $0)/my.cnf $CNF
|
||||||
|
sed -i "s/^bind-address=.*/bind-address=$HOST_IP/" $CNF
|
||||||
|
|
||||||
|
service mysql start
|
15
flavours/mysql/first-boot.d/defaults
Normal file
15
flavours/mysql/first-boot.d/defaults
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
set -e
|
||||||
|
|
||||||
|
MYSQL_PASS=${MYSQL_PASS:-password}
|
||||||
|
|
||||||
|
# HOST_IP
|
||||||
|
# Find the interface used for the default route
|
||||||
|
HOST_IP_IFACE=${HOST_IP_IFACE:-$(ip route | sed -n '/^default/{ s/.*dev \(\w\+\)\s\+.*/\1/; p; }')}
|
||||||
|
# Search for an IP unless an explicit is set by ``HOST_IP`` environment variable
|
||||||
|
HOST_IP=`LC_ALL=C ip -f inet addr show ${HOST_IP_IFACE} | awk '/inet/ {split($2,parts,"/"); print parts[1]}'`
|
||||||
|
|
||||||
|
|
||||||
|
# XXX: get all these from metadata service eventually
|
||||||
|
IB_BUF_POOL=100M
|
||||||
|
IB_LOG_FILE_SIZE=10M
|
||||||
|
|
63
flavours/mysql/first-boot.d/my.cnf
Normal file
63
flavours/mysql/first-boot.d/my.cnf
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
[mysql]
|
||||||
|
port = 3306
|
||||||
|
socket = /var/lib/mysql/data/mysql.sock
|
||||||
|
|
||||||
|
[mysqld]
|
||||||
|
|
||||||
|
# GENERAL #
|
||||||
|
user = mysql
|
||||||
|
default_storage_engine = InnoDB
|
||||||
|
socket = /var/lib/mysql/data/mysql.sock
|
||||||
|
pid_file = /var/lib/mysql/data/mysql.pid
|
||||||
|
bind-address = 0.0.0.0
|
||||||
|
|
||||||
|
# MyISAM #
|
||||||
|
key_buffer_size = 32M
|
||||||
|
myisam_recover = FORCE,BACKUP
|
||||||
|
|
||||||
|
# SAFETY #
|
||||||
|
max_allowed_packet = 16M
|
||||||
|
max_connect_errors = 1000000
|
||||||
|
skip_name_resolve
|
||||||
|
sql_mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
|
||||||
|
sysdate_is_now = 1
|
||||||
|
innodb = FORCE
|
||||||
|
innodb_strict_mode = 1
|
||||||
|
|
||||||
|
# DATA STORAGE #
|
||||||
|
datadir = /var/lib/mysql/data/
|
||||||
|
|
||||||
|
# CACHES AND LIMITS #
|
||||||
|
tmp_table_size = 32M
|
||||||
|
max_heap_table_size = 32M
|
||||||
|
query_cache_type = 0
|
||||||
|
query_cache_size = 0
|
||||||
|
max_connections = 500
|
||||||
|
thread_cache_size = 50
|
||||||
|
open_files_limit = 65535
|
||||||
|
table_definition_cache = 4096
|
||||||
|
table_open_cache = 4096
|
||||||
|
|
||||||
|
# INNODB #
|
||||||
|
innodb_flush_method = O_DIRECT
|
||||||
|
innodb_log_files_in_group = 2
|
||||||
|
innodb_log_file_size = 64M
|
||||||
|
innodb_flush_log_at_trx_commit = 2
|
||||||
|
innodb_file_per_table = 1
|
||||||
|
innodb_buffer_pool_size = 592M
|
||||||
|
# TODO
|
||||||
|
# innodb_read_io_threads
|
||||||
|
# innodb_write_io_threads
|
||||||
|
|
||||||
|
|
||||||
|
# LOGGING #
|
||||||
|
log_error = /var/lib/mysql/data/mysql-error.log
|
||||||
|
log_queries_not_using_indexes = 1
|
||||||
|
slow_query_log = 1
|
||||||
|
slow_query_log_file = /var/lib/mysql/data/mysql-slow.log
|
||||||
|
|
||||||
|
server_id = 1
|
||||||
|
log_bin = /var/lib/mysql/data/mysql-bin
|
||||||
|
expire_logs_days = 7
|
||||||
|
max_binlog_size = 100M
|
||||||
|
binlog_format = ROW
|
9
flavours/mysql/install.d/10-mysql
Executable file
9
flavours/mysql/install.d/10-mysql
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Install controller base requiered packages
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
#DEBIAN_FRONTEND=noninteractive apt-get -y install sysstat mytop percona-toolkit percona-server-server-5.5 percona-server-client-5.5
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get -y install sysstat mytop percona-toolkit mysql-server-5.5 mysql-client-5.5
|
12
flavours/mysql/install.d/50-user
Executable file
12
flavours/mysql/install.d/50-user
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Add the stack user we recommend folk use.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
useradd -G admin -m stack -s /bin/bash
|
||||||
|
passwd stack <<EOF
|
||||||
|
stack
|
||||||
|
stack
|
||||||
|
EOF
|
||||||
|
|
7
flavours/mysql/install.d/97-haveged
Executable file
7
flavours/mysql/install.d/97-haveged
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Install the haveged daemon so ssh config on startup isn't glacial.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
apt-get -y install haveged
|
10
flavours/mysql/install.d/99-clean-apt
Executable file
10
flavours/mysql/install.d/99-clean-apt
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Build iscsi modules with installed kernel
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
apt-get clean
|
||||||
|
|
||||||
|
|
16
flavours/mysql/pre-install.d/50-percona-server
Executable file
16
flavours/mysql/pre-install.d/50-percona-server
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# add Percona GPG key
|
||||||
|
#gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
|
||||||
|
#gpg -a --export CD2EFD2A | apt-key add -
|
||||||
|
|
||||||
|
# add Percona repo
|
||||||
|
# XXX: autodetect distribution when Percona supports Quantal
|
||||||
|
#VER='precise'
|
||||||
|
#cat <<EOL > /etc/apt/sources.list.d/percona
|
||||||
|
#deb http://repo.percona.com/apt $VER main
|
||||||
|
#deb-src http://repo.percona.com/apt $VER main
|
||||||
|
#EOL
|
Loading…
Reference in New Issue
Block a user