Questão de Engenharia de Software — Demais Ferramentas e Tópicos Variados de Controle de Versão — FCC 2024
Engenharia de Software›Demais Ferramentas e Tópicos Variados de Controle de Versão
Código
fc147292
Banca
FCC
Órgão
SEAD PI
Ano
2024
Cargo
Ana Gov ( )
A partir de uma ferramenta de automatização e gerenciamento de configuração, aberta e funcionando em condições ideais, um analista criou um arquivo com o seguinte conteúdo: package { 'apache2': ensure => ' installed', } service { 'apache2': ensure => 'running', enable => true, } file { ' /var/www/html/index.html' , ensure => 'file ' , content => 'Hello, PIAUI! ' , } Sobre o conteúdo desse arquivo, trata-se de um
Afacter do Ansible para automatizar a configuração do Apache, criar um diretório para o site e uma página HTML de boasvindas.
Bmanifesto Puppet que instala o Apache, garante que o serviço esteja em execução e cria uma página inicial.
Cfacterdo Jenkins que instala o Apache, cria um diretório para o site e uma página HTML de boas-vindas.
Dpipeline do Puppet usado para gerenciar a instalação do Apache, garantir que ele esteja rodando e configurar um arquivo de página inicial.
Eplaybook do Jenkins que gerencia o estado do pacote Apache, assegura que o serviço esteja ativo e configura um arquivo HTML de boas-vindas.
Revelar gabarito e comentário▾
GabaritoB — manifesto Puppet que instala o Apache, garante que o serviço esteja em execução e cria uma página inicial.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Ferramentas de Gerenciamento de Configuração: Puppet
Gabarito: letra B. O arquivo apresentado é um manifesto Puppet, pois utiliza a sintaxe declarativa própria dessa ferramenta (blocos package, service e file) para garantir que o pacote apache2 esteja instalado, que o serviço esteja em execução e habilitado, e que o arquivo index.html exista com o conteúdo especificado. As demais alternativas confundem a ferramenta (Ansible, Jenkins) ou o artefato (facter, pipeline, playbook).
O Puppet é uma ferramenta de gerenciamento de configuração (configuration management) que automatiza a administração de infraestrutura, garantindo que os sistemas estejam no estado desejado. Ele opera de forma declarativa: o administrador descreve o estado final que os recursos devem ter, e o Puppet se encarrega de aplicar as mudanças necessárias para alcançá-lo. Isso contrasta com ferramentas imperativas, como scripts tradicionais, onde se descreve o passo a passo para chegar ao resultado.
O coração do Puppet é o manifesto, um arquivo com extensão .pp que contém a definição dos recursos. Cada recurso é declarado com um tipo (como package, service, file, user, group) e um título, seguido de um conjunto de atributos que especificam o estado desejado. No arquivo da questão, temos três recursos:
package { 'apache2': ensure => 'installed' } — garante que o pacote do Apache esteja instalado.
service { 'apache2': ensure => 'running', enable => true } — garante que o serviço esteja em execução e habilitado para iniciar no boot.
file { '/var/www/html/index.html': ensure => 'file', content => 'Hello, PIAUI!' } — garante que o arquivo exista com o conteúdo especificado.
A sintaxe tipo { 'título': atributo => valor } é a marca registrada do Puppet. O ensure é um atributo meta que define o estado do recurso (instalado, presente, running, etc.). O Puppet também possui um facter, que é uma ferramenta que coleta fatos do sistema (como sistema operacional, arquitetura, endereço IP) e os disponibiliza como variáveis para uso nos manifestos. Já o Ansible usa playbooks em YAML, e o Jenkins usa pipelines (Jenkinsfile) para automação de CI/CD.
A pegadinha da banca está em misturar os nomes das ferramentas e seus artefatos. É crucial saber distinguir:
Ferramenta
Artefato principal
Sintaxe
Foco
Puppet
Manifesto (.pp)
Declarativa (tipo { 'título': ... })
Gerenciamento de configuração
Ansible
Playbook (YAML)
Declarativa (tarefas)
Gerenciamento de configuração / orquestração
Jenkins
Pipeline (Jenkinsfile)
Declarativa ou scriptada
CI/CD (integração e entrega contínua)
Facter
(ferramenta do Puppet)
—
Coleta de fatos do sistema
Guarde essa distinção: é exatamente nela que as alternativas se dividem. A questão cobra o reconhecimento da sintaxe do Puppet e a associação correta entre ferramenta e artefato.
Ferramentas de automação: Puppet (Manifesto (.pp), Sintaxe: tipo { 'título': ... }); Ansible (Playbook (YAML), Tarefas declarativas); Jenkins (Pipeline (Jenkinsfile), Foco em CI/CD); Facter (Coleta fatos do sistema, Ferramenta do Puppet)
Alternativa A — ❌ Incorreta
Erra ao atribuir o arquivo ao Ansible e ao chamá-lo de facter. O facter é uma ferramenta do próprio Puppet para coleta de informações do sistema, não um artefato de configuração do Ansible. Além disso, a sintaxe apresentada não é de um playbook Ansible (que usa YAML com hosts, tasks, etc.).
Alternativa B — ✅ Correta ⟵ GABARITO
Identifica corretamente o arquivo como um manifesto Puppet. A sintaxe package { ... }, service { ... } e file { ... } é característica do Puppet, e as ações descritas (instalar o Apache, garantir o serviço em execução e criar a página inicial) correspondem exatamente ao conteúdo do arquivo.
Alternativa C — ❌ Incorreta
Erra ao atribuir o arquivo ao Jenkins e ao chamá-lo de facter. O facter é uma ferramenta do Puppet, não do Jenkins. O Jenkins utiliza pipelines (Jenkinsfile) para automação de CI/CD, não manifestos com essa sintaxe.
Alternativa D — ❌ Incorreta
Erra ao chamar o arquivo de pipeline do Puppet. O Puppet não utiliza o termo "pipeline" para seus manifestos; esse termo é mais associado ao Jenkins (CI/CD). O artefato do Puppet é o manifesto.
Alternativa E — ❌ Incorreta
Erra ao atribuir o arquivo ao Jenkins e ao chamá-lo de playbook. O playbook é o artefato do Ansible, não do Jenkins. O Jenkins utiliza pipelines (Jenkinsfile). Além disso, a sintaxe não é de um playbook Ansible.
NÃO CAIA NESSA!
A banca mistura deliberadamente os nomes das ferramentas de automação (Puppet, Ansible, Jenkins) e seus respectivos artefatos (manifesto, playbook, pipeline). O candidato que decora os nomes sem associá-los à sintaxe correta cai facilmente. A chave é reconhecer a sintaxe tipo { 'título': ... } como exclusiva do Puppet.
PEGA ESSA DICA!
Para questões de ferramentas de automação, foque em identificar a sintaxe e o artefato característico de cada uma. Puppet = manifesto (.pp), Ansible = playbook (YAML), Jenkins = pipeline (Jenkinsfile). Memorize essa associação e resolva questões de reconhecimento rapidamente.