Configurar o servidor do Chef usando o Starter Kit - AWS OpsWorks

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar o servidor do Chef usando o Starter Kit

Importante

AWS OpsWorks O Chef Automate chegou ao fim da vida útil em 5 de maio de 2024 e foi desativado para clientes novos e existentes. Recomendamos que os clientes existentes migrem para o Chef SaaS ou uma solução alternativa. Se você tiver dúvidas, pode entrar em contato com a AWS Support equipe no AWS re:POST ou por meio do Premium AWS Support.

Enquanto a criação do servidor do Chef ainda está em andamento, abra a página Properties dele no console do AWS OpsWorks for Chef Automate . Na primeira vez que você trabalhar com um novo servidor do Chef, a página Properties solicitará que você faça o download de dois itens necessários. Faça o download desses itens antes que o servidor do Chef fique online. Os botões de download não ficam disponíveis depois que um novo servidor está online.

AWS OpsWorks for Chef Automate nova página de propriedades do servidor
  • Sign-in credentials for the Chef server (Credenciais de login para o servidor do Chef). Você usará essas credenciais para entrar no painel do Chef Automate, onde trabalha com os recursos premium do Chef Automate, como fluxo de trabalho e verificações de conformidade. AWS OpsWorks não salva essas credenciais; essa é a última vez que elas estão disponíveis para visualização e download. Se necessário, será possível alterar a senha fornecida com essas credenciais depois de fazer login.

  • Starter Kit. O Starter Kit contém um arquivo README com exemplos, um arquivo de configuração knife.rb e uma chave privada para o usuário principal ou essencial. Um novo par de chaves será gerado (e a antiga chave será redefinida) sempre que você fizer o download do Starter Kit.

Além das credenciais que funcionam somente com o novo servidor, o arquivo.zip do Starter Kit inclui um exemplo simples de um repositório do Chef que funciona com qualquer servidor. AWS OpsWorks for Chef Automate No repositório do Chef, você armazena livros de receitas, funções, arquivos de configuração e outros artefatos para o gerenciamento de seus nós com o Chef. Recomendamos que você armazene esse repositório em um sistema de controle de versão, como Git, e trate-o como código-fonte. Para informações e exemplos que mostram como configurar um repositório do Chef controlado no Git, consulte Sobre o chef-repo na documentação do Chef.

Pré-requisitos

  1. Embora a criação do servidor ainda esteja em andamento, faça o download das credenciais de login para o servidor do Chef e salve-as em um local seguro, mas conveniente.

  2. Faça o download do Starter Kit e descompacte o arquivo Starter Kit..zip no diretório do espaço de trabalho. Não compartilhe a chave privada do Starter Kit. Se outros usuários forem gerenciar o servidor do Chef, adicione-os como administradores no painel do Chef Automate posteriormente.

  3. Baixe e instale o Chef Workstation (anteriormente conhecido como Chef Development Kit, ou Chef DK) no computador que você usará para gerenciar seu servidor e nós do Chef. O utilitário knife faz parte do Chef Workstation. Para instruções, consulte instalar o Chef Workstation no site do Chef.

Explorar o conteúdo do Starter Kit

O Starter Kit tem o seguinte conteúdo.

  • cookbooks/ - Um diretório para os livros de receitas criados por você. A cookbooks/ pasta contém o livro de receitas opsworks-webserver, um livro de receitas embalado que depende do livro de receitas nginx do site do Chef Supermarket. Policyfile.rb usa como padrão o Chef supermarket como fonte secundária se as dependências do livro de receitas não estiverem disponíveis no diretório cookbooks/.

  • Policyfile.rb - Um arquivo de política baseado no Ruby que define os livros de receitas, as dependências e os atributos que se tornam a política para os nós.

  • userdata.sh e userdata.ps1 - Você poderá usar arquivos de dados de usuário para associar automaticamente nós depois de iniciar o servidor do Chef Automate. userdata.sh é para o bootstrapping de nós baseados no Linux e userdata.ps1 é para nós baseados no Windows.

  • Berksfile - Você poderá usar este arquivo se preferir usar o Berkshelf e os comandos berks para fazer o upload de livros de receitas e suas dependências. Neste passo a passo, usamos Policyfile.rb e comandos do Chef para fazer o upload de livros de receitas, dependências e atributos.

  • README.md, um arquivo baseado no Markdown que descreve como usar o Starter Kit para configurar o servidor do Chef Automate pela primeira vez.

  • .chef é um diretório oculto que contém um arquivo de configuração knife (knife.rb) e um arquivo de chave de autenticação secreta (.pem).

    • .chef/knife.rb - Um arquivo de configuração knife (knife.rb). O knife.rbarquivo é configurado para que as operações da knifeferramenta do Chef sejam executadas no AWS OpsWorks for Chef Automate servidor.

    • .chef/ca_certs/opsworks-cm-ca-2020-root.pem - Uma chave privada SSL assinada por uma autoridade de certificação (CA) fornecida pelo AWS OpsWorks. Essa chave permite que o servidor identifique-se para o agente cliente do Chef Infra em nós que ele gerencia.

