本文记录一些puppet的常用方法,会根据实践继续更新。
简介
- puppet工作目录(puppet-slave)是在 /etc/puppet/
- /etc/puppet/manifest 这是puppet脚本的入口
- /etc/puppet/modules 这里存放众多的puppet module
- 但是一个普通的、不被其他puppet脚本include的脚本,可以放在任何地方,比如,这样执行:
puppet apply /tmp/1.pp
关于 exec、require 和执行顺序
File ‘a.pp’
class basic_exec {
exec { 'step-1':
command => '/tmp/1.sh',
path => [ '/usr/local/bin/', '/bin/' ]
} ->
exec { 'step-2':
command => 'echo 123 > /root/111.txt',
path => [ '/usr/local/bin/', '/bin/' ]
}
}
class {'basic_exec': }
## Then, run 'puppet apply a.pp'
## If 1.sh does not return 0, step-2 will not be executed.
File ‘b.pp’
class basic_exec {
exec { 'step-2':
require => Exec['step-1'],
command => 'echo 123 > /root/222.txt',
path => [ '/usr/local/bin/', '/bin/' ]
}
exec { 'step-1':
command => 'echo 123 > /root/111.txt',
path => [ '/usr/local/bin/', '/bin/' ]
}
}
class {'basic_exec': }
## Then, run 'puppet apply b.pp';
## step-1 is executed before step-2.
include class 的用法
-
include有2种用法
a.
class XXX {
include test::test_1
include test::test_2
}b.
class XXX {
class {‘test::test_1’: }
class {‘test::test_2’: }
} -
注意事项
2.1 所include的类,以上面为例应该放在如下的目录下 /etc/puppet/modules/test
2.2 若要规定执行顺序,应该这么写:class XXX {
class {‘test::test_1’: } ->
class {‘test::test_2’: }
}
stage的用法
#starting of xxx module
stage {'stage_xxx': require => Stage['main'],}
class {'test_module::xxx': stage => 'stage_xxx',}
自动安装一个rpm包
package{'mode_auth_openidc':
ensure => present,
} ->
其他的一些puppet命令
puppet master -D
puppet cert --list --all