Post on 03-Sep-2014
description
transcript
SaltStack
NOV 2013
www.anubhaskar.name
Creative Commons Attribution-ShareAlike 3.0 Unported License.
2
1.Introduction2.Product Architecture3.Components4.Prototype Architecture5.Prerequisites6.Install & configure Salt server7.Install and configure Salt clients8.Configure LAMP Software repositories9.Create web site template10.Configure Apache web server11.Configure PHP12.Configure MySQL db server13.Create sample database14.Create script to import database15.Configure sample database import16.Apply states to target clients
AGENDA
Creative Commons Attribution-ShareAlike 3.0 Unported License.
3
Introduction
Creative Commons Attribution-ShareAlike 3.0 Unported License.
Saltstack is a● Configuration Management System
Keep the hosts configured the way we want them. Maintain hosts in a defined state
Manage packages, config files, services, users, groups etc in an easy to read syntax at central locations
Provision cloud computing instances● Remote Execution System
Execute commands and query data on remote nodes
Receive results from remote nodes asynchronously
4
Product Architecture
Creative Commons Attribution-ShareAlike 3.0 Unported License.
Minion1
Minion2
MinionN
Salt Master
Halite(Web UI)
5
Components
Creative Commons Attribution-ShareAlike 3.0 Unported License.
● Master - The central server from which Salt commands are run and States are applied
● Minions - The hosts you are managing, they maintain a connection to the master and await instructions
● States - Express the state of a host using small, easy to read, easy to understand configuration files. Directives used for configuration management
● Modules - Collections of functions which can be run from the Salt CLI (and are also run under the hood by States)
● Grains – Static information collected by minions about the system. The grains interface is made available to other components to make right commands are automatically available to them.
6
repo(Centos6/10.10.10.2Software Repository)
Prototype Architecture
Creative Commons Attribution-ShareAlike 3.0 Unported License.
minion(Centos6/10.10.10.4)
salt(Centos6/10.10.10.3)
Admin
Administration
7
Prerequisites
Creative Commons Attribution-ShareAlike 3.0 Unported License.
For simplicity and ease of demonstration below changes are made in prototype. These options should be avoided or carefully considered in a production deployment
1. All the hosts are installed with Centos6.3 minimal install cd.
2. Disable SELinux on both server and client# vi /etc/selinux/configSELINUX=disabled
3. Disable firewall on both server and client# chkconfig iptables off
4. Add host entries on server, client and software repository10.10.10.2 repo10.10.10.3 salt10.10.10.4 minion
5. Reboot server and client hosts
8
Install & configure Salt server
Creative Commons Attribution-ShareAlike 3.0 Unported License.
1. Install salt server and web-ui on 10.10.10.3# yum install salt-master# yum install python-halite
2. Configure salt server# vi /etc/salt/masterexternal_auth: pam: halite: - .* - '@runner' file_roots: base: - /srv/salthalite: level: 'debug' server: 'cherrypy' host: '0.0.0.0' port: '8080' cors: False tls: False
9
Install & configure Salt server
Creative Commons Attribution-ShareAlike 3.0 Unported License.
3. Create a user to login to web-ui# useradd halite# passwd halite
4. Create directory for configuration store# mkdir /srv/salt
5. Start salt server# service salt-master start# chkconfig salt-master on
10
Install & configure Salt clients
Creative Commons Attribution-ShareAlike 3.0 Unported License.
1. Install salt client (called minion) on 10.10.10.4# yum install salt-minion# service salt-minion start# chkconfig salt-minion on
2. Log into salt server and accept SSL key from minion for authorization# salt-key -L# salt-key -a minion
3. Try a test connect from salt server to salt client# salt minion test.ping
4. View details (called grains) of salt client from server# salt minion grains.items
11
Now, let us deploy a simple LAMP using
Saltstack
LAMP – Linux/Apache/MySQL/PHP
Creative Commons Attribution-ShareAlike 3.0 Unported License.
12
Configure LAMP Software Repositories
Creative Commons Attribution-ShareAlike 3.0 Unported License.
1. Create webserver yum repo file in salt server# mkdir /srv/salt/softdepo# vi /srv/salt/softdepo/httpd.repo[httpd]name=httpdbaseurl=http://10.10.10.2/httpdgpgcheck=0enabled=1
2. Crete dbserver yum repo file in salt server# vi /srv/salt/softdepo/mysql.repo[mysql]name=mysqlbaseurl=http://10.10.10.2/mysqlgpgcheck=0enabled=1
3. Create php yum repo file in salt server# vi /srv/salt/softdepo/php.repo[php]name=phpbaseurl=http://10.10.10.2/phpgpgcheck=0enabled=1
13
Configure LAMP Software Repositories
Creative Commons Attribution-ShareAlike 3.0 Unported License.
4. Create software repository state files in salt server# vi /srv/salt/softdepo.sls/etc/yum.repos.d/httpd.repo: file: - managed - source: salt://softdepo/httpd.repo
/etc/yum.repos.d/php.repo: file: - managed - source: salt://softdepo/php.repo
/etc/yum.repos.d/mysql.repo: file: - managed - source: salt://softdepo/mysql.repo
14
Create web site template
Creative Commons Attribution-ShareAlike 3.0 Unported License.
1. Create a php web page template in salt server to display some mysql database values. This web page will be ultimately hosted in our LAMP server# mkdir /srv/salt/webserver# vi /srv/salt/webserver/index.php<?php
$con = mysql_connect( 'localhost', 'root' );$db = mysql_select_db( 'solarsystem' );
$sql = "select * from planets";$query = mysql_query( $sql );
echo "<table>";
while( $row = mysql_fetch_assoc($query) ){echo "<tr><td>$row[id]</td>";echo "<td>$row[name]</td></tr>";}
echo "</table>";
?>
15
Configure Apache web server
Creative Commons Attribution-ShareAlike 3.0 Unported License.
2. Create state files in salt server for installing Apache web server# vi /srv/salt/webserver.slshttpd: pkg: - installed service: - running - require: - pkg: httpd
/var/www/html/index.php: file: - managed - source: salt://webserver/index.php
16
Configure PHP
Creative Commons Attribution-ShareAlike 3.0 Unported License.
1. Create state files in salt server for installing PHP# vi /srv/salt/php.slsphp: pkg: - installed
php-mysql: pkg: - installed
17
Configure MySQL db server
Creative Commons Attribution-ShareAlike 3.0 Unported License.
1. Create state files in salt server for installing MySQL# vi /srv/salt/dbserver.slsmysql-server: pkg: - installed
mysqld: service: - running - require: - pkg: mysql-server
18
Create a sample database to import into db server
Creative Commons Attribution-ShareAlike 3.0 Unported License.
1. Create a database dump file in salt server to import data to mysql server# mkdir /srv/salt/dbcreate# vi /srv/salt/dbcreate/dbdump.sqlCREATE DATABASE IF NOT EXISTS `solarsystem`;USE `solarsystem`;DROP TABLE IF EXISTS `planets`;CREATE TABLE `planets` ( `id` int(8) NOT NULL DEFAULT '0', `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;LOCK TABLES `planets` WRITE;INSERT INTO `planets` VALUES (1,'mercury'),(2,'venus'),(3,'earth'),(4,'mars'),(5,'jupiter'),(6,'saturn'),(7,'uranus'),(8,'neptune'),(9,'pluto');UNLOCK TABLES;
19
Create a script to import sample database
Creative Commons Attribution-ShareAlike 3.0 Unported License.
2. Create a shell script in salt server to import sample database# vi /srv/salt/dbcreate/dbcreate.sh#! /bin/bashmysql -u root < /tmp/dbdump.sql
20
Configure sample data base import to db server
Creative Commons Attribution-ShareAlike 3.0 Unported License.
1. Create saltstack state files in salt server for importing data to db server# vi /srv/salt/dbcreate.sls/tmp/dbdump.sql: file: - managed - source: salt://dbcreate/dbdump.sql/tmp/dbcreate.sh: file: - managed - source: salt://dbcreate/dbcreate.sh
dbcreate.sh: cmd: - run - name: | chmod +x /tmp/dbcreate.sh /tmp/dbcreate.sh
21
Apply states to target client
Creative Commons Attribution-ShareAlike 3.0 Unported License.
1. Create a top.sls file in salt server to map state files to target hosts and specify execution order# vi /srv/salt/top.slsbase: minion: - softdepo - php - dbserver - dbcreate - webserver
2. Apply states to target client from salt server# salt minion state.highstate
3. View hosted website at http://10.10.10.4/index.php
22
THANK YOU
Creative Commons Attribution-ShareAlike 3.0 Unported License.