Configurar seu repositório do Chef

Um repositório do Chef contém vários diretórios. Cada diretório no Starter Kit contém um arquivo README que descreve a finalidade de diretório e como usá-lo para gerenciar seus sistemas com o Chef. Há duas maneiras de obter livros de receitas instalados no servidor do Chef: executando comandos knife ou um comando do Chef para fazer o upload de um arquivo de política (Policyfile.rb) para o servidor que faz o download e instala livros de receitas especificados. Este passo a passo usa comandos do Chef e Policyfile.rb para instalar livros de receitas no servidor.

  1. Crie um diretório no computador local para armazenar livros de receitas, como chef-repo. Depois de adicionar livros de receitas, funções e outros arquivos a esse repositório, recomendamos que você faça o upload ou o armazene em um sistema seguro e com controle de versão, como o CodeCommit Git ou o Amazon S3.

  2. No diretório chef-repo, crie os seguintes diretórios:

    • cookbooks/: armazena livros de receitas.

    • roles/: armazena funções nos formatos .rb ou .json

    • environments/: armazena ambientes nos formatos .rb ou .json.

Use Policyfile.rb para obter livros de receitas de uma fonte remota

Nesta seção, edite Policyfile.rb para especificar livros de receitas e executar um comando do Chef para fazer o upload do arquivo para o servidor e instalar livros de receitas.

  1. Visualize Policyfile.rb no Starter Kit. Por padrão, Policyfile.rb inclui o livro de receitas wrapper opsworks-webserver, que depende do livro de receitas nginx disponível no site do Chef Supermarket. O livro de receitas nginx instala e configura um servidor web em nós gerenciados. O livro de receitas chef-client necessário, que instala o agente cliente do Chef Infra em nós gerenciados, também é especificado.

    Policyfile.rb também aponta para o livro de receitas do Chef Audit, que você pode usar para configurar verificações de conformidade em nós. Para obter mais informações sobre como configurar verificações de conformidade e obter resultados de conformidade de nós gerenciados, consulte Verificações de conformidade em AWS OpsWorks for Chef Automate. Se você não quiser configurar verificações de conformidade e auditoria agora, exclua 'audit' da seção run_list e não especifique os atributos do livro de receitas audit no final do arquivo.

    # Policyfile.rb - Describe how you want Chef to build your system. # # For more information about the Policyfile feature, visit # https://docs.chef.io/policyfile.html # A name that describes what the system you're building with Chef does. name 'opsworks-demo-webserver' # The cookbooks directory is the preferred source for external cookbooks default_source :chef_repo, "cookbooks/" do |s| s.preferred_for "nginx", "windows", "chef-client", "yum-epel", "seven_zip", "build-essential", "mingw", "ohai", "audit", "logrotate", "cron" end # Alternative source default_source :supermarket # run_list: chef-client runs these recipes in the order specified. run_list 'chef-client', 'opsworks-webserver', 'audit' # add 'ssh-hardening' to your runlist to fix compliance issues detected by the ssh-baseline profile # Specify a custom source for a single cookbook: cookbook 'opsworks-webserver', path: 'cookbooks/opsworks-webserver' # Policyfile defined attributes # Define audit cookbook attributes default["opsworks-demo"]["audit"]["reporter"] = "chef-server-automate" default["opsworks-demo"]["audit"]["profiles"] = [ { "name": "DevSec SSH Baseline", "compliance": "admin/ssh-baseline" } ]

    Este é um exemplo de Policyfile.rb sem o livro de receitas audit e os atributos, caso você queira configurar apenas o servidor web nginx por enquanto.

    # Policyfile.rb - Describe how you want Chef to build your system. # # For more information on the Policyfile feature, visit # https://docs.chef.io/policyfile.html # A name that describes what the system you're building with Chef does. name 'opsworks-demo-webserver' # Where to find external cookbooks: default_source :supermarket # run_list: chef-client will run these recipes in the order specified. run_list 'chef-client', 'opsworks-webserver' # Specify a custom source for a single cookbook: cookbook 'opsworks-webserver', path: 'cookbooks/opsworks-webserver'

    Se você fizer alterações em Policyfile.rb, salve o arquivo.

  2. Faça o download e instale os livros de receitas definidos em Policyfile.rb.

    chef install

    Todos os livros de receitas têm versionamento no arquivo metadata.rb do livro de receitas. Sempre que altera um livro de receitas, você deve aumentar a versão dele que está no metadata.rb.

  3. Se você tiver optado por configurar verificações de conformidade e mantido as informações do livro de receitas audit no arquivo de política, envie a política opsworks-demo para o servidor.

    chef push opsworks-demo
  4. Se você concluiu a Etapa 3, verifique a instalação da política. Execute o seguinte comando .

    chef show-policy

    Os resultados devem ser semelhantes ao seguinte:

    opsworks-demo-webserver ======================= * opsworks-demo: ec0fe46314
  5. Você já está pronto para adicionar ou inicializar nós no servidor do Chef Automate. Você pode automatizar a associação de nós seguindo as etapas em Adicione nós automaticamente em AWS OpsWorks for Chef Automate ou adicionar nós, um de cada vez, seguindo as etapas em Adicione nós individualmente.

