Skip to content
Open

done #16

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
# lesson13
# puppet_hw_setup
33 changes: 33 additions & 0 deletions Vagrantfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure('2') do |config|
# define box to use
config.vm.box = "centos/7"

# define puppet master server
config.vm.define 'server' do |server|
server.vm.hostname = 'server.m'
server.vm.network 'private_network', ip: '192.0.0.100'
server.vm.provider 'virtualbox' do |v|
v.name = 'server'
v.memory = 4096
v.cpus = 2
v.linked_clone = true
end
server.vm.provision :shell, path: "install.sh"
end

# define puppet client vm
config.vm.define 'client' do |client|
client.vm.hostname = 'client.m'
client.vm.network 'private_network', ip: '192.0.0.105'
client.vm.provider 'virtualbox' do |v|
v.name = 'client'
v.memory = 1024
v.cpus = 1
v.linked_clone = true
end
client.vm.provision :shell, path: "agent.sh"
end
end
9 changes: 9 additions & 0 deletions agent.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
nmcli connection reload
systemctl restart network.service
grep server.m /etc/hosts
[ $? -ne 0 ] && echo "192.0.0.100 server.m" >> /etc/hosts
yum install -y https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
yum install -y puppet-agent
/bin/cp /vagrant/client_puppet.conf /etc/puppetlabs/puppet/puppet.conf
source ~/.bashrc
puppet agent --test
1 change: 1 addition & 0 deletions autosign.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.m
5 changes: 5 additions & 0 deletions client_puppet.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[main]
certname = client.m
server = server.m
environment = prod
runinterval = 3m
4 changes: 4 additions & 0 deletions hosts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.0.0.100 server.m
192.0.0.105 client.m
47 changes: 47 additions & 0 deletions install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
######## after vm provisioning there is possibility that ip address that was specified in vagrant file
######## won't be there after provisioning is over, restart of network service fixes it
nmcli connection reload
systemctl restart network.service
grep client.m /etc/hosts
[ $? -ne 0 ] && echo "192.0.0.105 client.m" >> /etc/hosts
######## ям инсталл епта
yum install -y https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
yum install -y http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-redhat94-9.4-2.noarch.rpm
yum install -y puppetserver
systemctl enable puppetserver
######## copying files from rsync'ed folder to their destination
/bin/cp /vagrant/hosts /etc/
/bin/cp /vagrant/site.pp /etc/puppetlabs/code/environments/production/manifests
/bin/cp /vagrant/autosign.conf /etc/puppetlabs/puppet/
/bin/cp /vagrant/server_puppet.conf /etc/puppetlabs/puppet/puppet.conf
######## create folders for environments and copy manifest
mkdir -p /etc/puppetlabs/code/environments/prod/{manifests,modules}
/bin/cp /vagrant/prod_site.pp /etc/puppetlabs/code/environments/prod/manifests/site.pp
######## reload puppet
systemctl restart puppetserver
source ~/.bashrc
######## install postgres
yum install postgresql94-server postgresql94-contrib -y
######## create initial db and copy configs
/usr/pgsql-9.4/bin/postgresql94-setup initdb
yes | /bin/cp /vagrant/pg_hba.conf /var/lib/pgsql/9.4/data/
######## enable and start postgres
systemctl enable postgresql-9.4.service
systemctl start postgresql-9.4.service
######## change directory because of stupid error when executing as postgres
cd /
######## create user and db in postgres
sudo -u postgres psql -c "create user puppetdb password 'puppetdb'"
sudo -u postgres psql -c "create database puppetdb owner puppetdb"
######## installing modules in puppet and specifying production env's for them
puppet module install puppetlabs-puppetdb --version 5.1.2
puppet module install puppetlabs-mysql --version 3.10.0 --environment prod
puppet module install puppetlabs-apache --version 1.11.0
puppet module install spotify-puppetexplorer --version 1.1.1
puppet module install puppet-nginx --version 0.6.0 --environment prod
######## lauch and test
puppet agent -t
######## stop iptables and add rule to selinux to passthrough httpd
systemctl stop iptables
puppet cert list --all
setsebool -P httpd_can_network_connect on
47 changes: 47 additions & 0 deletions install.sh.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
######## after vm provisioning there is possibility that ip address that was specified in vagrant file
######## won't be there after provisioning is over, restart of network service fixes it
nmcli connection reload
systemctl restart network.service
grep client.m /etc/hosts
[ $? -ne 0 ] && echo "192.0.0.105 client.m" >> /etc/hosts
######## ям инсталл епта
yum install -y https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
yum install -y http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-redhat94-9.4-2.noarch.rpm
yum install -y puppetserver
systemctl enable puppetserver
######## copying files from rsync'ed folder to their destination
/bin/cp /vagrant/hosts /etc/
/bin/cp /vagrant/site.pp /etc/puppetlabs/code/environments/production/manifests
/bin/cp /vagrant/autosign.conf /etc/puppetlabs/puppet/
/bin/cp /vagrant/server_puppet.conf /etc/puppetlabs/puppet/puppet.conf
######## create folders for environments and copy manifest
mkdir -p /etc/puppetlabs/code/environments/prod/{manifests,modules}
/bin/cp /vagrant/prod_site.pp /etc/puppetlabs/code/environments/prod/manifests/site.pp
######## reload puppet
systemctl restart puppetserver
source ~/.bashrc
######## install postgres
yum install postgresql94-server postgresql94-contrib -y
######## create initial db and copy configs
/usr/pgsql-9.4/bin/postgresql94-setup initdb
yes | /bin/cp /vagrant/pg_hba.conf /var/lib/pgsql/9.4/data/
######## enable and start postgres
systemctl enable postgresql-9.4.service
systemctl start postgresql-9.4.service
######## change directory because of stupid error when executing as postgres
cd /
######## create user and db in postgres
sudo -u postgres psql -c "create user puppetdb password 'puppetdb'"
sudo -u postgres psql -c "create database puppetdb owner puppetdb"
######## installing modules in puppet and specifying production env's for them
puppet module install puppetlabs-puppetdb --version 5.1.2
puppet module install puppetlabs-mysql --version 3.10.0 --environment prod
puppet module install puppetlabs-apache --version 1.11.0
puppet module install spotify-puppetexplorer --version 1.1.1
puppet module install puppet-nginx --version 0.6.0 --environment prod
######## lauch and test
puppet agent -t
######## stop iptables and add rule to selinux to passthrough httpd
systemctl stop iptables
setsebool -P httpd_can_network_connect on
puppet cert list --all
3 changes: 3 additions & 0 deletions pg_hba.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
local all all peer
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
48 changes: 48 additions & 0 deletions prod_site.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# node definitions.)

