O fantoche usa uma linguagem declarativa, não instrutiva. Você está dizendo a Puppet como você quer que o sistema se pareça, e então confiando que Puppet fará a coisa certa para colocar o estado do sistema em conformidade com seu (s) manifesto (s).
na sua classe "apache", se você estiver usando o método padrão para instalar o apache:
package { "apache":
ensure => "installed"
}
... então você não precisa se preocupar com isso instalando duas vezes.