(Alternativa) Usar o Berkshelf para obter livros de receitas de uma fonte remota

O Berkshelf é uma ferramenta para o gerenciamento de livros de receitas e suas dependências. Se você preferir usar o Berkshelf em vez de Policyfile.rb instalar livros de receitas em armazenamento local, use o procedimento desta seção, e não da seção anterior. Você pode especificar quais livros de receitas e versões serão utilizados com o servidor do Chef e fazer o upload deles. O Starter Kit contém um arquivo chamado Berksfile que você pode usar para listar os livros de receitas.

  1. Para começar, adicione o livro de receitas chef-client ao Berksfile incluído. O livro de receitas chef-client configura o software do agente cliente do Chef Intra em cada nó conectado ao servidor do Chef Automate. Para saber mais sobre esse livro de receitas, consulte Chef Client Cookbook no Chef Supermarket.

  2. Usando um editor de texto, anexe outro livro de receitas ao Berksfile que instala um aplicativo de servidor Web; por exemplo, o livro de receitas apache2, que instala o servidor Web Apache. Seu Berksfile deve se parecer com o seguinte.

    source 'https://supermarket.chef.io' cookbook 'chef-client' cookbook 'apache2'
  3. Faça o download e a instalação dos livros de receitas em seu computador local.

    berks install
  4. Carregue o livro de receitas no servidor do Chef.

    No Linux, execute o seguinte.

    SSL_CERT_FILE='.chef/ca_certs/opsworks-cm-ca-2020-root.pem' berks upload

    No Windows, execute o seguinte comando do Chef Workstation em uma PowerShell sessão. Antes de executar o comando, certifique-se de definir a política de execução PowerShell comoRemoteSigned. Adicione chef shell-init para disponibilizar os comandos do utilitário Chef Workstation para PowerShell.

    $env:SSL_CERT_FILE="ca_certs\opsworks-cm-ca-2020-root.pem" chef shell-init berks upload Remove-Item Env:\SSL_CERT_FILE
  5. Verifique a instalação do livro de receitas mostrando uma lista de livros de receitas atualmente disponíveis no servidor Chef Automate. Você pode fazer isso executando o seguinte comando knife:

    Você está pronto para adicionar nós para gerenciar com o AWS OpsWorks for Chef Automate servidor.

    knife cookbook list

(Opcional) Configurar knife para trabalhar com um domínio personalizado

Se o servidor Chef Automate utilizar um domínio personalizado, poderá ser necessário adicionar o certificado PEM da CA raiz que assinou a cadeia de certificados do servidor ou o certificado PEM do servidor, se o certificado for autoassinado. ca_certs é um subdiretório em chef/ que contém autoridades de certificação (CAs) que são confiáveis para o utilitário knife do Chef.

Ignore esta seção se não estiver usando um domínio personalizado ou se o certificado personalizado estiver assinado por uma CA raiz que seja confiável para o sistema operacional. Caso contrário, configure o knife para confiar no certificado SSL do servidor Chef Automate, conforme descrito nas etapas a seguir.

  1. Execute o seguinte comando .

    knife ssl check

    Se os resultados forem semelhantes aos seguintes, ignore o restante deste procedimento e vá para Adicionar nós para o servidor do Chef gerenciar.

    Connecting to host my-chef-automate-server.my-corp.com:443 Successfully verified certificates from 'my-chef-automate-server.my-corp.com'

    Se receber uma mensagem de erro semelhante à seguinte, vá para a próxima etapa.

    Connecting to host my-chef-automate-server.my-corp.com:443 ERROR: The SSL certificate of my-chef-automate-server.my-corp.com could not be verified. ...
  2. Execute knife ssl fetch para confiar nos certificados do servidor do AWS OpsWorks for Chef Automate . Você também pode copiar manualmente o certificado no formato PEM da CA raiz do servidor no diretório que é o valor de trusted_certs_dir na saída de knife ssl check. Por padrão, esse diretório está em .chef/ca_certs/ no Starter Kit. A saída deve ser semelhante à seguinte:

    WARNING: Certificates from my-chef-automate-server.my-corp.com will be fetched and placed in your trusted_cert directory (/Users/username/starterkit/.chef/../.chef/ca_certs). Knife has no means to verify these are the correct certificates. You should verify the authenticity of these certificates after downloading. Adding certificate for my-chef-automate-server in /Users/users/starterkit/.chef/../.chef/ca_certs/servv-aqtswxu20swzkjgz.crt Adding certificate for MyCorp_Root_CA in /Users/users/starterkit/.chef/../.chef/ca_certs/MyCorp_Root_CA.crt
  3. Execute knife ssl check novamente. A saída deve ser semelhante à seguinte:

    Connecting to host my-chef-automate-server.my-corp.com:443 Successfully verified certificates from 'my-chef-automate-server.my-corp.com'

    Você está pronto para usar o knife com o servidor Chef Automate.