OK ... tested and it works like a charm. Posted the approach in my blog: http://gioppoluca.blogspot.it/2012/09/puppet-and-exported-resources.html
Il giorno mercoledì 5 settembre 2012 15:44:45 UTC+2, Luca Gioppo ha scritto: > > The problem is: > when installing an application in a distributed environment I need to > create the application DB on a remote host and not on the same host as the > application. > > To make an example I'm going to install zabbix on host1 and the mysql db > is on host2 > > I'll have to run the script to create the schema after having created the > DB and user. > That operation have to be done in the host2 since it will not be possible > to have root access on host1. > There is an interesting post on how to manage root password on the host2 > on: > http://bitfieldconsulting.com/puppet-and-mysql-create-databases-and-users > > But the post imply that you are working on the same host. > > Than there is the exported resources topic: > http://docs.puppetlabs.com/guides/exported_resources.html > > The idea is ... could it be possible to take the define from the > bitfieldconsulting and use it as a exported resource? > > define mysqldb( $user, $password ) { > exec { "create-${name}-db": > unless => "/usr/bin/mysql -u${user} -p${password} ${name}", > command => "/usr/bin/mysql -uroot -p$mysql_password -e \"create > database ${name}; grant all on ${name}.* to ${user}@localhost identified by > '$password';\"", > require => Service["mysqld"], > } > } > > > This way: > Create a define in the zabbix class that export the mysqldb resource > define zabbix::mysqldb ($servername = $servername, $user= $user, > $password= $password,$Db = $db){ > @@mysqldb { $servername-$db: user => $user, password => $password,tag > => "new_user_for_mysql" } > > } > > in the zabbix class > class zabbix(...){ > ... > mysqldb('dbname': server => 'host2', passoword => 'pass', user => 'user') > ... > } > > and call from within the mysql node > > > class mysql::server { > > package { "mysql-server": ensure => installed } > package { "mysql": ensure => installed } > > service { "mysqld": > enable => true, > ensure => running, > require => Package["mysql-server"], > } > > file { "/var/lib/mysql/my.cnf": > owner => "mysql", group => "mysql", > source => "puppet:///mysql/my.cnf", > notify => Service["mysqld"], > require => Package["mysql-server"], > } > > file { "/etc/my.cnf": > require => File["/var/lib/mysql/my.cnf"], > ensure => "/var/lib/mysql/my.cnf", > } > > exec { "set-mysql-password": > unless => "mysqladmin -uroot -p$mysql_password status", > path => ["/bin", "/usr/bin"], > command => "mysqladmin -uroot password $mysql_password", > require => Service["mysqld"], > } > Mysqldb<<| tag == 'new_user_for_mysql' |>> > } > > > > Could it work? > Luca > -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/kZ_lewKPBugJ. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.