Puppet Criando módulo Saltstack

Eu já mostrei como instalar o Salt manualmente, agora vou compartilhar com vocês o módulo que criei para instalá-lo via puppet em todo o nosso parque de servidores.

Criando o módulo

crie o diretório

mkdir saltstack

entre no diretório

cd saltstack

crie o subdir files

mkdir files

crie o subdir manifests

mkdir manifests

entre no subdir manifests

cd manifests

crie o subdir classes

mkdir classes

entre no subdir classes

cd classes

crie o arquivo salt-master.pp

vim salt-master.pp

insira os seguinte conteúdo

{% codeblock lang:puppet %}

class salt-master {

if $lsbdistcodename == 'squeeze' {

	package { "salt-master":
		ensure => present,
	}

	file { "/etc/salt/master":
		ensure  => present,
		mode    => 644,
		owner   => root,
		group   => root,
		source  => "puppet:///salt/master",
		require => Package['salt-master'],
		notify  => Service['salt-master'],
	}

	service { "salt-master":
		ensure     => running,
		enable     => true,
		hasstatus  => true,
		hasrestart => true,
		require    => [ Package['salt-master'], File["/etc/salt/master"] ],
	}
}

}

{% endcodeblock %}

crie o arquivo salt-minion.pp com o conteúdo abaixo

{% codeblock lang:puppet %}

class salt-minion {

if $lsbdistcodename == 'squeeze' {

	package { "salt-minion":
		ensure => present,
	}

	file { "/etc/salt/minion":
		ensure  => present,
		mode    => 644,
		owner   => root,
		group   => root,
		source  => "puppet:///salt/minion",
		require => Package['salt-minion'],
		notify  => Service['salt-minion'],
	}

	service { "salt-minion":
		ensure     => running,
		enable     => true,
		hasstatus  => true,
		hasrestart => true,
		require    => [ Package['salt-minion'], File["/etc/salt/minion"] ],
	}
}

}

{% endcodeblock %}

suba um nível

cd ..

crie o arquivo init.pp

vim init.pp

insira o conteúdo abaixo

import "classes/*.pp"

coloque os arquivos de configuração master e minion no diretório files.

Declarando módulo no site.pp

Após a construção do módulo precisamos de alguma forma carregá-lo, após isto poderemos incluir suas classes nas configurações dos nodes.

O arquivo /etc/puppet/manifests/site.pp é o arquivo em que você precisa carregar os módulos, neste arquivo você poderá colocar uma linha como a abaixo:

import "saltstack"

Isso será suficiente para o carregamento do módulo.

Declarando classes em nodes

Declarando a classe salt-master ao node master

{% codeblock lang:puppet %}

node “master” { include salt-master }

{% endcodeblock %}

Declarando a classe salt-minion ao node minion

{% codeblock lang:puppet %}

node “master” { include salt-master }

{% endcodeblock %}

Amarrando as pontas

Este módulo é simples, porém é o suficiente para instalarmos o servidor salt-master e também o salt-minion em nossos nodes, com isso poderemos executar comandos nos nodes em tempo real, algo que faz muita falta no puppet.