## Active Configurations ##

# Disable filebucket by default for all File resources:
File { backup => false }

# DEFAULT NODE
# Node definitions in this file are merged with node data from the console. See
# http://docs.puppetlabs.com/guides/language_guide.html#nodes for more on
# node definitions.

# The default node definition matches any node lacking a more specific node
# definition. If there are no other nodes in this file, classes declared here
# will be included in every node's catalog, *in addition* to any classes
# specified in the console for that node.

node default {
# This is where you can declare classes for all nodes.
# Example:
# class { 'my_class': }
notify { "Node ${::fqdn} is up and running!": }
}

node 'client.m' {
class { 'nginx': }
class { '::mysql::server':
root_password => 'password',
}

mysql_database { 'prod_mdb':
ensure => present,
charset => 'utf8',
}

mysql_user { 'prod_user@localhost':
ensure => present,
password_hash => mysql_password('prod_password'),
}

mysql_grant { 'prod_user@localhost/prod_mdb.*':
ensure => present,
options => ['GRANT'],
privileges => ['ALL'],
table => 'prod_mdb.*',
user => 'prod_user@localhost',
}
}
19 changes: 19 additions & 0 deletions server_puppet.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# This file can be used to override the default puppet settings.
# See the following links for more details on what settings are available:
# - https://docs.puppetlabs.com/puppet/latest/reference/config_important_settings.html
# - https://docs.puppetlabs.com/puppet/latest/reference/config_about_settings.html
# - https://docs.puppetlabs.com/puppet/latest/reference/config_file_main.html
# - https://docs.puppetlabs.com/puppet/latest/reference/configuration.html
[main]
certname = server.m
server = server.m
environment = production
runinterval = 1h
strict_variables = true

[master]
vardir = /opt/puppetlabs/server/data/puppetserver
logdir = /var/log/puppetlabs/puppetserver
rundir = /var/run/puppetlabs/puppetserver
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid
codedir = /etc/puppetlabs/code
39 changes: 39 additions & 0 deletions site.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# node definitions.)

## Active Configurations ##

# Disable filebucket by default for all File resources:
File { backup => false }

# DEFAULT NODE
# Node definitions in this file are merged with node data from the console. See
# http://docs.puppetlabs.com/guides/language_guide.html#nodes for more on
# node definitions.

# The default node definition matches any node lacking a more specific node
# definition. If there are no other nodes in this file, classes declared here
# will be included in every node's catalog, *in addition* to any classes
# specified in the console for that node.

node default {
# This is where you can declare classes for all nodes.
# Example:
# class { 'my_class': }
notify { "Node ${::fqdn} is up and running!": }
}

node 'server.m' {
# # Configure puppetdb
class { 'puppetdb::server':
database_host => '127.0.0.1',
confdir => '/etc/puppetlabs/puppetdb/conf.d',
}
# Configure the Puppet master to use puppetdb
class { 'puppetdb::master::config': }
class { 'puppetexplorer':
vhost_options => {
rewrites => [ { rewrite_rule => [
'^/api/metrics/v1/mbeans/puppetlabs.puppetdb.query.population:type=default,name=(.*)$ https://%{HTTP_HOST}/api/metrics/v1/mbeans/puppetlabs.puppetdb.population:name=$1 [R=301,L]'
] } ] }
}
}